PDA

View Full Version : چطوری می تونم ADOStoredProc1.ProcedureName حین اجرا به صورت کد نویسی نام پروسیجرمو تخصیص بدم



imani1983
یک شنبه 17 اردیبهشت 1391, 22:24 عصر
چطوری می تونم ADOStoredProc1.ProcedureName حین اجرا به صورت کد نویسی نام پروسیجرمو تخصیص بدم
اینطوری می نویسم ارور میده؟


ADOStoredProc1.ProcedureName:=report_;1

Felony
یک شنبه 17 اردیبهشت 1391, 22:37 عصر
چه خطایی ؟

این یه نمونه :
ADOStoredProc1.Active := False;
ADOStoredProc1.ProcedureName := 'GetStateID';
ADOStoredProc1. ExecProc;

imani1983
یک شنبه 17 اردیبهشت 1391, 23:44 عصر
چه خطایی ؟

این یه نمونه :
ADOStoredProc1.Active := False;
ADOStoredProc1.ProcedureName := 'GetStateID';
ADOStoredProc1. ExecProc;
مرسی دوست عزیز
وقتی هم این کار رو انجام میدم پیغام یا خطای زیر رو به من میده ؟؟؟
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EOleException with message 'Procedure 'report_st_no' expects parameter '@st_no', which was not supplied'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

imani1983
یک شنبه 17 اردیبهشت 1391, 23:48 عصر
همچنین خطای زیر رو هم میده؟؟؟
---------------------------
Error
---------------------------
Procedure 'report_st_no' expects parameter '@st_no', which was not supplied.
---------------------------
OK
---------------------------

Mahmood_M
دوشنبه 18 اردیبهشت 1391, 00:16 صبح
دو پیغامی که قرار دادید ، یکی هستند ! ، اولی رو دیباگر دلفی نمایش میده و دومی رو برنامه ی خودتون که اجرا شده
احتمالا پارامتر st_no مربوط به Procedure تون مقدار خالی ( null ) داره ، اگر Procedure تون پارامترهای ورودی داره ، قبل از اجرای Procedure ( یعنی ExecProc ) باید پارامترهای اون رو مقداردهی کنید ، مثلا :

ADOStoredProc1.Parameters.ParamByName('ST_NO').Val ue := 1;

موفق باشید ...

Felony
دوشنبه 18 اردیبهشت 1391, 05:49 صبح
علاوه بر موردی که محمود جان گفت اگر پروسیجر دارای پارامتر هست قبل از مقدار دادن به پارامترها باید متد Parameters.Refresh رو صدا بزنی ، یعنی :

ADOStoredProc1.Active := False;
ADOStoredProc1.ProcedureName := 'GetStateID';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters.ParamByName('@ST_NO').Va lue := 1;
ADOStoredProc1. ExecProc;

latifi_y
دوشنبه 18 اردیبهشت 1391, 10:30 صبح
دوستان عزیز از راهنمایی هاتون سپاس گذ ارم اون ارور ها برطرف شدن اما من وقتی این کد رو می نویسم تو خروجی dbgrid هیچی نمایش نمیده ؟؟؟؟

DataSource1.DataSet:=ADOStoredProc1;
DBGrid1.DataSource:=DataSource1;
ADOStoredProc1.Active :=False;
ADOStoredProc1.ProcedureName := 'report_st';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters[1].Value := Edit1.Text;
ADOStoredProc1.ExecProc;



در حقیقت مامی خواهیم با استفاده از یک ADOStoredProc1 به سه چهار تا پروسیجر که تعریف کردیم استفاده کنیم.
ممنون می شیم باز هم راهنماییمون کنید .