ورود

View Full Version : سوال: مشکل در کار با یک sp در دلفی



hamid-nic
یک شنبه 11 مهر 1389, 01:03 صبح
سلام دوستان وقتتان بخیر
یک sp در بانک اطلاعاتی SQL Server نوشتم که کار جست و جوی دینامیک را انجام میده و تقریباً یه 10 تایی پارامتر اختیاری می گیره . توی دلفی برای گزارش ها از یک sp استفاده کردم و همه ی گزارش ها را به یک AdoStoredProc متصل کردم .
به این شکل از اون استفاده می کنم (مثلا برای یک نوع گزارش ) :
MainDataModule.SPSearchDynamic.Close ;
MainDataModule.SPSearchDynamic.Parameters.ParamByN ame('@FirstTimeDate').value:=(FirstTime);
MainDataModule.SPSearchDynamic.Parameters.ParamByN ame('@LastTimeDate').value:=(LastTime);
MainDataModule.SPSearchDynamic.Parameters.ParamByN ame('@CodeDriver').value:=StrToint(AdvDBLookupComb oBox1.Text);
MainDataModule.SPSearchDynamic.ExecProc ;
MainDataModule.SPSearchDynamic.Active :=true;

برای گزارش های دیگه هم به همین ترتیب استفاده می شه فقط پارامتر هاش فرق می کنه .
مشکل اینجاست که پس از چند بار استفاده از گزارش های مختلف دیگه جست و جو انجام نمیشه و باید برای جواب گرفتن حداقل یک بار برنامه را بسته و دوباره اجرا کنم .
احساس می کنم که پارامتر ها پس از چندین بار استفاده در گزارش های مختلف ، مقادیر را در خود نگه می دارند و باعث میشه که جست و جو درست انجام نشه .
آیا این روش که استفاده کردم درست هست یا نه ؟ و به نظر شما چگونه این مشکل را برطرف کنم ؟

devil00x
یک شنبه 11 مهر 1389, 07:13 صبح
یعنی شما در برنامه تون از همین یک AdoStoredProc استفاده می کنید و در همه فرمها همین رو فراخوانی میکنید.

hamid-nic
یک شنبه 11 مهر 1389, 07:50 صبح
یعنی شما در برنامه تون از همین یک AdoStoredProc استفاده می کنید و در همه فرمها همین رو فراخوانی میکنید.
در مورد گزارش ها بله چون اکثر گزارش ها شبیه به هم هستند و با همون sp و ارسال پارامتر های مختلف به نتیجه می رسم .

hamid-nic
دوشنبه 12 مهر 1389, 10:30 صبح
دوستان روشی یا راهکاری پیشنهاد نمی کنید ؟:متفکر:

arshad89
دوشنبه 12 مهر 1389, 11:20 صبح
سلام
فکر می کنم مشکل در نوع مقداردهی به sp باشه
این نوع مقدار دهی رو امتحان کن ببین درست نمیشه؟؟
من هم مشابه این کار رو کردم ولی مشکلی مثل تو نداشتم. حالا اینو امتحان کن ببین درست نمیشه؟؟


MainDataModule.SPSearchDynamic.Parameters[0].value:=(FirstTime);
MainDataModule.SPSearchDynamic.Parameters[1].value:=(LastTime);


دقت کنید که پارامترهاتون تو sp از 0 شروع میشوند تا آخر.هر پارامتری که قراره مقدار بگیره
باید شماره پارامتر در sp رابدانید و به همان پارامتر مقدار ارسال کنید.

hamid-nic
دوشنبه 12 مهر 1389, 18:31 عصر
سلام
فکر می کنم مشکل در نوع مقداردهی به sp باشه
این نوع مقدار دهی رو امتحان کن ببین درست نمیشه؟؟
من هم مشابه این کار رو کردم ولی مشکلی مثل تو نداشتم. حالا اینو امتحان کن ببین درست نمیشه؟؟
سلام
ممنون ولی این طریقه ی پاس دادن پارامتر به sp فکر نکنم تفاوتی داشته باشه .
مشکل اینه که بعد از چند بار استفاده کردن دیگه sp جواب نمی ده :متفکر:
نظرتون درباره تکه کد زیر چیه ؟

Parameters.Refresh;
مشکلی را حل نمی کنه ؟:متفکر:

A.Nemati
یک شنبه 18 مهر 1389, 23:51 عصر
MainDataModule.SPSearchDynamic.Parameters.Refresh

قبل از مقدار دهي به پارامترها (بعد از Close) اين كد را بگذار