Sql & betwen

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

Sql & betwen

Mesaj gönderen dtgb »

Merhabalar arkadaslar
amacım iki tarih arasında baska kriterlerle birlikte sorgu yapmak
acaba asagıdaki kodlamada bi hata var mı?

Result := '';
if edit1.Text<> '' then
Result :=AddResult(Result) + ' Tarih between '''+ DateTimeToStr(dt1.DateTime)+''' and '''+DateTimeToStr(dt2.DateTime)+'''';
if edit4.Text <> '' then
Result := AddResult(Result) + ' Lot_No LIKE ''' + edit4.Text+ '%''';
Kullanıcı avatarı
miskin
Üye
Mesajlar: 103
Kayıt: 26 Tem 2005 02:02
Konum: Gavuristan

Mesaj gönderen miskin »

between ..... LiteNo arasinda herhangi bir and yada or yok
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

Mesaj gönderen dtgb »

iki if ifadesi arasında ad var onu baska yerde yazdırıyorum zaten sorun betweeen komutunun oldugu cumlecikte onu duzeltemedim
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba;

Ne hatası veriyor?

Kod: Tümünü seç

 Tarih BETWEEN ''' + DateToStr(dt1.Date) + ''' and ''' + DateToStr(dt2.Date) + ''' ';
Yukarıdaki gibi bir deneyebilirsin;

+ SQL textinin son halini görmek istiyorsan,sorununu çözebilmek için birebirdir.

Kod: Tümünü seç

 ShowMessage(IBQuery1.Text);
iyi günler...
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

Mesaj gönderen dtgb »

Hata mesajı olarak "Yanlış türdeki degişkenler kabul edilebilir aralık dısında veya baskasıyla cakısan bagımsız degislkenler kullanılıyor" diye bir hata
between komutunu sadece iki tarih arasındaki kayıtları gormek icin kullandıgımda sorunsuz calısıyor
ama 2. bir kriter koydugumda ornegin iki tarıh arasında makine numaralarıda su olan dedigimde bu hatayı veriyor.
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba;

Kod: Tümünü seç

Hata mesajı olarak "Yanlış türdeki degişkenler kabul edilebilir aralık dısında veya baskasıyla cakısan bagımsız degislkenler kullanılıyor"
Bu hata mesajını veren SQL cümlesini gönderebilir misin?
+ birde hata mesajını default diliyle yazarsan daha iyi olur,anlaşılması için,alışkanlık... :wink:
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

Mesaj gönderen dtgb »

Hatanın kaynaklandıgı kısım burası Sql e bu kısmaı ekledigimde hata veriyor
if edit1.Text<> '' then
Result :=AddResult(Result) +( ' Tarih between '''+ DateTimeToStr(dt1.DateTime)+''' and '''+DateTimeToStr(dt2.DateTime)+'''');

Hata kısmında su yazıyor
Project iplikhane.exe raised exception class EOleException With message "Yanlış türdeki degişkenler kabul edilebilir aralık dısında veya baskasıyla cakısan bagımsız degislkenler kullanılıyor" . Process stopped . Use Step Or Run to Continue.
yukardaki kodu ekledigimde hata veriyor
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Veri tabanın nedir, Acces mi?
Eger oyleyse sorunun basında belirtmeniz halinde bu kadar beklemzdiniz.
bildigim kadarıyla access te tarih alanlarını #12.12.2004# seklinde kullanmak gerekiyor
herkes ' ile tarih alanlarını kullanırken M$ gider tersine....
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

Mesaj gönderen dtgb »

hayır veri tabanı sql
sorunu ancak su sekilde cozebildim
iki ayrı sql cumlesi yazdım
once tarih belirtilmisse o tarih aralıgına gore verileri suzuyor sonrada suzulmus olan verileri diger kriterlere gore sorgulayarak yaptım ama gecici bi cozum tabi
Kullanıcı avatarı
67neo
Üye
Mesajlar: 20
Kayıt: 29 May 2005 01:31
Konum: Antalya
İletişim:

Mesaj gönderen 67neo »

Bence şu şekilde yaparsan daha sağlıklı olur;

Kod: Tümünü seç

var
  ilk_tarih : string;
  son_tarih: string;
begin
  AdoQuery1.Close;
  AdoQuery1.SQL.Clear;
  AdoQuery1.SQL.Add('select * from table');
  AdoQuery1.SQL.Add('where field_name between :fld_ilk_tarih and :fld_son_tarih');
  AdoQuery1.Parameters.ParamByName('fld_ilk_tarih').Value := StrToDate(ilk_tarih);
  AdoQuery1.Paremeters.ParamByName('fld_son_tarih').Value := StrToDate(son_tarih);
  AdoQuery1.Open;
end;
Bilgi paylaştıkça çoğalır. Başarı ise bunun sonucudur.
Çağrıbey
Üye
Mesajlar: 40
Kayıt: 26 Kas 2004 11:25
Konum: Ankara

bu da diğer bir benzer tarih sorgusu

Mesaj gönderen Çağrıbey »

aşağıdaki örnekte sql veritabaninda denenmiştir..
kolay gelsin
-----

procedure TForm1.cxButton7Click(Sender: TObject);
begin
AdoQuery1.Close;
AdoQuery1.Sql.Clear;
AdoQuery1.Sql.Add('Select * From TABLO1 where (Cevap_Tarihi>=:Tarih_ilki and Cevap_Tarihi<=:Tarih_Sonu) ');
AdoQuery1.Parameters[0].Value :=(inputbox('Gorev onayı Tarihi ilki','','01/11/2004'));
AdoQuery1.Parameters[1].Value :=(inputbox('Görev Onayı Tarihi Sonu','','12/12/2004'));
AdoQuery1.Open;
StatusBar1.Panels.Items[0].text:=('Kayıt Sayısı : ' +inttostr(AdoQuery1.RecordCount));
end;
Gelecek günden ne dilersen, doğacak günler onu getirir
Cevapla