Hata Mesajı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Hata Mesajı

Mesaj gönderen bobasturk »

Merhabalar;

Firebird ile ibeexpert yardımıyla oturduğum binanın aidat giriş ve sorgulamasını yapmak istemiştim.

Sorgu sayfamda editler ve dbgrid var.

bir sorgumda daire no girilerek o dairenin kayıtlarını almak istedim ve kod olarak

Kod: Tümünü seç

procedure TFormAyrinti.BitBtn1Click(Sender: TObject);
var
  DAIRENO:Integer;
  begin
  ibquery1.Close;
  ibquery1.SQL.Add('select*from AIDATLAR');
  ibquery1.SQL.Add('where DAIRENO LIKE :DAIRENO=:DAIRENO');
  ibquery1.ParamByName('DAIRENO').AsInteger :=strtoint(edit10.Text);
  ibquery1.Open;

  if ibquery1.RecordCount =0 then
  showmessage('Aradığınız Kayıt Bulunamadı?');

end;
bunu girdim ve hata mesajı olarak

Dinamic SQL Error
SQL error code=-104
Token Unknown -line 2, char 1
select


aldım. Daire no alanım integer olarak belirlenmiş durumda.

ikinci sorgum ise iki tarih arasında kayıtları bulmaktı ve kod olarak

Kod: Tümünü seç

procedure TFormAyrinti.BitBtn2Click(Sender: TObject);
var
  Tarih1,Tarih2:TDate;
  begin
   ibquery1.Close;
   ibquery1.SQL.Add('select*from AIDATLAR');
   ibquery1.SQL.Add('where ODTARIHI Between :Tarih1 and :Tarih2');
   ibquery1.ParamByName('Tarih1').AsDate :=strtodate(edit11.Text);
   ibquery1.ParamByName('Tarih2').AsDate :=strtodate(edit12.Text);
   ibquery1.Open;

   if ibquery1.RecordCount =0 then
   showmessage('Aradığınız Kayıtlar Bulunamadı?');

end;
bu satırları yazdım ve yukarıdaki hata mesajını verdi. kod satırlarında bir iki oyanama yaptıgımda alanı bulamama mesajını almıştım kodlamadaki sorun hakkında yardımcı olabilirmisiniz.

formun üzerine IBQuery1 ve datasource koyuyorum. IBQuery nin database sini veri giriş formundaki database ye bağlıyorum. transactionu kendisi aynı formdaki transaction a bağlamış oluyor. query deki sql özelliğine önce dokunmamıştım ve orada sol tarafta tabloyu görebiliyordum fakat sorgulama yapmak isteyince yukarıda belirttiğim hatayı verdi.

lafı çok uzattım herhalde frebirde yeni alışmaya çalışıyorum aynı sorguyu dbaseIV te yardımlarınızla yapabiliyordum.

sevgi ve saygılarla
kolay gelsin
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Selamlar

1- İlk kodda select ten ve * dan sonra boşluk gibi gözüküyor.
2-

Kod: Tümünü seç

'where DAIRENO LIKE :DAIRENO=:DAIRENO'
demişsin.
orada like kullanmışsın zaten. = kullanamazsın

Kod: Tümünü seç

'where DAIRENO LIKE :DAIRENO
olmalıydı.

İkinci kısımda

Kod: Tümünü seç

procedure TFormAyrinti.BitBtn2Click(Sender: TObject); 
var 
  Tarih1,Tarih2:TDate; 
  begin 
   ibquery1.Close; 
   ibquery1.SQL.Add('select*from AIDATLAR'); 
   ibquery1.SQL.Add('where ODTARIHI Between :Tarih1 and :Tarih2'); 
   ibquery1.ParamByName('Tarih1').AsDate :=strtodate(edit11.Text); 
   ibquery1.ParamByName('Tarih2').AsDate :=strtodate(edit12.Text); 
   ibquery1.Open; 

   if ibquery1.RecordCount =0 then 
   showmessage('Aradığınız Kayıtlar Bulunamadı?'); 

end; 
demişsin
burada edit kullancağına DateTimepicker kullan.
birde
ibquery1.SQL.Add('where ODTARIHI Between :Tarih1 and :Tarih2');

yerine ben genelde help

Kod: Tümünü seç

ibquery1.SQL.Add('where ODTARIHI>= :Tarih1 and ODTARIHI <= :Tarih2 '); 
kullanırım.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Teşekkür ederim p206

Tavsiyelerine uyacağım.

Sorunları hallettim. IBDatabase ve transaction koymam gerekiyormuş. Gerekli bağlantıları yaptıktan sonra sorgulamayı yaptı.

DateTimeBicker tavsiyeni ve kod örneğini uygulayacağım

tekrar herkeze teşekkürler.
Sayenizde düşünerek cevaba ulaşıyoruz
kolay gelsin.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhabalar;

Yukarıda sorduğum sorunun cevabını buldum demiştim fakat, edite ilk girdiğim kriter doğrultusunda sorgulamayı yapıyor fakat silip yeni bir kriter girdiğimde

dinamic sql error hatası veriyor

yani ilk sorumda yazdığım hatayı. oysa kod kısmında kayıt bulunamazsa mesaj yaz şeklinde komutum vardı.
Bu mantıkta bde nin query leri ile yaparken sorgulamada hata olmuyordu. yeni kriter girince varsa buluyordu yoksa yok mesajı veriyordu. burayı anlayamadım.
fdb uzantılı tabloma henüz bir veri girdim. deneme amaçlı olarak acaba hata bundan olabilirmi. tablo boş olduğu için hata verirmi.

Birde iki günden beri anlamaya çalışıyorum biraz kalın kafalıyım heral bu ibquery ile yapılan sorgulamalar sonucunda bazı alanlarda bulunan integer değerli sayıların toplanmasını ve edit üzerinde görüntülenmesini istiyorum. Bunu sum komutu ile yapılacağını öğrendim. fakat yazılacak kodun nereye ve ne tarzda yazılacağını çözemedim. query sorguları gibimi yoksa tek satır ilemi anlayamadım.
sorgu sayfama bir adet daha ibquery koyarak bir buton ilemi yapmalıyım olayı

işin içinden çıkamıyorum yardımcı olursanız sevinirim.

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

Mesaj gönderen bobasturk »

Kendi kendime sorup kindi kendime cevap veriyorum ama hepinize teşekkürler.

Cevap vermeyerek beni düşünmeye ve araştırmaya sevkettiniz. Sorun basitmiş. Kod da clear yazmam gerektiğini biliyorrdum ama ibquery1. dedikten sonra clear ifadesi gelmeyince yazmamıştım meğersem

ibquery1.sql.clear; olacakmaşı.

herkese teşekkür ve saygılarla
hayırlı çalışmalar.

kendi kendine konuşana delimi derler acaba.
Cevapla