Accesde sql sorgulamada hata

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

Accesde sql sorgulamada hata

Mesaj gönderen baloglurecep »

arkadaşalr selamlar....

Yaptığım projede 3 tabloyu birleştirip içinde toplama yaptırıyorum ve bazı şartlar yapan bir procedure oluşturdum. Kodları bizzat accesin içinde oluşturdum. orda çalışıyor sıkıntı yok. Yalnız bu sorgulamıyı proje içinde yapınca msjet40.dll hatası veriyor. sonra iki tabloya dönüştürdüm v iki tabloyu birleştirerek yaptım yine aynı hata. anlamadım. Ado ile bağlanıyorum accese. Yardımlarınızı bekliyorum.

kod şöyle;

procedure filitre;
begin

with dm.Q_sorgu do begin
sql.Clear;
sql.Add('SELECT musteriler.Id, musteriler.Adi_soyadi, musteriler.telefon, musteriler.telefon1, musteriler.eposta, musteriler.defter_no, musteriler.sayfa_no, musteriler.gizle,');
sql.Add('Sum(toplam_satis.toplam_miktar) AS Toplatoplam_miktar, Sum(toplam_satis.odeme) AS Toplaodeme , ((Sum(toplam_satis.toplam_miktar))-(Sum(toplam_satis.odeme))) AS bakiye');
sql.Add('FROM musteriler INNER JOIN toplam_satis ON musteriler.Id = toplam_satis.musteri_Id');
sql.Add('GROUP BY musteriler.Id , musteriler.Adi_soyadi, musteriler.telefon, musteriler.telefon1, musteriler.eposta, musteriler.defter_no, musteriler.sayfa_no, musteriler.gizle');
sql.Add('HAVING ((musteriler.gizle)=False) ');


if trim(form_menu.RzEdit1.Text)<>'' then
sql.Add('and ((musteriler.Adi_soyadi) like '+QuotedStr(form_menu.rzedit1.Text+'%')+')');

if form_menu.RzCheckBox1.Checked=true then
sql.Add(' AND ((((Sum(toplam_satis.toplam_miktar))-(Sum(toplam_satis.odeme))))>0)');

sql.Add(') ORDER BY musteriler.Adi_soyadi;');

Active:=true;
end;
end;
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Emin olmamakla birlikte ,
İşletim Sistemi XP ise Ado yu sağlıklı kullanabilmek için SP2 gerekli olabilir.
Sp bir olan makinelerde Ado hataları ile karşılaşmıştım.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

Mesaj gönderen baloglurecep »

üstadım pc de servispac2 yüklü ve sürekli güncelliyorum xp yi. anlamadım gitti.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Bu gibi kodlamalarda öncelikli olarak oluşan SQL string ini incelemekte fayda var.

Oluşan SQL i bir Memo için alıp kontrol bence.
DLL hatasını anlam veremedim.
kullandığın RZ kompenenti ile ilgili olabilir belki.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

Mesaj gönderen baloglurecep »

arkadaşlar projeyi minik bir hale getirip sadece datayı ve gerekli sorguyu içeren bir ado query ekleyerek projeleştirdim. kodlara ve hataya bakabilirmsiniz. sizdede veriyor mu?

proje adresi
http://www.balogluyazilim.com/proje.rar
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Accesde sql sorgulamada hata

Mesaj gönderen sabanakman »

baloglurecep yazdı:...
sql.Add('GROUP BY musteriler.Id , musteriler.Adi_soyadi, musteriler.telefon, musteriler.telefon1, musteriler.eposta, musteriler.defter_no, musteriler.sayfa_no, musteriler.gizle');
sql.Add('HAVING ((musteriler.gizle)=False) ');
if trim(form_menu.RzEdit1.Text)<>'' then
sql.Add('and ((musteriler.Adi_soyadi) like '+QuotedStr(form_menu.rzedit1.Text+'%')+')');

if form_menu.RzCheckBox1.Checked=true then
sql.Add(' AND ((((Sum(toplam_satis.toplam_miktar))-(Sum(toplam_satis.odeme))))>0)');

sql.Add(') ORDER BY musteriler.Adi_soyadi;');...
Gönderdiğin projede sql bilgisini hatalı yazmışsın, doğrusunu yukarıdaki sorundan aldım ve bende sorunsuz bir şekilde çalıştı. Ayrıca Having şartında sadece group by'ı ilgilendiren şartları verebilirsin (sum,max,avg gibi fonksiyonları kullanarak ya da guruplanan alanlara şart vererek).Mesela

Kod: Tümünü seç

if trim(form_menu.RzEdit1.Text)<>'' then
sql.Add('and  ((musteriler.Adi_soyadi) like '+QuotedStr(form_menu.rzedit1.Text+'%')+')');
şartını where ile vermen gekekmektedir. İyi çalışmalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

Mesaj gönderen baloglurecep »

Şaban bey siz projeyi verdiğim yerden indirip ondaki kodlar inceleyip soruınsuz çalışmasını sağladınız mı?

hala sıkıntım devam ediyor. anlamadım gitti. projenin mantığında yada gidişindemi hata var aklıma o geliyor. veritabanı tasarımında mı hata var acaba diyorum ama sanmıyorum. bir haftadır tüm kodları inceledim.

yardım ve yorumlarınızı bekliyorum.....
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

İnternetten gönderdiğin projenin SQL cümlesi hatalı. ...FROM musteriler INNER JOIN toplam_satis ON musteriler.Id=... ve ...GROUP BY musteriler.Id hataların var (.Id'ler yazılmamış.). Bunu .Id şeklinde olması gerektiğini yukarıdaki verdiğin SQL cümlesinden anladım. .Id'ler yazılınca o projenin SQL'i çalıştı.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

Mesaj gönderen baloglurecep »

saban bey
o idleri gördüm düzelttim yalnız yine çalışmadı. ben sadece size gönderdiğim projede deniyorum derlerken (delphi içinden çalıştığında msjet40.dll ) hatavermeye devam ediyor. ancak exeden çalıştığında hata yok istediğim gibi çalıştı. Şartları da koydum sıkıntı yok. bu kodları alıp asıpl projeye uyguladığımda hata devam ediyor exeden açlıştığındada hata veriyor. raize bileşnleri ve cxbileşnşleri kullandım. Gerçi şimdiye kadar da onları kullanıyordum ama hata olmuyordu. bulamadım gittiim .bir haftadır boğuşuyorum hata ile. yardımcı olursanız çok sevinirim.

selamlar
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

Mesaj gönderen baloglurecep »

saban bey bir şeyi unutmuşum söylemeyi....

delphiden çalıştığında exe msjet40.dll hatası ama exden açlıştığında '' invalid integer value hatası veriyor.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

ADOQuery bileşeninde parametreler kalmış olmasın. Parametres özelliğinde varsa bunları boşalt. Yoksa herşey normal gibi duruyor.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

Mesaj gönderen baloglurecep »

şaban bey
projemde querylerde parametrlerde yok. yardımlarınız için çok teşlekkür ediyorum. çözüm bulunca sizide haberdar ederim arkadaşlar yaralanır belki çözümden...
Cevapla