PDA

View Full Version : انتقال پارامتر به store proc



mandana2010
پنج شنبه 25 مهر 1387, 07:40 صبح
سلام دوستان عزيز
مي خواستم ببينم با چه دستوري مي تونيم از داخل دلفي پارامترهايي رو به يك store procedure در SQL انتقال بديم
من يه store proc بصورت زير توي sql نوشتم





CREATE PRO ( @printed_21 [int],
@sabt_22 [int])
AS UPDATE [eshop].[dbo].[main]
SET
CEDURE [update_main_1]

[printed] = 2,
[sabt] = @sabt_22

WHERE
[printed] = 1
GO

و توي دلفي پارامتر sabt_22 رو با اين دستورات انتقال و sp رو اجرا كردم



a:=tblsabtno.FieldByName('sabtno').Asinteger+1;
sp1.Parameters.ParamValues['@sabt_22']:=a;
sp1.ExecProc;


ولي هنگام اجراي برنامه با فشردن دكمه اي كه اين دستورات روش نوشته شده خطاي زير رو ميده



project project1.exe raised exception class EOleException with message procedure updatemain expects parameter '@sabt_22',which was not supplied.


البته ببخشيد كه كد هاي يك مقدار بهم ريخته شدند

حمیدرضاصادقیان
پنج شنبه 25 مهر 1387, 08:47 صبح
سلام .به این صورت اشتباه است.شما یا باید از adoquery استفاده کنی یا باید از Adostoredproc استفاده کنی.اگر یک Adostoredproc روی فرمت بذاری میتونی با استفاده از کد زیر پارامتر ها رو بهش پاس بدی.


With aostoredproc1 do
Begin
close;
parameters[0].value:=1;
parameters[1].value:=a;
exec;
End;

فقط نکته ای که باید توجه کنی اینه که شما باید در پراپرتی های Adostoredproc نام procedure خودت رو انتخاب کنی.

Mohammad_Mnt
پنج شنبه 25 مهر 1387, 14:01 عصر
قبلش اگه این متد را کال کنید خوبه:

parameters.refresh;
از این سینتکس هم می‌شه استفاده کرد، خوانایی و سازگاری بیشتری داره:

parameters.paramByName('@printed_21).value := 1