View Full Version : سوال: مشکل در استفاده از Stored Procedure
beginner63
پنج شنبه 20 تیر 1387, 12:36 عصر
سلام
برنامه ای نوشتم که برای insert و update دیتابیسم از stored procedure در sql server استفاده می کنم.
کد زیر رو ببینید:
with sp do
begin
Close;
ProcedureName:='insert_in_table';
Prepared:=True;
Parameters.ParamValues['@percode']:=trim(edPercode.Text);
.
//some code
.
.
ExecProc;
end;مشکل اینجاست که کد بالا فقط زمانی کار میکنه که در زمان طراحی ProcedureName مربوط به AdoStoredProcرو مقدار دهی کرده باشم, در غیر این صورت پیام خطای زیر رو میگیرم:
sp: Parameter '@percode' not found.یه مشکل دیگه زمانی هست که در زمان طراحی ProcedureName رو مقدار دهی کنم و بعد میخوام در زمان اجرا نام پروسیجر مورد استفاده رو عوض کنم. که باز هم پیام خطای بالا رو میگیرم.
لطفا راهنمایی کنید
beginner63
پنج شنبه 20 تیر 1387, 21:04 عصر
یک سوال دیگه!
چرا این زیر انجمنهای دلفی اینقدر کم بازدید هست؟؟؟!!!
از وقتی که این پست رو زدم در عرض 8 ساعت فقط 6 بازدید داشته, اما در بخش مباحث مربوط به برنامه نویسی در Delphi که یک رده بالاتر از این بخش هست از اون زمانی که من پست زدم بیش از 10 تاپیک با پست های مختلف به روز شده!
اگر واقعا این انجمنها بازدید نداره چرا من قوانین رو رعایت کنم و سوالم رو در جای مخصوص بپرسم؟
لطفا مدیران گرامی فکری برای این بخش ها هم بکنند
تشکر
vcldeveloper
پنج شنبه 20 تیر 1387, 22:52 عصر
مشکل اینجاست که کد بالا فقط زمانی کار میکنه که در زمان طراحی ProcedureName مربوط به AdoStoredProcرو مقدار دهی کرده باشم, در غیر این صورت پیام خطای زیر رو میگیرم
نباید انتظار داشته باشید که شی ایی که هنوز آن را نساختید، کار هم بکنه. شما تا وقتی که پارامتر Percode@ را نساختید، نمی تونید ازش استفاده کنید؛ بجای ParamValue از CreateParam استفاده کنید تا پارامتر شما ساخته شود.
اگر واقعا این انجمنها بازدید نداره ...
اینکه به سوال شما جواب داده نشده، دلیلی بر بدون بازدید بودن این انجمن ها نیست.
چرا من قوانین رو رعایت کنم و سوالم رو در جای مخصوص بپرسم؟
چون قوانین هست و اگر رعایت نکنید، سوالتان پاک میشه.
delphiprog3000
جمعه 21 تیر 1387, 10:44 صبح
با سلام.
این لینکها میتونه کمکتون کنه:
http://barnamenevis.org/forum/showthread.php?t=104378
http://barnamenevis.org/forum/showthread.php?t=84612
موفق باشید.............
beginner63
شنبه 22 تیر 1387, 08:15 صبح
نباید انتظار داشته باشید که شی ایی که هنوز آن را نساختید، کار هم بکنه. شما تا وقتی که پارامتر Percode@ را نساختید، نمی تونید ازش استفاده کنید؛ بجای ParamValue از CreateParam استفاده کنید تا پارامتر شما ساخته شود.اما من در sp كه در sql server ساختم، پارامتر رو مي سازم:
CREATE PROCEDURE [dbo].[insert_into_pers]
(@percode[float](7),
.
//some code
.
يعني در دلفي هم همين كارها رو انجام بدم؟
يك سوال ديگه:
چرا وقتي در زمان طراحي ميخوام procedurename رو مقدار دهي كنم، بعد از نام sp يه ;1 هم اضافه ميشه؟ مثل زير:
nsert_into_pers;1
vcldeveloper
شنبه 22 تیر 1387, 16:56 عصر
اما من در sp كه در sql server ساختم، پارامتر رو مي سازم
وقتی در زمان طراحی SP را انتخاب می کنید، دلفی پارامترها را برای شما میسازه، ولی وفتی در زمان اجرا SP را انتخاب می کنید، خودتون باید به دلفی بگید که چه پارامترهایی داره. البته بعضی کامپوننت ها مثل SDAC خودشون در زمان اجرا هم پارامترها را بطور خودکار میسازند.
چرا وقتي در زمان طراحي ميخوام procedurename رو مقدار دهي كنم، بعد از نام sp يه ;1 هم اضافه ميشه؟
چک نکردم، ولی فکر کنم این مقدار پیش فرض پارامتری باشه که برای SP تعریف کردید.
beginner63
یک شنبه 23 تیر 1387, 08:43 صبح
وقتی در زمان طراحی SP را انتخاب می کنید، دلفی پارامترها را برای شما میسازه، ولی وفتی در زمان اجرا SP را انتخاب می کنید، خودتون باید به دلفی بگید که چه پارامترهایی داره.
تشكر حل شد.
چک نکردم، ولی فکر کنم این مقدار پیش فرض پارامتری باشه که برای SP تعریف کردید.
اين رو براي sp هاي پيش فرض ديتابيس هم مياره، ممكنه هم به خاطر نوع sp ها باشه.
به هر حال ممنون. موفق باشيد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.