opendialog sql sorgusunu bozuyor.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ertline
Üye
Mesajlar: 137
Kayıt: 23 Nis 2005 09:15
Konum: Bartın
İletişim:

opendialog sql sorgusunu bozuyor.

Mesaj gönderen ertline »

Merhaba Arkadaşlar,
döküman yönetimi programı hazırlıyorum,
cari kartlara ve faturalara dosya eklemek( pdf, jpg..) istiyorum.

işlemde hata oluşan durum şu;

cari hesaplar formunu açıyorum ve filtre ile hangi hesabı istediğimi sorgu ile listeliyorum.
sonra open dialog ile ilgili cari hesaba dosya yolunu seçerek kaydediyorum. Buraya kadar sorun yok.
bu işlemden sonra bütün formlardaki listele butonlarında bulunan kodları hiç yokmuş gibi davranıyor ve işlem yapımıyor. Ancak programı kapatıp açınca normale dönüyor.

datasetleri kapatıp açıyorum olmadı, çözüm olarak başka birşey de aklıma gelmiyor.

KODLAR AŞAĞIDAKİ GİBİ :

open dialog kodu

if (form1.ADODataSet3.IsEmpty) then begin
OpenDialog1.Title :='Dosya Seçiniz';
OpenDialog1.Filter:='Evrak Seçiniz (*.pdf)|*.pdf|(*.jpg)|*.jpg|(*.jpeg)|*.jpeg)';
OpenDialog1.FilterIndex :=1;
if OpenDialog1.Execute then begin
FORM1.adodataset3.Append;
form1.ADODataSet3DOC_LOGREF.asinteger:=form1.ad_clcardLOGICALREF.asinteger;
FORM1.adodataset3DOCUMENT_PATH.AsString:=opendialog1.FileName;
FORM1.ADODataSet3.post;
end;
opendialog1.Free;
end else begin
Showmessage('Ekli Evrak Bulunmaktadır...!!!');
end;



listele içinde bulunan kod
procedure TForm4.SpeedButton5Click(Sender: TObject);
var
dosya: TextFile ;
yol: string;

dosya2: TextFile ;
dosya1: TextFile ;

frm:string;
dnm:string;

begin




AssignFile(dosya,'Data.PTH');
{$I-}
Reset(dosya);
{$I+}


AssignFile(dosya2,'frm.PTH');
{$I-}
Reset(dosya2);
{$I+}

AssignFile(dosya1,'dnm.PTH');
{$I-}
Reset(dosya1);
{$I+}



if IOResult = 0 then begin
ReadLn(dosya,yol);
CloseFile(dosya);
ReadLn(dosya2,frm);
CloseFile(dosya2);
ReadLn(dosya1,dnm);
CloseFile(dosya1);
Try



FORM1.ad_clcard.Close;
FORM1.ad_clcard.CommandText:=('SELECT CL.LOGICALREF,CL.CODE,CL.DEFINITION_,CL.SPECODE, CL.ADDR1,CL. ADDR2, CL.CITY, CL.TELNRS1, CL.TELNRS2, CL.FAXNR, CL.TAXNR, CL.TAXOFFICE, CL.EMAILADDR,DC.DOCUMENT_PATH FROM LG_'+frm+'_CLCARD CL'
+' LEFT JOIN ERT_'+frm+'_'+dnm+'_DOCUMENT DC ON DC.DOC_LOGREF=CL.LOGICALREF'
+' WHERE CL.CODE like '+#39+'%'+edit1.Text+'%'+#39+' AND CL.DEFINITION_ like '+#39+'%'+edit2.Text+'%'+#39+' AND ACTIVE=0 ORDER BY DEFINITION_ ASC');
FORM1.ad_clcard.open;


form1.ADODataSet3.Close;
FORM1.ADODataSet3.CommandText:=('SELECT *FROM ERT_'+frm+'_'+dnm+'_DOCUMENT WHERE DOC_LOGREF=:LOGICALREF');
form1.ADODataSet3.open;




except

On exception do
raise;
end;
END;

end;




yardımcı olursanız çok sevinirim.

iyi çalışmalar.
"Bilginin Doruğuna Hep Birlikte..."
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: opendialog sql sorgusunu bozuyor.

Mesaj gönderen ertank »

Merhaba,

Sorununuz kod yapınızda. Eğer IOResult sıfırdan farklı olur ise (ki sizin durumunuzda mutlaka öyle olmalı) listele butonu altındaki kod hiçbirşey yapmadan ve mesaj vermeden çıkıyor.

Ayrıca I/O hata bildirimleri kapalı iken her bir I/O işlemi sonrasında IOResult kontrol edilmelidir. Sizin mevcut kodunuzda sadece Reset(dosya1) işleminin sonucu kontrol ediliyor. Hata varsa prosedürden çıkılıyor. dosya, dosya2 için bu kontroller yapılmıyor.

Kodunuzu debug modunda satır satır ilerletir iseniz sorunu daha iyi anlayabilirsiniz.
ertline
Üye
Mesajlar: 137
Kayıt: 23 Nis 2005 09:15
Konum: Bartın
İletişim:

Re: opendialog sql sorgusunu bozuyor.

Mesaj gönderen ertline »

Ertan bey, opendialog işleminin döndüğü butona basmayınca hiç bir sıkıntı çıkarmıyor, sadece opendialog exceute olunca bu durum oluyor.
"Bilginin Doruğuna Hep Birlikte..."
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: opendialog sql sorgusunu bozuyor.

Mesaj gönderen ertank »

Merhaba,

İlgili kodun tamamını paylaşmadığınız için Dosya seçme kısmında bir sorun var mı söylemek zor. Görünrüğü kadarıyla OpenDialog1 bileşenini Free ediyorsunuz. Ancak Create ettiğiniz bir kod gözükmüyor.

Ayrıca FORM1.adodataset3 OnNewRecord(), OnBeforePost(), OnAfterPost() gibi olaylarında bir kod çalışıyor mu bu belli değil. Orada çalışan kod kaynaklı bir sorun da yaşıyor olabilirsiniz.

Bunun dışında ilk söylediğim gibi. IOResult kontrolünü her bir I/O operasyonu sonrasında yapmalısınız. Eğer "Data.PTH", "frm.PTH", "dnm.PTH" dosyaları çalışma dizini içinde yok ise (başka bir kod bu dosyaları siliyor ise) butonu tıkladığınızda hiçbirşey olmayacaktır. Paylaşılan kod için sadece "dnm.PTH" dosyasının olmaması dahi hiçbirşey olmaması için yeterli.
Cevapla