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

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
metinkorkmaz
Üye
Mesajlar: 46
Kayıt: 25 May 2005 09:08
Konum: izmir

Mesaj gönderen metinkorkmaz »

Kod:
IBDataSet1.SelectSQL.Add('select * from a1 where sn='+IntTostr(Edit1.Text)+' ');

Bu kodda tip sorunu var. IntToStr parametre olarak int almalıdır, ama edit1.text string yapıdadır.

Dialect 3 sorunu varsa, şunu dene (alan isimlerini çift tırnakla belirt):
IBDataSet1.SelectSQL.Add('select * from a1 a where a."sn"='+deger);
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

bu kodu verilen cevaplar doğrultusunda İBSQl bieleşeniyle bir dene istersen bakalım orda çalışacakmı.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

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

Mesaj gönderen yokname »

Hepsini Tek tek ibsql dede denedim aynı hata tekrarlanıyor ancak

Kod: Tümünü seç

IBsql1.SQL.Add('select * from a1 where sn='+IntTostr(Edit1.Text)+');
yapınca

Kod: Tümünü seç

There is no overloaded version of 'IntToStr' that can be called with these arguments
hatası verdi arkadaşa rezil oldum gibi çünkü bu alternatiflerden hiç birisi işe yaramadı.
Arkadaşım sql string alandır orada direk içinde integer karşılaştırma yapamazsın demişti.
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ç

('select * from a1 where sn=''+IntTostr(Edit1.Text)+');
bu kodda sq

Kod: Tümünü seç

l parse error
verdi[/code]
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Kod: Tümünü seç

('select * from a1 where sn='''+IntTostr(Edit1.Text)+'''');
Bu şekilde nasıl olur bilmiyorum ama denemediysen dene.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

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

Mesaj gönderen yokname »

Maalesef yine

Kod: Tümünü seç

There is no overloaded version of 'IntToStr' that can be called with these arguments
verdi
en yakını

Kod: Tümünü seç

('select * from a1 where sn=''+IntTostr(Edit1.Text)+');
bana göre ama buda çalışmadı peki bu mümkünmüdür arkadaşlar bu konuda fikirleriniz nelerdir...
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

valla bugün çuvalladık :) .kafam karışık mı nedir :)

Kod: Tümünü seç

IBsql1.SQL.Add('select * from a1 where sn='+Edit1.Text+' ');
böyle çalışıyor fakat Edit1.Text e integer değer girmen gerekir

iyi günler...
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Kod: Tümünü seç

('select * from a1 where sn=''+inttostr(strtoint(Edit1.Text))+');
bu şekilde olur gibi ama dene bakalım ne olcak.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

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

Mesaj gönderen yokname »

evet

Kod: Tümünü seç

 ('select * from a1 where sn='+Edit1.Text+' ');
bu şekilde oluyor ama benim yapmak istediğim

Kod: Tümünü seç

('select * from a1 where sn=''+IntTostr(Edit1.Text)+');
şeklindeydi yani direk sql in içinden sayıyı stringe çevirmeden yapmaktı ama bu kadar yoldan sonra olmuyorsa demekki olmuyor. Arkadaşada rezil oldum :oops:
Öğrenmenin yaşı yoktur :lol:
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

yokname yazdı:

Kod: Tümünü seç

('select * from a1 where sn=''+IntTostr(Edit1.Text)+');
şeklindeydi yani direk sql in içinden sayıyı stringe çevirmeden yapmaktı ama
Olayın başını kaçırdım ancak burada bir hata var. Edit1.Text string tipindedir. Sen IntToStr ile string'e integer muamelesi yapmak istemişsin. Yanlış bir kullanım. Böyle bir çevirme işlemine gerek yok.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

Kod: Tümünü seç

var
  s1,s2,s:String;
    begin
      s1:=Edit1.Text;
      s2:=Edit2.text;

      dgirissrgibquery.close;

  with dgirissrgibquery.sql do
    begin
      Clear;
      Add('Select*From DEMIRBAS_GIRIS');
  if s1<>'' then s:='(DEMIRBAS_NO LIKE '''+s1+''')';
  if s2<>'' then
    begin
  if s<>'' then s:=s+' AND ';
      s:=s+'(GIRIS_ZAMANI = '''+s2+''')'
    end;
  if s<>'' then add ('WHERE '+s);
    add('ORDER BY DEMIRBAS_NO');
    end;
      dgirissrgibquery.Open;
      dgirissrgibquery.Last;

   if dgirissrgibquery.IsEmpty then
     ShowMessage('Sorguladığınız Kayıt Bulunamadı!!!');
burada demirbaş no integer bir alan ve edit içine girilen sayı ile aramayı yapıyor bi sorun çıkmıyor sizde böyle bir sorunun çıkması baya garip bi olay ama muhakkak çözümü vardır veya bi yerde yanlış bir şeyler

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 »

Böyle oluyor çünkü siz string değer karşılaştırıyorsunuz.Ama s1 değişkenini integer yapıp sayısal bir alanla karşılaştıramıyoruz.Bunun sebebi de bence sql.text in string bir değer olması string değer içinde sayısal bir değer karşılaştırmaya çalıştım ben.
Cevapla