ADOQuery ile SQL sorgulama problemi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
ADOQuery ile SQL sorgulama problemi
arkadaşlar daha önce paradox veritabanı kullandığım programda veriler sürekli kaybolduğu ve veritabanı bozulduğu için AdoConnection kullanarak verilerimi access dosyasına kaydettirdim.. Fakat AdoQuery kullanarak yaptığım sorgular çalışmıyor özetle şöyle anlatayım ;
Adoquery1.Close;
Adoquery1.SQL.Clear;
Adoquery1.SQL.add('select * from personel ');
Adoquery1.Open;
dediğim zaman sorun yok kod çalışıyor fakat WHERE komutunu kullandığım zaman bir ton hata veriyor örneğin ;
Adoquery1.Close;
Adoquery1.SQL.Clear;
Adoquery1.SQL.add('select * from personel where id=200');
Adoquery1.Open;
Dediğim zaman [microsoft][ODBC microsoft access driver] Data Type mismatch in criteria expression hatası alıyorum.
Haa Tırnak içine alayım diyorum id="200" yazıyorum bu seferde [microsoft][ODBC microsoft access driver] too few parameters. Expected 1 hatası alıyorum.. String alan için sorgulama yaptırıyorum aynı hataları gene alıyorum.. normal query kullandığım zaman bu hatalar yoktu AdoConnection kullandığım için bu hatalar cıkmaya basladı.. Where komutundan sonra neden bu hataları verir ??
Eski veritabanında ;
Query1.sql.add('select * from personel WHERE (DTarih between ' +#39+ FormatDateTime('dd/mm/yyyy',DateTimePicker3.Date)+#39+' and '+#39+FormatDateTime('dd/mm/yyyy',DateTimePicker4.Date)+#39+') '); tarzında bir sorgulamam var ve çalışıyor. Ama adoquery de malum calısmıyor kafayı yemek üzereyim lütfen yardımcı olun
Adoquery1.Close;
Adoquery1.SQL.Clear;
Adoquery1.SQL.add('select * from personel ');
Adoquery1.Open;
dediğim zaman sorun yok kod çalışıyor fakat WHERE komutunu kullandığım zaman bir ton hata veriyor örneğin ;
Adoquery1.Close;
Adoquery1.SQL.Clear;
Adoquery1.SQL.add('select * from personel where id=200');
Adoquery1.Open;
Dediğim zaman [microsoft][ODBC microsoft access driver] Data Type mismatch in criteria expression hatası alıyorum.
Haa Tırnak içine alayım diyorum id="200" yazıyorum bu seferde [microsoft][ODBC microsoft access driver] too few parameters. Expected 1 hatası alıyorum.. String alan için sorgulama yaptırıyorum aynı hataları gene alıyorum.. normal query kullandığım zaman bu hatalar yoktu AdoConnection kullandığım için bu hatalar cıkmaya basladı.. Where komutundan sonra neden bu hataları verir ??
Eski veritabanında ;
Query1.sql.add('select * from personel WHERE (DTarih between ' +#39+ FormatDateTime('dd/mm/yyyy',DateTimePicker3.Date)+#39+' and '+#39+FormatDateTime('dd/mm/yyyy',DateTimePicker4.Date)+#39+') '); tarzında bir sorgulamam var ve çalışıyor. Ama adoquery de malum calısmıyor kafayı yemek üzereyim lütfen yardımcı olun
merhaba
bir beladan kurtulup diğerine taşıdınız yani.
size tavsiyem program lokal çalışıyor ise Firebird embedded server kullanmanız.
sorunuza gelince id alanı vs alanların tiplerine göre durum değişeceğinden alan tiplerinide vermelisiniz.
yalnız ilk hata zaten veri tipi uyuşmalığı gibi kokuyor.
ayrıca standart sqlde string ifadeler tek tırnak içine alınır benim bildiğim.
bir beladan kurtulup diğerine taşıdınız yani.
size tavsiyem program lokal çalışıyor ise Firebird embedded server kullanmanız.
sorunuza gelince id alanı vs alanların tiplerine göre durum değişeceğinden alan tiplerinide vermelisiniz.
yalnız ilk hata zaten veri tipi uyuşmalığı gibi kokuyor.
ayrıca standart sqlde string ifadeler tek tırnak içine alınır benim bildiğim.
Kod: Tümünü seç
select * from abc where adi='sjfhsdkjfhs'
select * from abc where id='200' // id tipi string varchar felansa
select * from abc where id=200 //id integer ise
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
-
- Üye
- Mesajlar: 47
- Kayıt: 17 Ara 2004 12:14
Ya Arkadaşlar teşekkür ederim sağolun ama olmadı yine çıldırmamak elde değil hepinizin dediği gibi yaptım yine olmadı. Hatta arkadaşın dediği gibi önce Access i açıp kendi içinde SQL sorgusu yaptım çalıştığını gördükten sonra SQL sorgusunu tuttum kopyaladım
Adoquery1.SQL.add('SELECT Personel.Id FROM Personel WHERE (((Personel.Id)="222"));'); bu kod To few parametrers ile başlayan hatayı veriyor yani çıldırıcam Acaba kullandığım nesneler mi yanlış..
Adoconnection ve Adoquery kullandım adoconnectiondan ODBC de yarattığım veritabanı path ini seçtim dediğim gibi tek select kullandığım zaman sorgu çalışıyor ama araya where girdiği zaman çalışmıyor paradoxtan kurtulduk başıma bela oldu bir ton veri kaybettim veritabanım bozuldu şimdi başıma böyle bir bela çıktı.. ne kullanayım firebird mi kullanayaım nasıl yapayım kafayı yemek üzereyim
Adoquery1.SQL.add('SELECT Personel.Id FROM Personel WHERE (((Personel.Id)="222"));'); bu kod To few parametrers ile başlayan hatayı veriyor yani çıldırıcam Acaba kullandığım nesneler mi yanlış..
Adoconnection ve Adoquery kullandım adoconnectiondan ODBC de yarattığım veritabanı path ini seçtim dediğim gibi tek select kullandığım zaman sorgu çalışıyor ama araya where girdiği zaman çalışmıyor paradoxtan kurtulduk başıma bela oldu bir ton veri kaybettim veritabanım bozuldu şimdi başıma böyle bir bela çıktı.. ne kullanayım firebird mi kullanayaım nasıl yapayım kafayı yemek üzereyim
kim ne düşünür bilemem ama bence access gercek bir vt değil.
gercekten fb öneriyorum ben size
gercekten fb öneriyorum ben size
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
haklısın tabi firebird her zaman için access den daha iyidir tamam da firebird daha önce hiç kullanmadım. delphi ile nasıl bağlantı yapılır bilmiyorum ayrıca quickreport raporlama aracını kullanıyorum. raporlamada problem yaratırmı emin değilim ... aslında bu ado olayını çözssem süper olurdu çünkü çok fazla da vaktim yok açıkcası..
arkadaşlar sorunu çözdüm kod şu şekilde olacak
Adoquery1.Close;
Adoquery1.SQL.Clear;
adoquery1.SQL.Add('SELECT * FROM Personel WHERE ID =:Degiskenismi');
adoquery1.Parameters.parambyname('degiskenismi').Value:='200';
Adoquery1.Open;
adoquery nin propertiesinden paramaters özelligine gelip yeni bir parameters ekleyip ismini "degiskenismi" verdikten sonra sorun çözüldü
teşekkür edeirm yardımı dokunan herkese
Adoquery1.Close;
Adoquery1.SQL.Clear;
adoquery1.SQL.Add('SELECT * FROM Personel WHERE ID =:Degiskenismi');
adoquery1.Parameters.parambyname('degiskenismi').Value:='200';
Adoquery1.Open;
adoquery nin propertiesinden paramaters özelligine gelip yeni bir parameters ekleyip ismini "degiskenismi" verdikten sonra sorun çözüldü
teşekkür edeirm yardımı dokunan herkese
sorunu çözmene sevindim ancak bende adoconnection ile ilk sorduğun tarz onlarca sorgu sorunsuz calışıyor.
diğer yollada olmalıydı yani.
diğer yollada olmalıydı yani.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog