Sql yardım

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Sql yardım

Mesaj gönderen haydarxxx »

Kod: Tümünü seç

IBQuery7.close;
IBQuery7.SQL.Clear;
IBQuery7.SQL.Add('Select TBL_OGRENCI.ADI_SOYADI, TBL_OGRENCI.SINIFI, TBL_OGRENCI.KALAN,TBL_OGRENCI.BORCU, TBL_OGRENCI.TEL_NO, TBL_TAKSIT.TAKSIT_MIKTARI,TBL_TAKSIT.TARIH FROM  TBL_OGRENCI  INNER JOIN     TBL_TAKSIT   ON  TBL_OGRENCI.OGRENCI_ID=TBL_TAKSIT.OGRENCI_ID  where  SINIFI between '+quotedstr(JvDotNetEdit12.text)+' and '+quotedstr(JvDotNetEdit17.text)+' ');
IBQuery7.Open;

Kod: Tümünü seç

 [Error] Giris.pas(1187): String literals may have at most 255 elements
hatası alıyorum yardımlarınızı bekliyorum.Teşekkürler
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

bu bir sql hatası değil dikkatini çekerim. sql hatalarını runtime da alırsın..
burda bir değişkene kapasitesinin üstünde yüklemenin yapıldığı söyleniyor tanımlı değişkenleri kontrol et. string i widestring olarak değiştir.

Kolay Gelsin...
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

Hocam konuyu biraz daha açarmısınız sql yazılımımda hata yok ise.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

Hocam hata mesajı açık
mesaj
[Error] Giris.pas(1187): String literals may have at most 255 elements
Giris isimli unitin 1187. satırında string bir değişkene 255 karekterin üzerinde yükleme olduğunu sölüyor... sql hatası değilden kastettiğim buydu...

Giris Unitini açınız 1187.satıra gidiniz ve kodunuzu kontrol ediniz...

Kolay Gelsin...
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

String bir değişkene Delphi'nin bizzat içinde bir atama yaparken tekli tırnak içinde en fazla 255 karakter yazabiliyorsunuz. O yüzden bu tip atamaları aralara toplama işareti koyarak yapmalısınız:

St1 := 'Ali veli selami kivi getirin';

yerine

St1 := 'Ali veli ' + 'selami kivi ' + 'getirin';

şeklinde yazacaksınız. Tabi burada zaten 255 karakter yok ama sizinkinde var. Kısaca İki tek tırnak arasına en fazla 255 karakter yazabiliyorsunuz. Bu da ta Turbo Pascal'dan kalma bir özellik ne hikmetse geliştirememişler.

Sonuç olarak kodunuzu şu şekilde değiştirin:

Kod: Tümünü seç

IBQuery7.close; 
IBQuery7.SQL.Clear; 
IBQuery7.SQL.Add('Select TBL_OGRENCI.ADI_SOYADI, TBL_OGRENCI.SINIFI, TBL_OGRENCI.KALAN,TBL_OGRENCI.BORCU, TBL_OGRENCI.TEL_NO, TBL_TAKSIT.TAKSIT_MIKTARI,TBL_TAKSIT.TARIH FROM  ' + 'TBL_OGRENCI  INNER JOIN     TBL_TAKSIT   ON  TBL_OGRENCI.OGRENCI_ID=TBL_TAKSIT.OGRENCI_ID  where  SINIFI between '+quotedstr(JvDotNetEdit12.text)+' and '+quotedstr(JvDotNetEdit17.text)+' '); 
IBQuery7.Open;
İyi çalışmalar.
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

Hakan Can Teşekkür ediyorum şimdi daha iyi anladım ve sayende yeni bir şey öğrendim.Sağolasın.Bu arada kadirkurtoglu sanada teşekkür ediyorum ilgin için.Burada bu kod üzerinden hemen bir şey daha sormak istiyorum bu koşullara uyan kayıt sayısını tespit etmek ki firebird de
count kullanılıyor ama burada join ifadesinde bu değişimi nasıl sağlayacağız ve kayıt sayısını aldıracağız

Kod: Tümünü seç

 form13.QRLabel4.Caption:=inttostr(IBQuery8.Fields[0].AsInteger);
ifadesi denedim sql yi hiç çalıştırmıyor burada nasıl bir düzenleme yapmalıyı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 »

Kod: Tümünü seç

form13.QRLabel4.Caption:=inttostr(IBQuery8.RecordCount;
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

kadir hocam bu kod tek bir kayıt buluyor yani firebird de RecordCount sağlık lı çalışmıyor
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

FB/ IB de fetchall komutunu vermediğin sürece recordcount 1 döner.


yani

Kod: Tümünü seç

IBQuery8.fetchall;
form13.QRLabel4.Caption:=inttostr(IBQuery8.RecordCount);
şeklinde yazmanız gerekiyor kodu....

Kolay gelsin...
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

Ase çok sağolasın.Teşekkür ediyorum
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

Rica ederim. Buralara uğramaya pek vakit bulamıyorum son zamanlarda. Yardım edebildiysem ne mutlu. Kolay gelsin.
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Cevapla