edit ile sorgulama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ccash53
Üye
Mesajlar: 7
Kayıt: 26 Nis 2011 08:40

edit ile sorgulama

Mesaj gönderen ccash53 »

merhaba, arkadaşlar

queryde 2-3 tabloyu birleştirerek dbgrid de gösteriyorum fakat
arama editinde girilen kodu arattırırken aşaüıdaki kodu kullanıyorum.

with ADOQuery1 do
begin

close;

ADOQuery1.SQL.Add(' where bar_kodu like '+#39+#37+edit1.Text+#37+#39);
Open;

ilk aramayı doğru yapıyor fakat. 2. aramaya izin vermiyor. hata alıyorum
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: edit ile sorgulama

Mesaj gönderen ertank »

Merhaba,

Sürekli ekleme yaptığınız için hata alıyorsunuz. İkinci çalıştırmada sorgu aşağıdaki örnekteki gibi iki tane "where" içeriyor olacak. Bu da hatalı SQL olmuş olur.

Kod: Tümünü seç

select * from abc
where bar_kodu like '%123%'
where bar_kodu like '%456%'
Sorgunuzu form üzerinde tanımlarken kaçıncı satırın "where" ifadesi içereceğini bilirseniz (örneğe dikkat edin. En son satır var ve boş)

Kod: Tümünü seç

select * from abc
where 1=1

kodunuzu aşağıdaki gibi yazabilirsiniz.

Kod: Tümünü seç

  ADOQuery1.SQL[2] := 'and bar_kodu like ' +#39+#37+edit1.Text+#37+#39;
ADOQuery1.SQL sıfır tabanlı indekse sahiptir. Yukarıdaki örnek SQL de 3 numaralı satır boş bırakıldığı için ADOQuery1.SQL[2] kullandık.

Sorgulama yapmayacağınız/kaldıracağınız zaman basitçe aşağıdaki şekilde atama yapabilirsiniz.

Kod: Tümünü seç

  ADOQuery1.SQL[2] := EmptyStr;
ccash53
Üye
Mesajlar: 7
Kayıt: 26 Nis 2011 08:40

Re: edit ile sorgulama

Mesaj gönderen ccash53 »

ertank yazdı: 15 Ağu 2022 06:02 Merhaba,

Sürekli ekleme yaptığınız için hata alıyorsunuz. İkinci çalıştırmada sorgu aşağıdaki örnekteki gibi iki tane "where" içeriyor olacak. Bu da hatalı SQL olmuş olur.

Kod: Tümünü seç

select * from abc
where bar_kodu like '%123%'
where bar_kodu like '%456%'
Sorgunuzu form üzerinde tanımlarken kaçıncı satırın "where" ifadesi içereceğini bilirseniz (örneğe dikkat edin. En son satır var ve boş)

Kod: Tümünü seç

select * from abc
where 1=1

kodunuzu aşağıdaki gibi yazabilirsiniz.

Kod: Tümünü seç

  ADOQuery1.SQL[2] := 'and bar_kodu like ' +#39+#37+edit1.Text+#37+#39;
ADOQuery1.SQL sıfır tabanlı indekse sahiptir. Yukarıdaki örnek SQL de 3 numaralı satır boş bırakıldığı için ADOQuery1.SQL[2] kullandık.

Sorgulama yapmayacağınız/kaldıracağınız zaman basitçe aşağıdaki şekilde atama yapabilirsiniz.

Kod: Tümünü seç

  ADOQuery1.SQL[2] := EmptyStr;


sanırım sql kodda hata yapıyorum. 2. ye bazende sfiyat_fiyati alanını bulamıyor
bi bakabilirmsnz

Kod: Tümünü seç

SELECT bar_stokkodu As "Stok Kodu",sto_isim As "İsim",  sfiyat_fiyati As "1. Satış Fiyatı", bar_kodu As "Barkodu"  FROM BARKOD_TANIMLARI
inner join stoklar on (bar_stokkodu = dbo.STOKLAR.sto_kod) AND (bar_birimpntr = 1)
inner join STOK_SATIS_FIYAT_LISTELERI on (Stoklar.sto_kod=sfiyat_stokkod) and (sfiyat_listesirano = 1)
 
Cevapla