PDA

View Full Version : مشکل در پارامتر ADOQuery



parniant
چهارشنبه 15 آبان 1387, 09:08 صبح
با سلام در برنامه دلفی ام یک adoquery دارم که در اون از دستور زیر استفاده می کنم
adoquery1.SQL.Clear;
adoquery1.Close;
adoquery1.SQL.Add('select * from ttkelas');
adoquery1.SQL.Add('where shomare=:a and datet:=b and tterm:=c order by shomare');
adoquery1.Parameters.ParamValues['a']:=Edit1.Text;
adoquery1.Parameters.ParamValues['b']:=ComboBox1.Text;
adoquery1.Parameters.ParamValues['c']:=ComboBox2.Text;
adoquery1.Open;

اما برنامه ام را که اجرا می کنم پیغام زیر رو می ده
project project1.exe raised exception class EDatabaseError with message 'ADOQuery1:Parameter 'b' not found'.Process stopped .Use Step or Run to continue
که دکمه okو help رو داره که ok که می زنم و برنامه رو برای ادامه که گفته اجرا می کنم پیغام می ده ADOQuery1:Parameter'b' not found
مشکل برنامم چیه و چطور می تونم اون رو حل کنم ؟

s.mostafa.rahmani
چهارشنبه 15 آبان 1387, 09:26 صبح
احتمالاً اشكال از دونقطه‌ها و جابجايي‌شون باشه.
ضمناً براي اين كه كدتون درست ديده بشه اون رو داخل تگ كد بگذاريد.
[ code]
...
[ / code]

.

parniant
چهارشنبه 15 آبان 1387, 18:06 عصر
با سلام به شما s.mostafa.rahmani عزیز ممنون از پاسختان
ببخشید که در تگ نگذاشته ام می شه بگین چطور می تونم کدهام رو در تگ بذارم ممنونم بازم از شما

s.mostafa.rahmani
جمعه 17 آبان 1387, 21:05 عصر
با استفاده از كليد code در نوار ابزار ويرايشگر:
در حالت پاسخ سريع:
25282

در حالت ويرايشگر پيشرفته:
25283

mafazel
شنبه 18 آبان 1387, 07:21 صبح
با سلام
چرا از این روش استفاده نمی کنید؟


var
S :string;
begin
adoquery1.SQL.Clear;
adoquery1.Close;
S := ' Where shomare='+Edit1.Text+' and datet='+ComboBox1.Text
+' and tterm='+ComboBox2.Text + ' order by shomare ';
adoquery1.SQL.Add('select * from ttkelas '+S);
adoquery1.Open;

هم ساده تره هم سریعتر
ضمنا اگر فیلدها از نوع String باشند (مثلا فیلد shomare) باید بجای عبارت +Edit1.Text+ از عبارت +QuotedStr(Edit1.Text)+ استفاده کنید.

tefos666
پنج شنبه 23 آبان 1387, 23:28 عصر
دوست عزیز شما برای استفاده از پارامتر باید به این نکته توجه کنید که بعد از مساوی یک فاصله خالی قرار دهید و سپس : بیانی به صورت فوق select * from all where name= :param1
به این صورت در AdoQuery خود یک پارامتر add کرده اید برای استفاده هم میتوانید به دو روش یا قبلی که دوست خوبمان گفتند یا روش زیر استفاده کرد



AdoQuery1.Parameters.ParamByName('param1').Value:= Trim (ComboBox2.Text);


مثال :





if ComboBox2.Text='' then
ShowMessage('اول فیلتر را مشخص کنید')
else
begin
sarjam_refresh.Enabled:=true;
dm.qrrahgiriostan.Close;
dm.qrrahgiriostan.SQL.Clear;
dm.qrrahgiriostan.SQL.Add('select idt , namet ,ostan , sum (tedad) from nahal');
dm.qrrahgiriostan.SQL.Add('where ostan= :postan group by idt,namet,ostan ');
dm.qrrahgiriostan.Parameters.ParamByName('postan') .Value:=Trim (ComboBox2.Text);
dm.qrrahgiriostan.SQL.Add('order by idt');
dm.qrrahgiriostan.Open;
sarjam_refresh.Enabled:=False;
end;
end;




سوالی بود در خدمتم :تشویق: