en son kayittan geriye geriye dogru dunun tarihine kadar olan PARA alanidaki kayitlarin toplamini almam lazim.
baya zamandir delphiye elimi surmedim biraz denedim ama kafa basmadi yardimci olursaniz sevinirim saygilar.
sql:='SELECT SUM (PARA),SUM(OYADET) FROM TBL_KASA WHERE ((DATE_='''+tarih+''' AND CAST(substring(DATE_TIME from 1 for 2) AS INTEGER)>=8) OR (DATE_='''+DateToStr(StrToDate(tarih)+1)+''' AND CAST(substring(DATE_TIME from 1 for 2) AS INTEGER)<=7)) and not PARA=0 ';
Yapmak istediğinizi daha detaylı ifade etmeniz mümkün mü? "Dünün tarihine kadar" ifadesini ben bugün olarak algılıyorum. Doğru mudur?
Tablo "create table" bilgisini paylaşabilir misiniz? PARA NULL değer alabiliyor mu bildirmemişsiniz. Keza OYADET için de benzer durum söz konusu.
Kullandığınız FirebirdSQL sürümü nedir?
Filtrelemeye çalıştığınız 7 ve 8 değerleri ay olarak mı filtrelemek istiyorsunuz? Gün olarak mı?
ID TARIH ---- PARA
1. 20.11.2022 50
2. 20.11.2022 60
3. 20.11.2022 20
4. 21.11.2022 10
5. 21.11.2022 40
6. 15.02.2019 30
7. 21.11.2022 70
burda id sirayla kaydediyor ama pc tarihini degistirip araya farkli tarihli kayit ekleniyor.
tarihe gore 21 kasim raporunu cikardigimda hasilat 120 cikiyor oysa hasilat 150 olmali tarih degistirip araya kacak oyun acilmis
hasilatin kontrolu icin yedek bir sorgu yapmak istiyorum burda
ben 7 inci kayittan geriye dogru dunun tarihi yani 20 sine gelene kadar para hucresini toplarsam gercek hasilata ulasabilirim.
kayitlari sondan dongu ile cekmeyi deneyecegim bakalim becerebilecekmiyim
saygilar
Query.SQL.Text := 'SELECT SUM (PARA), SUM(OYADET) FROM TBL_KASA WHERE DATE_=:ADATE ORDER BY DATE DESC';
Query.Params[0].AsDateTime := DateTimePicker1.Date;
Qoery.Open();
CREATE TABLE TBL_KASA (
ID INTEGER NOT NULL,
BID VARCHAR(20),
DATE_ VARCHAR(50),
LANE VARCHAR(10),
OYADET INTEGER,
PARA INTEGER,
PTUR VARCHAR(100) DEFAULT 0,
DATE_TIME VARCHAR(8),
NOTT VARCHAR(250),
USER1 VARCHAR(20)
);
tablo bu sekilde ama PARA ID VE TARIH_ HUCRELERINI KULLANARAK RAPOR OLUSTURMAYA CALISIYORUM.
BEN en son id alip geriye dogru dunun tarihine kadar gitmeyi deneyecegim
saygilar
Bu şekilde işiniz biraz zor.
DATE_ kolonunu TIMESTAMP yapmış olmalıydınız. Sıralamayı sizin için veritabanı yapardı.
1- DATE_ kolonu verilerini nasıl kayıt ediyorsunuz? gg.yy.yyyy şeklinde mi? Örnek veritabanı içinden ham tarih bilgisi paylaşabilir misiniz?
2- Uygulama Türkçe işletim sistemi ile mi çalışıyor?
3- WIN1254 karakter kod sayfasını bağlantı ayarlarında parametre olarak kullanıyor musunuz?
Bir ihtimal veritabanına DATE_ kolonunu TIMESTAMP veya DATE veri türüne çevirmesini (CAST) sağlayarak yine sıralamayı veritabanına yaptırmak mümkün olabilir.
Date kolonunu 21.11.2022 seklinde string olarak kullaniyorum. Pc tarihide o sekilde ayarli turkce isletim ile calisiyor. Win1254 tablo olustururken tanimlaniyor otomatik.
Bu kod gunde 1 kere kullanilacak zaten ciddi bir hataya neden olmazsa boyle kalsin