PDA

View Full Version : مشکل شدید ! با مقدار دهی AdoStoredProcedure‌در زمان اجرا



Babak-Aghili
جمعه 26 خرداد 1385, 19:24 عصر
سلام؛

AdoStoredProc را این دفعه لازم شده که RunTime مقدار دهی کنم.

من این کار را کردم :


DM.SP1.ConnectionString:= ServerConStr;
DM.SP1.ProcedureName:= 'spLogin';
که خب متغیر ServerConStr ، همون کانکشن استرینگ هست که البته تست کردم و صحیح بود.

و بعد از اون کدها هم مثل همیشه ، پارامترهام را مقدار دهی کردم و الخ.....

ولی موقع اجرا ، خطا میگیره و میگه که اون پارامترهام ( پارامترهای ورودی به SP ) را پیدا نکرده : not found

حالا چند تا سوال :

1- نام SP را توی خود SqlServer ، گذاشته ام spLogin . ولی در محیط دلفی ، بصورت spLogin;1 لیست میکند. حالا بالاخره کدوم اسم را بنویسم ؟ ( البته با هردوتاش تست کردم. خطا همچنان باقی بود )

2- وقتی اون تا خاصیت را Runtime تعریف کنم ، مگر خودش نباید بتونه به سراغ SP مربوطه برود پارامترها را لیست کنه ( همون کاری که زمان طراحی خودش انجام میده ). ...؟؟؟

3- بسیارخب ! فرض کنیم حالا که اون دوتا خاصیت را RunTime‌مقدار دهی کردم ، بگیم که باید پارامترها را هم خودم زمان اجرا براش تعریف کنم با متد CreateParameter


DM.SP1.Parameters.CreateParameter('@userid',ftStri ng, pdInput, 10, nil);
بدبختی اینه که روی این کد هم دوتا خطای جدید میگیره :
خطای اول : میگه ftString را declare نکرده ام !!!
خطای دوم : میگه Incompatible Types : OLEVariant and Pointer

ایهاالناس ! F1 !

m-khorsandi
دوشنبه 12 تیر 1385, 09:01 صبح
بابک جان ،
بعد از مقداردهی ConnectionString و ProcedureName لیست پارامترها رو Refresh کن:


DM.SP1.Parameters.Refresh;

ghabil
دوشنبه 12 تیر 1385, 17:45 عصر
من این سوال رو قبلا جواب داده بودم منتها نمیدونم چرا کلی سایت عقبگرد کرده برگشت به قدیما ، فکر کنم دیتاها پریده Backup قدیمی برگردوندند .

به هر حال مشکل اول با اضافه کردن یونیت DB و مشکل دوم با تبدیل کردن nil به Null حل میشه .