Query ile arama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Query ile arama

Mesaj gönderen Lord_Ares »

merhaba

veritabanındaki alan adları
STOKADI:string;
SIRANO:integer;

formumda bir edit ve radiogrup var, radiogrup ta ilki seçili ise adına göre, ikincisi seçili ise sıranoya göre aratmak istiyorum.
SORUN: integer bir alanda edite girilen bilgiyi nasıl ararım.strtoint ile edite girileni integer a değiştirmeyi denedim olmadı nerde hata yapıyorum.

alttaki satırı nasıl yazmalıyım
DATAMOD.QBUL.SQL.Add('WHERE (SIRANO) like "%'+strtoint(ARAEDIT.Text)+'%"');

kodum şu şekilde:

if BUL.SEC.ItemIndex=0 then begin
DATAMOD.QBUL.Close;
DATAMOD.QBUL.SQL.Clear;
DATAMOD.QBUL.SQL.Add('SELECT ADI,SIRANO FROM DATA');
DATAMOD.QBUL.SQL.Add('WHERE (SIRANO) like "%'+(ARAEDIT.Text)+'%"');
DATAMOD.QBUL.ExecSQL;
DATAMOD.QBUL.Open;
ARAEDIT.Text:='';
end;


if BUL.SEC.ItemIndex=1 then begin
DATAMOD.QBUL.Close;
DATAMOD.QBUL.SQL.Clear;
DATAMOD.QBUL.SQL.Add('SELECT ADI,SIRANO FROM DATA');
DATAMOD.QBUL.SQL.Add('WHERE Lower(ADI) like "%'+LowerCase(ARAEDIT.Text)+'%"');
DATAMOD.QBUL.ExecSQL;
DATAMOD.QBUL.Open;
ARAEDIT.Text:='';
end;
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: Query ile arama

Mesaj gönderen akdatilla »

sıra numarası sayısal bir veri. Sayısal verileri kullanırken tırnak ve like ifadesini kullanmayın.
....SIRANO='+edit1.text);....
şeklinde çözebilirsiniz.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Query ile arama

Mesaj gönderen Lord_Ares »

iyide sorun şurada sırano integer bir alan , edit1.text string geldği için accses vialation hatası alıyorum o yuzden donuşturme nasıl yapacağım onu bilmiyorum
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Re: Query ile arama

Mesaj gönderen barutali »

if BUL.SEC.ItemIndex=0 then begin
DATAMOD.QBUL.Close;
DATAMOD.QBUL.SQL.Clear;
DATAMOD.QBUL.SQL.Add('SELECT ADI,SIRANO FROM DATA');
DATAMOD.QBUL.SQL.Add('WHERE SIRANO like %:P%');
DATAMOD.QBUL.parameters.parambyname('P').Value := ARAEDIT.Text;
DATAMOD.QBUL.ExecSQL;
DATAMOD.QBUL.Open;
ARAEDIT.Text:='';
amatör küme programcı :D
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Query ile arama

Mesaj gönderen unicorn64 »

Lord_Ares yazdı:iyide sorun şurada sırano integer bir alan , edit1.text string geldği için accses vialation hatası alıyorum o yuzden donuşturme nasıl yapacağım onu bilmiyorum
access violation hatası tip uyumsuzluğunda değil, henüz oluşturulmamış bir nesneye erişmeye çalışıldığında alınan hatadır.
ayrıca TAdoQuery nin SQL property si Tstrings türünden olup Add metodu da parametre olarak string türünden değer alır. yani tablonuzdaki alanların tipi ne olursa olsun, SQL.Add('') metoduna parametre olarak string değer vermeniz gerekir....
dolayısıyla

Kod: Tümünü seç

DATAMOD.QBUL.SQL.Add('WHERE (SIRANO) like "%'+strtoint(ARAEDIT.Text)+'%"');

gibi bir kullanım hem gereksiz hem de hatalıdır...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Cevapla