Sql'de değer karşılaştırma

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Sql'de değer karşılaştırma

Mesaj gönderen yokname »

Kod: Tümünü seç

deger:='ad='+#39+edit1.text+#39;
Arkadaşlar bu kod table da çalışıyor ama query de çalışmıyor benim asıl yapmak istediğim sayısal bir alanı karşılaştırmak bo konuda bana yardımcı olursanız çok sevinirim
Yapmak İstediğim

Kod: Tümünü seç

selectsql.add('select * from KITAPLAR where KITAPKODU='deger'');


Başka çözüm yollarıda olabilir
Şimdiden Çok teşekkürler
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Eğer nümerik bir alana göre sorgulama yapacaksanız:

Kod: Tümünü seç

selectsql.add('select * from KITAPLAR where KITAPKODU='+deger);
string bir alana göreyse tırnakları yazmanız lazım:

Kod: Tümünü seç

selectsql.add('select * from KITAPLAR where KITAPADI='''+deger+'''');
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Sağolasın Kardeş ama editteki değeri integere çeviremedim

Kod: Tümünü seç

s:=KITAPKODU=+strtofloat(edit1.text);
çalışmadı
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Peki bu mantığın başka bir yolu varmıdır arkadaşlar
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

yokname yazdı:Sağolasın Kardeş ama editteki değeri integere çeviremedim

Kod: Tümünü seç

s:=KITAPKODU=+strtofloat(edit1.text);
çalışmadı
burada s ve KITAPKODU değişkeninin tipi nedir? Sayısal bir alan değilse hata verir. Ayrıca + dan önce de bir = işareti var :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

s:real
kitapkodu:double precission

ikiside sayısal değer hocam string değer ararken '=' işareti kitapkodu alanına edit1 i atıyor olması lazım (yanlış biliyorsam affola :) ) ama sayısal alanlarda nasıl oluyor bilemiyorum
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

+ dan önceki = işaretine dikkat ettin mi :?: Yani programda da bu şekilde mi?
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Table da filtrelerken boyle yapmıştım ama query de farklımı bilmiyorum table da

Kod: Tümünü seç

deger:='ad='+#39+edit1.text+#39;
değişkeni yazıp karşılaştrınca yapmıştı query de istediğim string ve sayısal alanları kullanıcıdan bilgi alıp karşılaştırmak
mesela queryde

Kod: Tümünü seç

selectsql.add('select * from KITAPLAR where KITAPADI='#39'+S+'#39'');
yaptım ama çalışmadı
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

yokname yazdı:

Kod: Tümünü seç

selectsql.add('select * from KITAPLAR where KITAPADI='#39'+S+'#39'');
yaptım ama çalışmadı
Son tırnak fazla gibi..?
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Parametre kullanarak yapmak daha kolay gibi bu tür problemlerde.

Kod: Tümünü seç

selectsql.add('select * from KITAPLAR where KITAPKODU=:deger');
selectsql.parameters.parambyname('deger').value:=edit1.text;
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Kod: Tümünü seç

SelectSQL.Add('select * from maldetay where maldetay.musno');
SelectSQL.add('=(select musteriana.musno from musteriana where ad=:deger)');
ParamByName('deger').value:=edit1.text;
Yardımlarınız için teşekkürler arkadaşlar böyle hallettim.
Allah azı olsun. İyi çalışmalar
Cevapla