sorun

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
eonaran
Üye
Mesajlar: 8
Kayıt: 14 Oca 2004 09:54

sorun

Mesaj gönderen eonaran »

Kod: Tümünü seç

procedure TForm1.Edit1Change(Sender: TObject);
begin
  Q.Close;
  Q.Params[0].AsString:='%'+Edit1.Text+'%';
  Q.Params[1].AsString:='%'+Edit2.Text+'%';
  Q.Params[2].AsString:='%'+Edit3.Text+'%';
  Q.Open;
end;

end.
Selamlar.
yukarıdaki koda ;

Kod: Tümünü seç

 
Q.Params[3].AsString:='%'+Edit4.Text+'%';

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...
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

onceki mesajlarda bu bahis etraflıca anlatılmıstı
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Hatırlatma Gökmen Hocadan Url benden.

1-)viewtopic.php?t=1298&highlight=
2-)viewtopic.php?t=1318

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

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.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

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...

Kolay gelsin....
eonaran
Üye
Mesajlar: 8
Kayıt: 14 Oca 2004 09:54

Mesaj gönderen eonaran »

fahrettin bey şu an sizin gönderdiğiniz kodu derliyorum ve son hali bu

Kod: Tümünü seç

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
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Çift tırnakların içini kontrol et büyük bir ihtimalle boşluk bırakmışsındır.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
eonaran
Üye
Mesajlar: 8
Kayıt: 14 Oca 2004 09:54

Mesaj gönderen eonaran »

Dediğinizi yaptım, bir yerde vardı o hata ama bu kez
Invalid Use of keyword
Token=2
Order
Line Number:3
hatası verdi
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Change Eventine yazmanız pek mantıklı değil istiyorsanız exit eventine veya bir buttonun click eventine yazmayı deneyiniz.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
eonaran
Üye
Mesajlar: 8
Kayıt: 14 Oca 2004 09:54

Mesaj gönderen eonaran »

exit eventında da ve buttonun click eventında da aynı sorun oluştu..
üzerinde uğraşıyorum ama hala sonuş yok
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Ş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.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
eonaran
Üye
Mesajlar: 8
Kayıt: 14 Oca 2004 09:54

Mesaj gönderen eonaran »

lanet olsun ya uğraşmayacağım..
sağolun teşekkürler
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@eonaran kodu yanlış çözümlemişsiniz.

- 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.
Resim
Resim ....Resim
eonaran
Üye
Mesajlar: 8
Kayıt: 14 Oca 2004 09:54

Mesaj gönderen eonaran »

kafam karıştı
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

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...

Kolay gelsin....
Cevapla