BDE'nin Table bileşenini kullanarak Visual FoxPro'nun .dbf uzantılı bir veritabanından verileri sorguluyorum. Filter butonuna ilk bastığımda bir problem çıkmıyor ancak ikinci kez tekrar verileri filtrelemek için tekrar bastığımda şu hatayı veriyor:
procedure TForm2.Button2Click(Sender: TObject);
var
Tarih1 : String;
Tarih2 : String;
Stake1 : String;
Tarih11: TDateTime;
Tarih21: TDateTime;
begin
Tarih1 := Edit1.Text;
Tarih2 := Edit2.Text;
Stake1 := Edit3.Text;
Tarih11 := StrToDateTime(Tarih1);
Tarih21 := StrToDateTime(Tarih2);
if Tarih11 > Tarih21 then
begin
ShowMessage('From Date can not be bigger than To Date!');
Tarih1 := InputBox('New From Date','Please enter a new from date:','');
Edit1.Text := Tarih1;
end;
with Table1 do
begin
//Active := False;
Close;
TableName := strDosyaYolu + 'transact.dbf';
IndexFiles.Text := strDosyaYolu + 'transact.cdx';
if Stake1 = '' then
Filter := 'DATE>=''' + Tarih1 + ''' AND DATE<=''' + Tarih2 + ''' AND TRANS_TYPE = 1'
else
Filter := 'DATE>=''' + Tarih1 + ''' AND DATE<=''' + Tarih2 + ''' AND TRANS_TYPE = 1 AND AMOUNT < ''' + Stake1 + '''';
Filtered := True;
ReadOnly := True;
Exclusive := False;
//Active := True;
Open;
First;
end;
Button4.Enabled := True;
end;
İlk çalışmada bir sorun yok herşeyi listelettirebiliyorum. Ancak ikinci kez filtrele düğmesine bastığımda yukarıda ekran görüntüsü koyduğum resimdeki aynı hata çıkıyor. Showmessage kullandım with Table1 do begin'e başlayıp close olayından önce duruyor yani close yapamıyor sanırım açık olan tabloyu.
şeklinde garantiye alabilirsin. Ayrıca Table.Close ile Form.Close karışabilir. En garantisi with kullanmadan yazıp dene.
Access Violation genelde olmayan bir nesneye ulaşmaya çalışıldığında oluşur. Delphi ide den Tools -> Debugger Options... -> Language exceptions sekmesindeki "Stop on delphi exceptions" işaretini kaldır
@rsimsek, tablonun exclusive özelliğini true yapınca sorun kalmadı. yardımınız için teşekkürler.
@ikutluay, ilk başta TDBF kullanmıştım. Ancak DATE>= gibi bir filtrelemeye imkan vermediği için BDE'ye geri döndüm. Eğer böyle bir sorgulamanın TDBF ile nasıl yapılacağını biliyorsan yazarsan sevinirim. Teşekkürler.
merhaba..
mydac ile mysql e bağlanıyorum. formda ilk açmada problem yok. ama ikinci açmada access violation hatasıalıyorum. mydac ın exclusive özelliği de yok.
cevabınız ve ilginiz için şimdiden teşekkürler.