نوشته شده توسط
kiani.mehdi
همونطور که میدونید اکسس قابلیتی مثل SP ها در SQL SERVER نداره
با همون Query های موجود در Access میشه عملکردی مشابه SP ها ایجاد کرد (البته نه دقیقا با امکانات SQLServer) ولی ارسال پارامتر که ساده ترین کارشه!
کافیه در حالت ویژوال کار نکنید و دستی Query ها رو بنویسید ، به Help خود Access هم یک نگاهی بندازید توضیح داده.
مثلا :
اول وارد SQLView شوید (عکس زیر را ببینید) بعد دستورات زیر را تایپ کنید:
PROCEDURE myProcedure [pID] Number,[pname] Text(50);
INSERT INTO Table1 ([ID],[Name]) VALUES ([pID],[pname])
حالا در Access یک SP دارید!
نکته آخر این که حتی لازم نیست شما PROCEDURE هم تعریف کنید ، خیلی راحت در حالت SQLView کوئری مورد نظر را بنویسید، مثلا یک SELECT بنویسید که چند تا پارامتر دخلش استفاده شده باشه ، کار تمومه و نیازی بهمعرفی کردن پارامترها هم نیست Access خودش اتوماتیک در زمان اجرای کوئری پارامترها و نوع اونها رو شناسایی میکنه و مقادیر اونها رو درخواست میکنه!
به همین راحتی.
مثلا این یک کوئری که قبلا در Access نوشته بودم و داخلش پارامتر داره :
SELECT SUM(DailyDeal.LastPrice*PortfolioContent.Count)
FROM DailyDeal, PortfolioContent, Company
WHERE DealDate IN (SELECT MAX(DealDate) AS MAXDate FROM DailyDeal GROUP BY CompanyID) AND DailyDeal.CompanyID = PortfolioContent.CompanyID AND PortfolioContent.CompanyID=Company.ID AND PortfolioContent.PortfolioID=pid;
بعد مثلا این کوئری رو با اسم PortfolioSUM ذخیره میکنید و بقیه کارها مثل SQL هستش:
مثلا برای کار کردن تو دات نت هم یک راهش اینه:
OleDbConnection con = newOleDbConnection("ConnectionString");
OleDbCommand cmd = newOleDbCommand("PortfolioSUM",con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("pid", OleDbType.Numeric).Value = 1;
con.Open();
//data manipulation
con.Close();
فقط دقت کنید نوشتن کوئری در ACCESS به راحتی SQL Server نیست چون اولا در حالت SQL View امکانات Query Analyzer را در اختیار ندارید ثانیا این که Access در حد SQLServer از زبان SQL پشتیبانی نمی کند و این باعث میشه بعضی کوئری هایی که در SQL Server در یکی دو خط خلاصه میشن در Access چندین خط بشن.