Kod: Tümünü seç
StokKart
---------
ID
StokAd
UyarGun
Tarihler
--------
ID
RefID
Tarih
kayıt girişinde table kullanıyorum. her şey normal.
Fakat Raporlarda (QReport) Query kullanıyorum ve son kullanma tarihi yaklaşanlar raporunu almak istediğimde ;
"Lock file has grown too large" hatasını veriyor. Daha önce hata vermiyordu. kodlar hiç değişmediği halde sonradan bu hatayı vermeye başladı. Raporda ise bütün kayıtları getiriyor.
rapor al dediğimde şu kodlar çalışıyor :
Kod: Tümünü seç
With Data.qryYaklasan Do
Begin
Active:=False;
SQL.Clear;
SQL.Add('SELECT Stokkart.ID, Stokkart.StokAd, Stokkart.UyarGun, Tarihler.Tarih');
SQL.Add('FROM "StokKart.db" Stokkart');
SQL.Add(' INNER JOIN "Tarihler.db" Tarihler');
SQL.Add(' ON (Stokkart.ID = Tarihler.RefID)');
SQL.Add('WHERE (Tarihler.Tarih > '+#39+DateToStr(Date)+#39+')');
SQL.Add('ORDER BY Stokkart.ID,Tarihler.Tarih');
Active:=True;
Filtered:=True;
First;
While Not Eof Do
Begin
Next;
End;
First;
End;
frmQrYaklasan.QRLabelTitle.Caption:='Son Kullanma Tarihi Yaklaşan Ürünler ('+DateToStr(Date)+' '+TimeToStr(Time)+')';
frmQrYaklasan.Qr.OnPreview:=frmPreview.CustomPreview;
frmPreview.QrPreview.ZoomToWidth;
frmPreview.QrPreview.Update;
frmQrYaklasan.Qr.Preview;
if Trim(DataSet.FieldByName('ID').AsString)<>'' Then
Accept:=Data.TarihiYaklasan(DataSet.FieldByName('ID').AsString)
burada TarihiYaklasan boolean foknksiyonunun kodu ise ;
Kod: Tümünü seç
function TData.TarihiYaklasan(ID:String) : Boolean;
var
Sonuc : Boolean;
Begin
With Query Do
Begin
Active:=False;
DatabaseName:=DbName;
SQL.Clear;
SQL.Add('SELECT Stokkart.ID, Stokkart.StokAd, Stokkart.UyarGun, Tarihler.Tarih');
SQL.Add('FROM "StokKart.db" Stokkart');
SQL.Add(' INNER JOIN "Tarihler.db" Tarihler');
SQL.Add(' ON (Stokkart.ID = Tarihler.RefID)');
SQL.Add('WHERE (ID='+ID+') AND (Tarihler.Tarih) > '+#39+DateToStr(Date)+#39);
SQL.Add('ORDER BY Stokkart.ID,Tarihler.Tarih');
Active:=True;
Sonuc:=False;
While Not Eof Do
Begin
if FieldByName('Tarih').Text<>'' Then
Sonuc:=(FieldByName('Tarih').Value-FieldByName('UyarGun').Value) <= Date;
if Sonuc Then Break;
Next;
End;
Result:=Sonuc;
Active:=False;
End;
End;