ekleyince kod işlevini yerini getirmiyor. Getirmediğinden kastım boş alanlar. Bu alanların olduğu verileri es geçiyor. Yani mutlaka tüm verilerin alanlara girilmiş olması gerekmekte. Malum kullanıcı veriyi girmemiş olabiliyor. (Bu arada edit 2 ve3 ün OnChange'inde Edit1Change gösterilmiştir)
Kolay gelsin...
Lütfen Delphi İle ilgili özel mesaj çekmeyin bir kişinin okuyup cevap vermesi var birde 750 kişinin.
Eonaran Özel Mesajında
Slm
bahsettiğiniz url leri araştırdım ama istediğimi yapamadım yanlız fahrettin beyin yazdığı bir şey vardı onu incelemek istedim anlamadığı tek şey vardı
Kod:
with Query1 do
begin
SQL.Clear;
DatabaseName:='DBEMLAX';
EKLENECEK_SQL:='';
if not (Edit1.Text='') then
EKLENECEK_SQL:=EKLENECEK_SQL+' and EMLAK_KODU='+Edit1.Text;
if not (Edit2.Text='') then
EKLENECEK_SQL:=EKLENECEK_SQL+' and EMLAX_EMLAK_KAYIT_NO='+Edit2.Text;
EKLENECEK_SQL:=Copy(EKLENECEK_SQL,5, Length(EKLENECEK_SQL));// cümle içindeki ilk and ayiklaniyor....
SQL.Add('select * ');
SQL.Add('from EMLAK E');
if EKLENECEK_SQL<>'' then
SQL.Add('where '+EKLENECEK_SQL);
SQL.Add('Order by EMLAK_KODU');
Close;
Prepare;
Open;
end;
EKLENECEK SQL burada ne anlam ifade etmekte anlamış değilim ilgilenirseniz teşekkürler
EKLENECEK SQL bir değişken SQL içindeki koşulları belirlemeye yarıyor.
Aslında bizde de biraz hata var tabi. Kodu tam gondermeyince o kodu yazmayanlarin okuması daha da zor olabiliyor. Sıradan bir lokal degisken oldugu belli olmayinca belki de benim projeme ozel bir sey de olabilir fikri insanin aklina geliyordur....
Evet Hüseyin bey'in de dedigi gibi EKLENECEK_SQL siradan bir degisken SQL cümlesinin Where ksımına girilen veya girilemeyen verilere gore farkli kosullar yazabilmek icin kullandıgım bir degisken...
procedure TForm3.Edit1Change(Sender: TObject);
var EKLENECEK_SQL : string;
begin
with Query1 do
begin
Query1.SQL.Clear;
//DatabaseName:='ev';
EKLENECEK_SQL:='';
if not (Edit1.Text='') then
EKLENECEK_SQL:=EKLENECEK_SQL+' and kiris='+Edit1.Text;
if not (Edit2.Text='') then
EKLENECEK_SQL:=EKLENECEK_SQL+' and kapı='+Edit2.Text;
EKLENECEK_SQL:=Copy(EKLENECEK_SQL,5, Length(EKLENECEK_SQL));
Query1.SQL.Add('select * ');
Query1.SQL.Add('from giris');
if EKLENECEK_SQL<>'' then
Query1.SQL.Add('where '+EKLENECEK_SQL);
Query1.SQL.Add('Order by kiris');
Query1.Close;
Query1.Prepare;
Query1.Open;
end;
end;
end.
Fakat edit 1'e giriş yaptığım anda "Type Mismatch in expression" hatası veriyor
Şu an görebildiğim tek şey kapı alanınızı doğru yazıp yazmadığınız üzerindeki düşüncemdir. Acaba kullanmış olduğunuz (ı) türkçe karakteri i olabailirmi?
Kolay Gelsin...
En son husonet tarafından 14 Oca 2004 02:03 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
- Dikkat ederseniz Whree'den sonra ilk eklenecek unsur AND olacaktır. Bu bir hatalı durumdur.
- Önce bir eşitlik olur, sonra AND ile yeni bir eşitlik takip eder.
- İlk boş olmayan edit, Where ile eklenir. Sonrası AND ile takip eder. Bizim için SQL sorgu parametrelerini buraya yazarsanız vaktim şimdilik uygun, çözümlemesini yaparız.
Run time aninda SQL cümlesi olusturmanın en zor yanı yapılan hatayı verilen mesajdan kolayca cikaramamaktır. Bunun icin de en guzel onlem Query1.Open satirindan hemen once Showmessage(Query1.SQL.Text) yazmaktır boylece kod ile olusturmaya calistiginiz SQL cümlesinin adam gibi bir kod olup olmadıgını gormus olursunuz. Sizin kodda gordugum hata ise
EKLENECEK_SQL:=EKLENECEK_SQL+' and kiris='+Edit1.Text;
EKLENECEK_SQL:=EKLENECEK_SQL+' and kapı='+Edit2.Text;
satirlarinda ve diger eger Edit1'in ve Edit2'nin icerigi rakam ise sorun yok ama eger string ise SQL cumlesini show mesaj ile gosterdiginizde siz de goreceksiniz ki mesela soyle yanlis bir kod olusacak
Select * from giris where kiris=Kapi
Bunu onlemek icin kodu
EKLENECEK_SQL:=EKLENECEK_SQL+' and kiris='+#39+Edit1.Text+#39;
sekline getirirseniz... o zaman sabit kelimenin tirnak icinde oldugunu goreceksiniz....
Select * from giris where kiris='Kapi'
SQL cümlesine calistirmadan once bakmak bu tur hataları bulmada cok onemlidir. Bunu denerseniz sorunların cogunu bu sekilde gorebilirsiniz.. calismadan once gosterdiginiz cumleyi gerekirse SQL Explorer'dan filan calistirarak SQL cumlesine has sorunlari cozer geri kalan olusturma ile ilgili sorunlar icin de kodunuzun ilgili kısmını incelersiniz...