نمایش نتایج 1 تا 9 از 9

نام تاپیک: کوئری های اکسس

  1. #1
    محروم شده
    تاریخ عضویت
    اردیبهشت 1386
    پست
    193

    کوئری های اکسس

    همونطور که میدونید اکسس قابلیتی مثل SP ها در SQL SERVER نداره
    تو SP ها میتونید متغیر تعریف کرده و انها را از C#‎ به SP پاس دهید
    توی اکسس چطوری میشه این کار را کرد؟
    یعنی کوئری بنویسید که بشه با متغیر آنها را کنترل کرد

  2. #2
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111
    دوست عزیز پیشنهاد من این است که یک تابع در سی شارپ بنویسید که پارامترها را گرفته و رشته sql لازم را تولید کند و نهایتا این کد sql را به اکسس بفرستید

  3. #3
    محروم شده
    تاریخ عضویت
    اردیبهشت 1386
    پست
    193
    نقل قول نوشته شده توسط ghafoori مشاهده تاپیک
    دوست عزیز پیشنهاد من این است که یک تابع در سی شارپ بنویسید که پارامترها را گرفته و رشته sql لازم را تولید کند و نهایتا این کد sql را به اکسس بفرستید
    مگه فقط یه نوع کوئری داریم که یه تابع بنویسم؟
    انتظار هم که نداری یه تابع بتونه انواع و اقسام کوئری ها را تولید کنه
    overload کردن هم که فکر نکنم خیلی جالب باشه
    برای هر کوئری هم که نمیشه یه تابع نوشت
    با این حساب فکر نمی کنم راه حل خوبی باشه
    به هر حال از جوابت ممنون
    بقیه دوستان پیشنهادی ندارن؟

    موفق باشید
    مهدی کیانی

  4. #4
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111

    Smile

    مگه فقط یه نوع کوئری داریم که یه تابع بنویسم؟
    دوست عزیز شما هم داخل sql server هم یک sp ندارید حالا بجای هر sp یک تابع داخل سی شارپ می نویسید که کار ان sp را شبیح سازی کند
    انتظار هم که نداری یه تابع بتونه انواع و اقسام کوئری ها را تولید کنه
    overload کردن هم که فکر نکنم خیلی جالب باشه
    برای هر کوئری هم که نمیشه یه تابع نوشت
    اتفاقا میشه اما فکر نکنم جالب باشه یک تابع بنویس که یک متغییر int بگیرد و یک رایه از sting متغییر اولی نوع کوئری را که تابع باید تولید کند مشخص می کند و ارایه هم بارمترهای کوئری را در خود دارد نهایتا این تابع همیشه یک کد sql به شما تحویل می دهد

  5. #5
    محروم شده
    تاریخ عضویت
    اردیبهشت 1386
    پست
    193
    راه جالبی نیست
    یعنی راه حل دیگه ای وجود نداره؟
    بقیه دوستانی که با اکسس برنامه نوشتن تاحالا به یه همچین موضوعی فکر نکردن؟
    یا اینکه فقط کوئری می نویسند ؟
    من خیلی از برنامه های بزرگ را هم دیدم که دیتا بیس اونا اکسس بوده
    یعنی اونا هم فقط ار کوئری های متنی استفاده می کنند؟

  6. #6
    نقل قول نوشته شده توسط 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 چندین خط بشن.
    عکس های ضمیمه عکس های ضمیمه

  7. #7
    تو همین حالت میشه دوتا INSERT باهم انجام داد؟

  8. #8
    نقل قول نوشته شده توسط once4ever مشاهده تاپیک
    تو همین حالت میشه دوتا INSERT باهم انجام داد؟
    فکر نمیکنم بشه چون تا جایی که میدونم Access در Query ها فقط یک دستور رو قبول میکنه.

    مگر این که در قسمت VB برنامه بنویسید!

  9. #9
    کاربر دائمی آواتار Sorenaa_s
    تاریخ عضویت
    اردیبهشت 1386
    سن
    43
    پست
    115
    می تونید VB Function بنویسید و از تو برنامتون اونو صدا بزنید.
    http://support.microsoft.com/kb/317114

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •