ورود

View Full Version : واکشی یک پارامتر از sp و ارسال آن به دلفی



mahnaz_h
سه شنبه 12 شهریور 1387, 15:32 عصر
چطور می تونم یک مقدار را از store procedure به دلفی ارسال کنم و در دلفی اون مقدار را در یک متغیر بریزم. دستور آن چیست؟
ممنون

vcldeveloper
سه شنبه 12 شهریور 1387, 16:49 عصر
SP مورد نظر مقدار را به چه شکلی بر می گرداند؟ بصورت یک متغیر خروجی؟ یا بصورت نتیجه عملیات SP در قالب یک Recordset؟

mahnaz_h
سه شنبه 12 شهریور 1387, 16:56 عصر
می خوام یک مقدار را با return به برنامه برگردونم . نمی دونم تو دلفی با چه دستوری اون متغیر ارسال شده را بگیرم و تو یک متغیر بریزم

delphiprog3000
سه شنبه 12 شهریور 1387, 17:49 عصر
با سلام.

دوست عزیزم من یک نمونه از حالت Return_value در sp رو میزارم.

با استفاده از شی Adostore proc



if (Sp_insert_person1.Parameters.ParamByName('@return _value').Value=-1) Then
ShowMessage('tekrari');


به این صورت مقدار رو از Sp فراخوانی میکنیم.

دقیقا مثل پارامترهای دیگر..

mahnaz_h
سه شنبه 12 شهریور 1387, 17:59 عصر
با سلام.

دوست عزیزم من یک نمونه از حالت Return_value در sp رو میزارم.

با استفاده از شی Adostore proc



if (Sp_insert_person1.Parameters.ParamByName('@return _value').Value=-1) Then




ShowMessage('tekrari');





به این صورت مقدار رو از Sp فراخوانی میکنیم.




دقیقا مثل پارامترهای دیگر..





همین رو خواستم بنویسم منتها parambyname فعال نمی شد
چرا؟ نمیدونم! ربطی به اینکه متغیرم از نوع int هست داره؟!

mahnaz_h
سه شنبه 12 شهریور 1387, 18:08 عصر
var Id : integer
Id := Parameters.ParamByName(@Id).Value;
منظورم یه همچین دستوریه
متاسفانه اینerror میده
نمی دونم کجاش اشتباست!

delphiprog3000
سه شنبه 12 شهریور 1387, 18:35 عصر
آیا قبل از فراخوانی Adostoreproc رو صدا میزنید.

لطفا کدتون رو به صورت کامل قرار دهید .

delphiprog3000
سه شنبه 12 شهریور 1387, 18:41 عصر
var Id : integer
Id := Parameters.ParamByName(@Id).Value;
منظورم یه همچین دستوریه
متاسفانه اینerror میده
نمی دونم کجاش اشتباست!


یادتون باشه برای اختصاص دادن مقدار به یک متغییر قبلا باید Sp رو Exec کرده باشید.

mahnaz_h
چهارشنبه 13 شهریور 1387, 21:17 عصر
CREATE PROCEDURE SPShop (@Nname varchar (20),@Family varchar (30),@Tel varchar (13),
@Address varchar (100),@SarGhofli bit , @Malekiat bit ,@Mogheiat varchar (6), @Emtiazat varchar (4),@NoeMoamele varchar(1),
@Pardakht1 float , @Pardakht2 float,@Metraj int, @BalkonChandMetr int , @Tozihat varchar (200)) AS
declare @Id int
begin
insert into TShop (Nname,Family,Tel, Address,sarGhofli,Malekiat,Mogheiat,Emtiazat,NoeMo amele,Pardakht1,Pardakht2,Metraj,BalkonChandMetr,T ozihat)
values (@Nname,@Family,@Tel,@Address,@SarGhofli, @Malekiat ,@Mogheiat, @Emtiazat, @NoeMoamele,@Pardakht1,@Pardakht2,@Metraj, @BalkonChandMetr , @Tozihat)
set @Id='select id from TShop'
execute (@id)
return(@id)
end
GO




with ADOStoredProc1 do
begin
Parameters.ParamByName('@Nname').Value := trim(txtName.Text);
Parameters.ParamByName('@Family').Value := trim(txtFamili.Text);
Parameters.ParamByName('@Tel').Value := trim(txtTel.Text);
Parameters.ParamByName('@Address').Value := trim(memoAddress.Text);
Parameters.ParamByName('@Sarghofli').Value := TsarGhofli;
Parameters.ParamByName('@Malekiat').Value := Tmalekiat;
Parameters.ParamByName('@Mogheiat').Value := Tmogheiat;
Parameters.ParamByName('@Emtiazat').Value := Temtiazat;
if pagecontrol1.ActivePage = TabSheet4 then
begin
Parameters.ParamByName('@NoeMoamele').Value := 'f' ;
parameters.ParamByName('@Pardakht1').Value := StrToFloat(txtGheimateKol.Text) ;
Parameters.ParamByName('@Pardakht2').Value := StrToFloat(txtGheimateMetri.Text) ;
end else if pagecontrol1.ActivePage=TabSheet5 then
begin
Parameters.ParamByName('@NoeMoamele').Value := 'r' ;
Parameters.ParamByName('@Pardakht1').Value := StrToFloat(txtRahn.Text) ;
Parameters.ParamByName('@Pardakht2').Value := 0 ;
end else if pagecontrol1.ActivePage = TabSheet6 then
begin
Parameters.ParamByName('@NoeMoamele').Value := 'e' ;
Parameters.ParamByName('@Pardakht1').Value := StrToFloat(txtPishpul.Text) ;
Parameters.ParamByName('@Pardakht2').Value := StrToFloat(txtEjare.Text) ;
end;

Parameters.ParamByName('@Metraj').Value := StrToFloat(txtMetraj.Text);
if chkBalkon.Checked then
Parameters.ParamByName('@BalkonChandMetr').Value := StrToInt(txtMetrajBalkon.Text)
else
Parameters.ParamByName('@BalkonChandMetr').Value :=StrToInt('0');
Parameters.ParamByName('@Tozihat').Value := trim(MemoTozihat.Text);
Id := Parameters.ParamByName(@Id).Value; ************ مشکل اینجاست
ADOStoredProc1.ExecProc;
end;

mahnaz_h
چهارشنبه 13 شهریور 1387, 21:19 عصر
ببخشید دیر شد . اوضاع برق و اینترنت خیلی قاطی بود نمی تونستم کانکت شم
مرسی

mahnaz_h
پنج شنبه 14 شهریور 1387, 09:49 صبح
یکی جوابمو بده!

Touska
پنج شنبه 14 شهریور 1387, 10:42 صبح
شما باید اول SP تون اجرا کنید بعد جواب بگیرید :


Parameters.ParamByName('@Tozihat').Value := trim(MemoTozihat.Text);
ADOStoredProc1.ExecProc;
Id := Parameters.ParamByName(@Id).Value; ************ مشکل اینجاست

تا اجرا نشه که نمی تونه خروجی بده.

موفق باشید :)

mahnaz_h
پنج شنبه 14 شهریور 1387, 15:00 عصر
اهاااااان
مرسی
ایشالله که درست میشه1