Delphi Can

Orjinalini görmek için tıklayınız: son kayitdaki tarih bilgisini almak
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
arkadaslar son kayitdaki tarih bilgisini asagidaki sekilde aliyorum daha dogru bir yontem varsa paylasirsaniz sevinirim 
saygilar

DMoyunlar.IBQuery1.SQL.Clear;
 DMoyunlar.IBQuery1.SQL.Add('Select MAX(ID) from TBL_KASA' );
 DMoyunlar.IBQuery1.Open;
 id:= DMoyunlar.IBQuery1.Fields[0].AsInteger;

 DMoyunlar.IBQuery1.SQL.Clear;
 DMoyunlar.IBQuery1.SQL.Add('Select * from TBL_KASA WHERE ID='+IntToStr(id));
 DMoyunlar.IBQuery1.Open;
 trh:= DMoyunlar.IBQuery1.fieldbyname('DATE_').value;
(27-12-2022, Saat: 19:31)sadikacar60 Adlı Kullanıcıdan Alıntı: [ -> ]arkadaslar son kayitdaki tarih bilgisini asagidaki sekilde aliyorum daha dogru bir yontem varsa paylasirsaniz sevinirim 
saygilar

DMoyunlar.IBQuery1.SQL.Clear;
 DMoyunlar.IBQuery1.SQL.Add('Select MAX(ID) from TBL_KASA' );
 DMoyunlar.IBQuery1.Open;
 id:= DMoyunlar.IBQuery1.Fields[0].AsInteger;

 DMoyunlar.IBQuery1.SQL.Clear;
 DMoyunlar.IBQuery1.SQL.Add('Select * from TBL_KASA WHERE ID='+IntToStr(id));
 DMoyunlar.IBQuery1.Open;
 trh:= DMoyunlar.IBQuery1.fieldbyname('DATE_').value;

Merhaba , 
Tek sorgu ifadesiyle alabilirsiniz.

 DMoyunlar.IBQuery1.SQL.Clear;
 DMoyunlar.IBQuery1.SQL.Add('Select DATE_ from TBL_KASA WHERE ID=(Select MAX(ID) from TBL_KASA)');
DMoyunlar.IBQuery1.Open;
trh:= DMoyunlar.IBQuery1.fieldbyname('DATE_').value;
sagolun hocam tarih bilgisini string olarak '21.12.2022'  olarak aldim simdi bugunun tarihini '27.12.2022' olarak alip
karsilastirma yapmam lazim
tarih kucuk ise diye islem yapmam lazim bunu nasil yapariz acaba netde arastiriyorum ama pek saglikli bir sey bulamadim.

//tarihleri karsilastir.
trhKyt:=StrToDate(trh);
myDate:=Now;
DecodeDate(myDate, myYear, myMonth, myDay);

If CompareDate(trhKyt, myDate )=-1 Then
     Begin
     end;
(27-12-2022, Saat: 20:02)sadikacar60 Adlı Kullanıcıdan Alıntı: [ -> ]sagolun hocam tarih bilgisini string olarak '21.12.2022'  olarak aldim simdi bugunun tarihini '27.12.2022' olarak alip
karsilastirma yapmam lazim
tarih kucuk ise diye islem yapmam lazim bunu nasil yapariz acaba netde arastiriyorum ama pek saglikli bir sey bulamadim.

//tarihleri karsilastir.
trhKyt:=StrToDate(trh);
myDate:=Now;
DecodeDate(myDate, myYear, myMonth, myDay);

If CompareDate(trhKyt, myDate )=-1 Then
     Begin
     end;

Merhaba , 

Sorgudan dönen tarih alanını direk "TDate" olarak kullanabilirsiniz yani sorgunun altından şöyle devam edebilirsiniz;

DMoyunlar.IBQuery1.SQL.Clear;
 DMoyunlar.IBQuery1.SQL.Add('Select DATE_ from TBL_KASA WHERE ID=(Select MAX(ID) from TBL_KASA)');
DMoyunlar.IBQuery1.Open;
if DMoyunlar.IBQuery1.fieldbyname('DATE_').AsDateTime < Date then
begin
end;

Hangi değerin hangisinden küçüklüğünü kontrol edeceğinizi bilemedim duruma göre if koşulundaki tarafları değiştirebilrisiniz. "Date" size günün tarihi verir.
(27-12-2022, Saat: 19:31)sadikacar60 Adlı Kullanıcıdan Alıntı: [ -> ]arkadaslar son kayitdaki tarih bilgisini asagidaki sekilde aliyorum daha dogru bir yontem varsa paylasirsaniz sevinirim 
saygilar

DMoyunlar.IBQuery1.SQL.Clear;
 DMoyunlar.IBQuery1.SQL.Add('Select MAX(ID) from TBL_KASA' );
 DMoyunlar.IBQuery1.Open;
 id:= DMoyunlar.IBQuery1.Fields[0].AsInteger;

 DMoyunlar.IBQuery1.SQL.Clear;
 DMoyunlar.IBQuery1.SQL.Add('Select * from TBL_KASA WHERE ID='+IntToStr(id));
 DMoyunlar.IBQuery1.Open;
 trh:= DMoyunlar.IBQuery1.fieldbyname('DATE_').value;

"DMoyunlar1.Last" dersen son kayıta ulaşabilirsin.
Aşağıdaki yöntemle de dosyaya tek seferde erişim sağlayarak istediğiniz elde edebilrsiniz.
DMoyunlar.IBQuery1.SQL.Clear;
DMoyunlar.IBQuery1.SQL.Add('Select Top 1 DATE_ from TBL_KASA with(nolock) Order By ID Desc)');
DMoyunlar.IBQuery1.Open;
if DMoyunlar.IBQuery1.fieldbyname('DATE_').AsDateTime < Date then
begin
end;
(29-12-2022, Saat: 14:50)adelphiforumz Adlı Kullanıcıdan Alıntı: [ -> ]Aşağıdaki yöntemle de dosyaya tek seferde erişim sağlayarak istediğiniz elde edebilrsiniz.
DMoyunlar.IBQuery1.SQL.Clear;
DMoyunlar.IBQuery1.SQL.Add('Select Top 1 DATE_ from TBL_KASA with(nolock) Order By ID Desc)');
DMoyunlar.IBQuery1.Open;
if DMoyunlar.IBQuery1.fieldbyname('DATE_').AsDateTime < Date then
begin
end;

hocam orneginiz cok guzel hata aldim problem ne olabilir acaba DATE_ hucresi varchar ve 02.01.2023 seklinde deger kaydediyor
string ile tarih degerini karsilastirdigimiz icin mi hata aliyorum acaba.
saygilar
Kod:
DMoyunlar.IBQuery1.SQL.Clear;
DMoyunlar.IBQuery1.SQL.Add('Select Top 1 convert(date,DATE_,104) DATE_ from TBL_KASA with(nolock) Order By ID Desc)');
DMoyunlar.IBQuery1.Open;
if DMoyunlar.IBQuery1.fieldbyname('DATE_').AsDateTime < Date then
begin
end;
 
Bu şekilde test edebilirmisiniz. Sadece sorgu içine convert(date,DATE_,104) DATE_  bunu ekledim
Veritabanınız Firebird ise
DMoyunlar.IBQuery1.SQL.Clear;
DMoyunlar.IBQuery1.SQL.Add('Select Top 1 cast(DATE_ AS DATE) DATE_ from TBL_KASA with(nolock) Order By ID Desc)');
DMoyunlar.IBQuery1.Open;
if DMoyunlar.IBQuery1.fieldbyname('DATE_').AsDateTime < Date then

veya (denemedim)
DMoyunlar.IBQuery1.SQL.Clear;
DMoyunlar.IBQuery1.SQL.Add('Select Top 1 cast(DATE_ AS DATE)  from TBL_KASA with(nolock) Order By ID Desc)');
DMoyunlar.IBQuery1.Open;
if DMoyunlar.IBQuery1.fieldbyname('DATE_').AsDateTime < Date then


Şöyle deneyiniz...
olmadi ayni hatayi veriyor 
hocam yardimi olabilir diye tablo yu paylasyim

saygilar

CREATE GENERATOR GEN_TBL_KASA_ID;

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)
);
Sayfalar: 1 2