Bu sql kodlarının neresinde hata var?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mhizar
Üye
Mesajlar: 78
Kayıt: 30 May 2005 11:06

Bu sql kodlarının neresinde hata var?

Mesaj gönderen mhizar »

Aşağıdaki SQL ifadeleri hiçbir sonuç döndürmüyor.Acaba nerede hata yapıyorum.Kafayı yemek üzereyim.Forumda arama yaptım.Tüm SQL örneklerini çıkardım.Hepsindede bunlar tarif ediliyor.Aynı dizilişler.Lütfen yardım

Kod: Tümünü seç

DataModul1.IBDataset1.Close;
        DataModul1.IBDataset1.SQL.Clear;
        DataModul1.IBDataset1.SQL.Add('Select * From MUSTERI');
        DataModul1.IBDataset1.SQL.Add('Where YETKILIISMI Like '''+EditAra.Text+'%'+'''');
        DataModul1.IBDataset1.Open;

Kod: Tümünü seç

DataModul1.IBDataset1.Close;
        DataModul1.IBDataset1.SQL.Clear;
        DataModul1.IBDataset1.SQL.Add('Select * From MUSTERI');
        DataModul1.IBDataset1.SQL.Add('Where YETKILIISMI Like '''+EditAra.Text+'%'+'''');
        DataModul1.IBDataset1.Open;

Kod: Tümünü seç

 DataModul1.IBDataset1.Close;
        DataModul1.IBDataset1.SQL.Clear;
        DataModul1.IBDataset1.SQL.Add('Select * From MUSTERI');
        DataModul1.IBDataset1.SQL.Add('Where YETKILIISMI=Aranan');
        DataModul.IBDataset1.ParamByName('Aranan').AsString:= EditAra.Text+'%';
        DataModul.IBDataset1.Open;
        DataModul1.IBDataset1.Open;

Kod: Tümünü seç

        DataModul1.IBDataset1.Close;
        DataModul1.IBDataset1.SQL.Clear;
        DataModul1.IBDataset1.SQL.Add('Select * From MUSTERI');
        DataModul1.IBDataset1.SQL.Add('Where YETKILIISMI=Aranan');
        DataModul.IBDataset1.ParamByName('Aranan').Value:= EditAra.Text+'%';
        DataModul.IBDataset1.Open;
        DataModul1.IBDataset1.Open;

DataModul1.IBDataset1.Close;
DataModul1.IBDataset1.SQL.Clear;
DataModul1.IBDataset1.SQL.Add('Select * From MUSTERI');
DataModul1.IBDataset1.SQL.Add('Where YETKILIISMI Like '+QuotedStr(EditFiltrele.Text+'%'');
DataModul1.IBDataset1.Open;


Eğer aranan alanda tek bir karakter varsa onu buluyor.Mesela Yetkili İsmi olarak B olan bir kayıt olsun.O zaman EditAra nın içine B yazarsak Bu kaydı buluyo ama
Beyazıt yazıyorsa bulmuyor.Yukarrıdaki SQL ifadelerinin hepsinde aynı sonuç var.
Bileşenler:
Delphi 2005 Firebird 1.5 IBDataset

Yardım eden arkadaşlara teşekkürler.Herkese kolay gelsin.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
eğer ibexpert gibi bir program ile bakabilirsen bu sqlleri orada çalıştır.
bakalım sonuç dönüyormu.
+
bu kodları nereye yazıyorsun
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
mhizar
Üye
Mesajlar: 78
Kayıt: 30 May 2005 11:06

Mesaj gönderen mhizar »

EditAranın Cahnge yordamına.Ayrıca IBDataset1 yerine IBDataset yazmışım ama bu sizi yanıltmasınm programımda bu doğru şekilde yazıyo.Sadece burada böyle yazmışım
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

merhabalar hocam şöyle bir inceledim her nedense iki kod sunmuşun ikisindede sona open yani tablonun açılması iki defa kullanılmış. birde aranan diye bir değişken mi tanımladın bu işlem için anlayamadım. edit in change olayına like ifadesini yazdıktan sonra parametreyi IBDatasetin veya IBQuery nin params özelliğini params[0]:=edit1.text diyede yapabilirsin. 0 sql kodlarının ilk satırını ifade eder seninkinde kaçıncı satırda ise params değerine parametre atayabilirsin. like ile aramalarda aradığın bilginin ilk harfini yazdığında uygun kayıtları bulur ve listeler. sen devam ettikçe liste azalır. birebir arama için locate kullanman lazım. senin söylediğin ilk harfini yazıyorum gösteriyor. daha sonra yok oluyor tam adını yazdığımda geliyor gibi bişey like de olmaması lazım. dediğim gibi aranan kısmını çıkar bu değişken bence birebir alan ismine göre aramlarda boolean olarak tanımlanan değişkenden dönen true yani olumlu anlamında kullanabilirsin ancak like dediğimgibi harf ile başlayan tüm kayıtları yani en yakın sonuçlarıda listeler. kolay gelsin...
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
mhizar
Üye
Mesajlar: 78
Kayıt: 30 May 2005 11:06

Mesaj gönderen mhizar »

Hocam Opemler iki defa yazılmış ama programda doğru yazılı iki kez değil.Bahsettiğim olay da şu.Diyelimki aradığım alandaki kayıtlardan birisi Bülent Diğer B.Ben bu kdu EditAra'nın chabge ypordamına yazıyorum.B harfine basınca Bülenti listelemiyor ama B olan kaydı listeliyor.Alan tipi Varchar.Bundanmıdır bilmem.Buradaki Aranan da parametre değeridir.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhabalar,

ibdataset kullanımı açısından soruna yanıt olmayacak ama bana kalırsa aynı şey şu şekilde verdiğin kodlarda sadece ibquery kullanarak tablo ve alan bölümünü kendime uyarladığımda kodlar çalışıyor.

Kod: Tümünü seç

IBQuery1.Close;
        IBQuery1.SQL.Clear;
        IBQuery1.SQL.Add('Select * From ARSIVTESCIL');
        IBQuery1.SQL.Add('Where ADI Like '''+Edit1.Text+'%'+'''');
        IBQuery1.Open;
ibdataset kullandığımda sql satırında hata verdi bende query denedim ve çalışıyor. ilk etepta sonuç dönmedi sandım meğersem gridin datasetini değiştirmediğimden miş. sizde de böyle bir şey olabilirmi?

Ek olarak bu kodlarda çalışıyor

Kod: Tümünü seç

procedure TForm1.Edit1Change(Sender: TObject);
var
ADI:string;
begin
  IBquery1.Close;
        IBquery1.SQL.Clear;
        IBquery1.SQL.Add('Select * From ARSIVTESCIL');
        IBquery1.SQL.Add('Where ADI LIKE :ADI');
        IBquery1.ParamByName('ADI').asstring:= Edit1.Text+'%';
        IBquery1.Open;

end;
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
Cevapla