Sql'de sayısal değişkenle alan karşılaştırma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Sql'de sayısal değişkenle alan karşılaştırma

Mesaj gönderen yokname »

Merhaba arkadaşlar

Kod: Tümünü seç

deger:=strtoint(edit1.text);
IBDataSet1.close;
IBDataSet1.SelectSQL.Clear;
IBDataSet1.SelectSQL.Add('select * from a1 where sn=+deger');
IBDataSet1.open;
sn alanı integer bunu edit ten aldığım sayıyı integera çevirerek direk sorgudan karşılaştırmak istiyorum.ama çalışmıyor sorunun nerede olduğunu söylerseniz çok sevinirim.
Teşekkürler...
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Eğer sorgulama yapmak istiyorsan İBSql bileşeni kullan.buradaki hatan yanlış yerde

şu şekilde olcak

Kod: Tümünü seç

deger:=strtoint(edit1.text); 
IBDataSet1.close; 
IBDataSet1.SelectSQL.Clear; 
IBDataSet1.SelectSQL.Add('select * from a1 where sn= '+deger); 
IBDataSet1.open; 

***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

kodu denemeden cevap vermek ayıp olucak ama bir kaç önerim olucak. sn den sonra like kullanmak gerekiyor olabilir, bide

deger:integer;
begin

diyerek edit içindeki değeri integere dönüştürüp parametrede kullanabilirsin.

ama forumda aratırsan benim bu garip cevabımdan pek çok çok iyi cevaplara ulaşabilirsin.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Parametre kullanmadan yapmalıyım.Öyle gerekiyor.

Kod: Tümünü seç

deger:=strtoint(edit1.text); 
IBDataSet1.close;
IBDataSet1.SelectSQL.Clear;
IBDataSet1.SelectSQL.Add('select * from a1 where sn='+deger);
IBDataSet1.open;
böyle yapınca column unknown deger hatası veriyor deger değişkenini kolon olarak alıyor.

deger zaten integer değişken arkadaşlar onu yazmaya gerek duymadım sorun burdan mı kaynaklanıyor acaba
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

burda sorgulama yapmak istiyorsan bence yanlış bileşen seçtin ama iki tabloyu birleştirmek istiyorsan kullan derim.ben ibdataset le tablo sorgulama yapmadım,belki yapanlar vardır.ama ne yapmak istediğini anlatırsan (sorgu sonucu ile) daha iyi olur.kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba;

Kod: Tümünü seç

('select * from a1 where sn='+deger);
SQL cümlende eksik kullanım var.
'+deger+' olarak denermisin aşağıdaki gibi.

Kod: Tümünü seç

deger:=strtoint(edit1.text);
IBDataSet1.close;
IBDataSet1.SelectSQL.Clear;
IBDataSet1.SelectSQL.Add('select * from a1 where sn='+deger+' ');
IBDataSet1.open;
En son Uğur1982 tarafından 03 Haz 2005 11:51 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

parametre kollanmaz isem şöyle yapıyorum,

ibquery kullanıyorum.

Kod: Tümünü seç

('select*from tablom where alanım like '''+edit1.text+'''');
şeklinde ve çalışıyor.

bi fikir vermesi açısından kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Burada yapmak istediğim kayıdın sn alanına gore arama yapmak ibsql daha performanslı çalışır ama benim yaptığım ufak bir örnek sadece paramatreyle yapsam sorun hallolacak ama bu sefer boyle yapmam lazım.
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ç

sn='+deger+'

Şeklinde yapınca incompatible types hatası verdi.
Tekrra söylüyorum yapmak istediğim direk sayısal alanı karşılaştırmak stringe çevirmeden ve parametre kullanmadan iş arkadaşım bunun mümkün olmadığını iddia ediyor
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

..............sn='''+strtoint(edit1.text)+'''');

şeklinde deneseniz diyorum int den değişimi sql içinde yapsanız

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

şöle dene hiç bir şekilde çevirim yapmadan

Kod: Tümünü seç

('select*from tablom where alanım= '''+edit1.text+''''); 
bu SQL normalde textine bakarsan

Kod: Tümünü seç

select * from where alanın = 'edit1.text teki içerik' 
olması lazım..bu şeklde göre tırnak ları ayarlarsın kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

'sn' bu alan integer bir alan ise

Kod: Tümünü seç

'+IntTostr(Edit1.Text)+'
direk olarak kullanabilirsin
En son Uğur1982 tarafından 03 Haz 2005 11:59 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
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ç

IBDataSet1.SelectSQL.Add('select * from a1 where sn='''+strtoint(edit1.text)+'''');
incompatible types hatası verdi arkadaşım.tırnaklarda sorun göremedim ama onlardan kaynaklanabilirmi...
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

Kod: Tümünü seç

IBDataSet1.SelectSQL.Add('select * from a1 where sn='+IntTostr(Edit1.Text)+' ');
bu kod çalışması lazım.tabii dialect lerden de farkediyor,yaşadım.
SQL de tırnaklarda farkediyor
Dialect 1 de

Kod: Tümünü seç

'+Edit1.Text+'
çalışan kod
Dialect 3 de

Kod: Tümünü seç

'''+Edit1.Text+'''
olarak çalıştırdım.

iyi günler
metinkorkmaz
Üye
Mesajlar: 46
Kayıt: 25 May 2005 09:08
Konum: izmir

Mesaj gönderen metinkorkmaz »

Kullanılan alan int tipindeyse fazladan tırnaklar kullanman anlamlı degil.
Birde aşagıdaki şekilde kullan, ayrıca sn kolonun a1 tablosunda olup olmadıgını kontrol et:

IBDataSet1.SelectSQL.Add('select * from a1 a where a.sn='+deger);
Cevapla