PDA

View Full Version : پارامتر در adoquery



mmm_mirahmadi
سه شنبه 30 آبان 1385, 12:30 عصر
با سلام اشکال خطوط زیر چیست

adoquery1.SQL.clear ;
adoquery1.SQL.Add('select * from mrkz_des where mrkz_code=:param1 and yearterm=:param2');
adoquery1.Parameters.ParamByName ('param1').value:=dbedit1.text;
adoquery1.Parameters.ParamByName ('param2').value:=tyearterm;
adoquery1.Open ;

MRKZ_CODE کاراکتری با محتوی عددی

YEARTERM کاراکتری با محتوی عددی

TYEARTERM:='851'

متشکرم

sarvestan
سه شنبه 30 آبان 1385, 12:50 عصر
adoquery1.SQL.clear ;
adoquery1.SQL.Add('select * from mrkz_des where mrkz_code=:param1 and yearterm=:param2');
adoquery1.Parameters.ParamByName ('param1').value:=strtoint(dbedit1.text);
adoquery1.Parameters.ParamByName ('param2').value:=strtoint(tyearterm);
adoquery1.Open ;

mmm_mirahmadi
پنج شنبه 02 آذر 1385, 10:49 صبح
تست شد اما جواب صحیح دریافت نگردید .

هدف من این است که با دریافت مقدار یک کد در زمان اجرا , وجود یا عدم وجود رکوردی را در جدول مربوطه جستجو و پیام مناسب را به کاربر بدهم .


متشکرم

mzjahromi
پنج شنبه 02 آذر 1385, 11:30 صبح
کد فوق رو که اجرا میکنید چه خطائی دریافت میکنید؟

mmm_mirahmadi
پنج شنبه 02 آذر 1385, 18:43 عصر
خطایی نمیدهد . درست اجرا نمی کند یعنی وارد کردن کدی که در جدول دارای رکورد است و وارد کردن کدی که فاقد رکورد است هیچ فرقی ندارد و پاسخ برگشتی عدم یافتن رکورد میباشد در حقیقت adoquery خالی است .

mzjahromi
سه شنبه 07 آذر 1385, 10:31 صبح
کد رو این شکلی اصلاح کنید ببینید جوابی میگیرید


adoquery1.SQL.Add('select * from mrkz_des where mrkz_code='+QuotedStr(DBEdit1.Text)+' and yearterm='+IntToStr(Tyearterm));

محمد دادودنیا
چهارشنبه 08 آذر 1385, 03:04 صبح
در مورد پارامترها اگر فیلد مورد نظرتون از نوع رشته ای بود باید اونو با Qoutedstr به پارامتر ارسال کنید وقتی با Value‌اونو ست می کنی مقدار رو بدون '' به AdoQuery می فرسته

mmm_mirahmadi
پنج شنبه 16 آذر 1385, 08:41 صبح
بشکل زیر دستور وارد گردید ERROR داد ضمنا هدف استفاده از پارامتر است در حالیکه این راه حل اگر هم درست اجرا شود استفاده از پارامتر را منتفی می کند

adoquery1.SQL.Add('select * from mrkz_des where mrkz_code='+quotedstr(dbedit1.Text)+' and yearterm='+inttostr(tyearterm));

ERROR: there is no overloaded version of ' intTostr' that can be called with these arguments

mzjahromi
جمعه 17 آذر 1385, 17:03 عصر
این خطائی که شما دریافت کرده اید بخاطر نوع داده ای yearterm است باید نوع اولیه آن int باشد تا inttostr بتوواند روی آن عمل کند

ضمنا هدف استفاده از پارامتر است در حالیکه این راه حل اگر هم درست اجرا شود استفاده از پارامتر را منتفی می کند
معمولا برای پیدا کردن مشکلهائی که ظاهرا هیچ عیب و ایرادی ندارند باید راههائی را تست کرد که مشخص کند مشکل واقعا از کجاست؟
هدف کنار گذاشتن پارامترها نبوده است هدف بررسی است(با توجه به اینکه ما به پروژه شما به صورت صد درصد مسلط نیستیم)

mmm_mirahmadi
یک شنبه 19 آذر 1385, 11:21 صبح
همانطور که قبلا توضییح دادم فیلد yearterm بصورت کاراکتری تعریف گردیده که محتوی آن عددی نظیر 851 ' 852 و غیره میباشد ضمنا متغییر tyearterm بصورت زیر تعریف گردیده است .


tyearterm: string[3]='851'

mmm_mirahmadi
پنج شنبه 23 آذر 1385, 09:01 صبح
از همه تشکر می کنم . مشکل حل شد . ایراد در قسمت دیگری از برنامه بود .