• چگونه از پرس و جوی SQL در Microsoft Access VBA داده دریافت کنیم؟ نحوه ارسال پرس و جو به پایگاه داده در VBA پرس و جوهای دسترسی به پایگاه داده INSERT, UPDATE, DELETE در VBA

    این درس در مورد پرس و جوهای SQLبه پایگاه داده در دسترسی به VBA. ما به نحوه انجام پرس‌وجوهای VBA INSERT, UPDATE, DELETE در پایگاه داده خواهیم پرداخت و همچنین یاد خواهیم گرفت که چگونه یک مقدار خاص را از یک کوئری SELECT بدست آوریم.

    کسانی که برنامه نویسی می کنند دسترسی به VBAو در حین کار با پایگاه داده سرور SQL، اغلب با یک کار ساده و ضروری مانند ارسال یک پرس و جوی SQL به پایگاه داده مواجه می شوند، خواه INSERT، UPDATE یا یک پرس و جو ساده SQL SELECT. و از آنجایی که ما برنامه نویسان مبتدی هستیم، باید بتوانیم این کار را نیز انجام دهیم، بنابراین امروز همین کار را انجام خواهیم داد.

    ما قبلاً به موضوع دریافت داده از یک سرور SQL پرداخته ایم، جایی که برای به دست آوردن این داده ها کدی را در VBA نوشتیم، به عنوان مثال، در مقاله ای در مورد آپلود داده ها در یک فایل متنی از MSSql 2008 یا همچنین کمی در مطالب بارگذاری داده ها از دسترسی به یک قالب Word و Excel لمس کردیم، اما به هر نحوی در آنجا ما آن را کمی سطحی تر در نظر گرفتیم که در مورد آن صحبت کنیم.

    توجه داشته باشید! تمام مثال‌های زیر با استفاده از یک پروژه Access 2003 ADP و یک پایگاه داده MSSql 2008 مورد بحث قرار گرفته‌اند.

    داده های اولیه برای مثال

    فرض کنید یک جدول test_table داریم که شامل اعداد و نام ماه‌های یک سال است (پرس و جوها با استفاده از استودیوی مدیریت)

    جدول ایجاد کنید.( NOT NULL، (50) NULL) در حال حرکت

    همانطور که گفتم، ما از یک پروژه ADP استفاده خواهیم کرد که برای کار با MS SQL 2008 پیکربندی شده است، که در آن یک فرم آزمایشی ایجاد کردم و یک دکمه شروع با یک عنوان اضافه کردم. "اجرا کن"، که ما باید کد خود را آزمایش کنیم، i.e. ما تمام کدها را در کنترل کننده رویداد می نویسیم " دکمه را فشار دهید».

    پرس و جوهای پایگاه داده INSERT, UPDATE, DELETE در VBA

    برای اینکه آن را برای مدت طولانی طولانی نکنیم، بیایید شروع کنیم، فرض کنید باید یک ردیف به جدول آزمایشی خود اضافه کنیم ( کد نظر داده شده است)/

    Private Sub start_Click() "متغیری را برای ذخیره رشته پرس و جو اعلام کنید Dim sql_query به عنوان رشته "پرس و جوی مورد نیاز خود را در آن بنویسید sql_query = "INSERT INTO test_table (id, name_mon) VALUES ("6", "June")" "Execute it Dosql_Cmry.

    در این حالت، پرس و جو با استفاده از تنظیمات اتصال پایگاه داده فعلی اجرا می شود. ما می توانیم بررسی کنیم که آیا داده ها اضافه شده اند یا خیر.

    همانطور که می بینید، داده ها درج شده است.

    برای حذف یک خط کد زیر را می نویسیم.

    Private Sub start_Click() "متغیری را برای نگه داشتن رشته پرس و جو اعلام کنید کمرنگ sql_query به عنوان رشته "یک درخواست حذف را در آن بنویسید sql_query = "حذف test_table WHERE id = 6" "آن را اجرا کنید DoCmd.RunSQL sql_query End Sub

    اگر بررسی کنیم می بینیم که خط مورد نظر حذف شده است.

    برای به روز رسانی داده ها، یک کوئری به روز رسانی به متغیر sql_query می نویسیم، امیدوارم معنی آن واضح باشد.

    پرس و جو به پایگاه داده در VBA را انتخاب کنید

    در اینجا چیزها کمی جالب تر از سایر ساختارهای SQL هستند.

    ابتدا فرض کنید باید تمام داده ها را از جدول دریافت کنیم و مثلاً آن ها را پردازش کرده و در یک پیام نمایش می دهیم و شما البته می توانید برای مقاصد دیگر از آن استفاده کنید، برای این کار کد زیر را می نویسیم.

    Private Sub start_Click() "اعلام متغیرها "برای یک مجموعه رکورد از پایگاه داده Dim RS به عنوان ADODB.Recordset "رشته پرس و جو کم نور sql_query به عنوان رشته "رشته برای نمایش کل داده ها در پیام Dim str As String "ایجاد یک شی جدید برای رکوردها مجموعه RS = New ADQuRing" M test_table" "پرس و جو را با استفاده از پروژه تنظیمات اتصال فعلی RS.open sql_query، CurrentProject.Connection، adOpenDynamic، adLockOptimistic "حلقه بین رکوردها در حالی که Not (RS.EOF) "پر کردن متغیر برای نمایش پیام str = str. & RS. & RS.Fields" رفتن به رکورد بعدی RS.MoveNext Wend "خروجی پیام msgbox str End Sub

    در اینجا ما از حلقه های دسترسی VBA برای حلقه زدن تمام مقادیر موجود در مجموعه رکوردهای خود استفاده می کنیم.

    اما اغلب اوقات لازم است که نه همه مقادیر را از مجموعه ای از رکوردها، بلکه فقط یک مورد، به عنوان مثال، نام ماه را با کد آن دریافت کنید. و برای این کار، استفاده از یک حلقه به نوعی گران است، بنابراین می توانیم به سادگی یک پرس و جو بنویسیم که فقط یک مقدار را برمی گرداند و به آن رجوع کنیم، به عنوان مثال، نام ماه را با کد 5 دریافت می کنیم.

    Private Sub start_Click() "اعلام متغیرها "برای یک مجموعه رکورد از پایگاه داده Dim RS به عنوان ADODB.Recordset "رشته پرس و جو کم نور sql_query به عنوان رشته "رشته برای خروجی مقدار نهایی Dim str به عنوان رشته "ایجاد یک شی جدید برای مجموعه رکوردها RS = New ADQl_Recordry" قادر WHERE id = 5" تنظیمات اتصال پروژه فعلی RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "دریافت مقدار ما str = RS.Fields(0) msgbox str End Sub

    برای جهانی بودن، در اینجا ما قبلا نه با نام سلول، بلکه با شاخص آن، یعنی. 0 که اولین مقدار در است مجموعه رکورد، در پایان ما به ارزش رسیدیم "ممکن است".

    همانطور که می بینید، همه چیز بسیار ساده است. اگر اغلب نیاز به دریافت یک مقدار خاص از پایگاه داده دارید ( مانند آخرین مثال، سپس توصیه می کنم تمام کدها را در یک تابع جداگانه (نحوه نوشتن یک تابع در VBA Access 2003) با یک پارامتر ورودی، به عنوان مثال، کد ماه ( با توجه به مثال ما) و به سادگی، در جایی که لازم است این مقدار را نمایش دهیم، تابع مورد نیاز خود را با پارامتر لازم فراخوانی کنیم و تمام، کد VBA را به میزان قابل توجهی کاهش می دهیم و درک برنامه خود را بهبود می بخشیم.

    برای امروز کافی است. موفق باشید!

    سلام، من به تازگی چیزی در مورد نحوه قرار دادن دستورات SQL خود در VBA (یا حداقل نوشتن آنها) یاد گرفتم، اما نمی دانم چگونه داده های برگشتی را دریافت کنم؟

    من چند فرم (نمودار فرم) بر اساس پرس و جوهایی دارم که به طور منظم در برابر تغییر فقط در بازه های زمانی اجرا می کنم (مثلاً 10 فروش برتر در هر ماه). سپس من رویه هایی دارم که به طور خودکار شی نمودار را به ارائه پاورپوینت منتقل می کند. بنابراین من تمام این پرسش‌ها را از پیش ساخته شده‌ام (مثلاً 63)، و یک شکل نمودار برای مطابقت (خوب بله... 63... می‌دانم که بد است)، و سپس همه این موارد بر روی یک رویداد «باز/بستن» ساخته می‌شوند، که به رویداد بعدی منتهی می‌شود (این بهترین تلاش من برای هک شدن است... یا دومینو، هر کدام که شما ترجیح می‌دهید).

    بنابراین من سعی کرده ام یاد بگیرم که چگونه از دستورات SQL در VBA استفاده کنم تا در نهایت بتوانم همه آن را در آنجا انجام دهم (ممکن است لازم باشد همه آن اشکال نمودار را ذخیره کنم، اما نمی دانم زیرا واضح است که درک ندارم).

    بنابراین جدا از سوالی که در طبقه بالا پرسیدم، چه کسی می تواند راهنمایی کند؟ متشکرم

    6 پاسخ

    10

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

    تیره کردن dbs به عنوان پایگاه داده کم نور rs به ​​عنوان مجموعه رکورد تیره strSQL به عنوان مجموعه رشته ای dbs = CurrentDb strSQL = "پرس و جوی شما در اینجا rs = dbs.OpenRecordset(strSQL) را تنظیم کنید اگر نه (rs.EOF و rs.BOF) سپس rs.MoveFirst.First "با استفاده از نتایج El.

    پشت کامنت: نگاهی به کلاس رکوردها بیندازید. این شامل مجموعه ای به نام فیلدها است که ستون هایی هستند که از پرس و جو شما برگردانده می شوند. بدون دانستن مدار خود، گفتن آن سخت است، اما چیزی شبیه به ...

    Rs.MoveFirst Do while Not rs.EOF "کاری شبیه rs("SomeFieldName") انجام دهید rs.MoveNext Loop

    همانطور که گفتم، بهتر است کتابی در این زمینه بگیرید، آنها نمونه های زیادی دارند.

    از QueryDef پارامتری استفاده کنید و آن را از VBA فراخوانی کنید.
    طراحی پرس و جو ساده تر است...آسان قابل آزمایش است...و با استفاده از VBA یا فرم به راحتی قابل دسترسی است.

    کم رنگ کردن qd به عنوان querydef مجموعه qd = currentdb.querydefs!myquerydef qd.parameters!parm1=val1

    یا qd.execute

    تیره کردن rs به ​​عنوان مجموعه رکورد rs = qd.openrecordset()

    در اینجا یک ویژگی وجود دارد که ممکن است آن را مجدداً در نظر بگیرید تا درون خطی قرار دهید و می‌توانید در هر جایی از کد خود دوباره از آن استفاده کنید.

    بنابراین یک رشته برای دستور SQL خود بسازید یا یک رشته بسازید و به عنوان آرگومان، رشته sanitize، NON SQL INJECTION را وارد کنید :)

    StrSQL = "SELECT * FROM Customer WHERE ID = " & EnsureParamIsNotSQLInjection(customerID)

    سپس تابع/sub را از جایی که باید داده/مجموعه رکورد/دستورالعمل را اجرا کنید فراخوانی کنید. با ایجاد توابع/زیرهای دسترسی به داده های متعدد که در آن می توانید فقط یک عبارت UPDATE را اجرا کنید یا یک مقدار واحد را بازیابی کنید یا رکوردهای کامل را بازیابی کنید.

    نکته کلیدی در اینجا این است که همه این ویژگی ها در یک مکان زندگی می کنند و از آنها در همه جا استفاده می شود. در اینجا یک مثال در VBScript آورده شده است.

    sub dostuff (strsql) adocon = server.createObject ("adodb.connection") strconnstring = "ارائه دهنده = microsoft.jet.oledb.4.0 ؛ منبع داده =" & server.mappath ("db \ database.mdb") "strconnstring =" "(میکروسافت درایور (***********، Dbq = "& server.mappath (" db \ database.mdb ") adocon.open strConstring مجموعه rsmain = server.createobject (" adodb.recordset ") rsmain.open strsql، adocon do whole not rsma in.eof cufername = " rsmainMomerly. RSMain.Close set adocon = Nothing ent Sube

    راه دیگری برای انجام این کار، که به نظر می رسد هیچ کس به آن اشاره نکرده است، پیوند طرح خود به یک QueryDef ذخیره شده است و سپس در زمان اجرا، QueryDef را بازنویسی کنید. اکنون، تغییر QueryDef‌های ذخیره‌شده را برای اکثر زمینه‌ها توصیه نمی‌کنم، زیرا باعث نفخ جلویی می‌شود و معمولاً حتی ضروری نیست (در اکثر زمینه‌هایی که از QueryDef‌های ذخیره‌شده استفاده می‌کنید، می‌توان به هر طریقی فیلتر شود، در زمینه‌ای که در آن استفاده می‌شود، برای مثال، به عنوان یکی از فرم‌های RecordSource، فقط یک آرگومان را به DoCmd.Open Form می‌دهید).

    نمودارها متفاوت هستند زیرا نمودارهای محرک SQL را نمی توان در زمان اجرا تغییر داد.

    برخی از آنها گزینه‌هایی را پیشنهاد کردند، اما باز کردن یک فرم با یک نمودار روی آن که از یک رشته SQL با گزینه‌ها استفاده می‌کند، دیالوگ‌های گزینه‌های پیش‌فرض را باز می‌کند. یکی از راه‌های جلوگیری از این امر، استفاده از یک فرم محاوره‌ای برای جمع‌آوری معیارها، و تنظیم ارجاع به کنترل‌های موجود در گفتگو به عنوان پارامتر و غیره است:

    مولفه های!! طولانی؛

    اگر از پیوندهای فرم استفاده می کنید، مهم است که این کار را انجام دهید، زیرا از Access 2002 به بعد، سرویس Jet Expression همیشه وقتی کنترل ها خالی هستند، آنها را به درستی مدیریت نمی کند. مشخص کردن آنها به عنوان پارامتر این مشکل را برطرف می کند (که قبل از Access XP وجود نداشت).

    یکی از شرایطی که در صورت تمایل باید QueryDef را برای یک نمودار بازنویسی کنید این است که به کاربر اجازه دهید N را در یک عبارت TOP N SQL انتخاب کند. به عبارت دیگر، اگر می خواهید بتوانید TOP 5 یا TOP 10 یا TOP 20 را انتخاب کنید، باید QueryDef ذخیره شده را تغییر دهید، زیرا N نمی تواند پارامتری شود.

    دسترسی داشته باشیدپرس و جوی طراحی شده با سازنده پرس و جو به نام "myQuery" را ذخیره کرد. پایگاه داده از طریق یک اتصال ODBC به سیستم متصل می شود. ماکروها همه گنجانده شده اند.

    برتری داشتندارای یک اتصال ADODB برای اتصال به پایگاه داده از طریق

    Dim con As ADODB.Connection Dim rs As ADODB.Recordset Set con = New ADODB.Connection With con .Provider = "Microsoft.ACE.OLEDB.12.0" .باز کردن "MyDatabase.accdb" پایان با

    معمولاً پیش می روید و فقط SQL خود را می نویسید، که کاملاً خوب است، و سپس فقط کاری شبیه به آن انجام می دهید

    Dim sqlQuery As String sqlQuery = "SELECT * FROM myTable" Set rs = New ADODB.Recordset rs.Open sqlQuery, con, ...

    اما من می خواهم به درخواستی که در پایگاه داده دسترسی ذخیره کرده ام دسترسی داشته باشم. بنابراین چگونه می توانم پرس و جو ذخیره شده در پایگاه داده ای را که به تازگی متصل کرده ام فراخوانی کنم.

    قبلاً امتحان شده است

    1. con.Execute ("EXEC myQuery")، اما او به من گفت که نمی توان myQuery را پیدا کرد.
    2. rs. "myQuery"، conاما این یکی نامعتبر است و دستورات SELECT /etc را از آن می خواهد
    vba اکسل vba ms-access-2007 adodb برتری داشتن

    5 پاسخ


    6

    فکر می کنم می توانید آن را به عنوان یک رویه ذخیره شده در نظر بگیرید.

    اگر درست قبل از Dim sqlQuery As String شروع کنیم

    کم نور cmd به عنوان ADODB.Command جدید cmd.CommandType = adCmdStoredProc cmd.CommandText = "myQuery" cmd.ActiveConnection = con تنظیم rs = cmd.Execute()

    سپس کار مجموعه رکورد خود را پس از آن انجام دهید.


    1

    شما تقریباً آنجا بودید

    Dim con As ADODB.Connection Dim rs As ADODB.Recordset Set con = New ADODB.Connection With con .Provider = "Microsoft.ACE.OLEDB.12.0" .باز کردن "z:\docs\MyDatabase.accdb" پایان با con.Quecute "M

    فقط Exek را کنار بگذارید.

    شما همچنین می توانید گزینه هایی را اضافه کنید، این کمی قدیمی است اما باید کمک کند:


    0

    این یک نوع هک است، اما شما می توانید درخواست کنید. یعنی خط sql را با خط زیر جایگزین کنید:

    SqlQuery = "SELECT * FROM QueryName;"

    قبل از اجرای این برنامه، باید مطمئن شوید که پایگاه داده Access ذخیره شده است. Ctrl+S را فشار دهید (برای اجرای پرس و جو در Access کافی نیست).


    0

    من توانستم یک درخواست به روز رسانی را که قبلاً در Access ذخیره شده بود با استفاده از:

    Connection.Execute "My_Update_Query_Already_Saved_In_Access"، adExecuteNoRecords، adCmdStoredProc

    این به من خطا می داد تا اینکه فاصله های موجود در نام query را با زیرخط در پایگاه داده Access و دستور execute جایگزین کردم.


    0

    مدت زیادی از ایجاد این تاپیک می گذرد. اگر همه چیز را به درستی درک کنم، می توانم چیز مفیدی اضافه کنم. من نامی را برای آنچه که OP توصیف می‌کند، گذاشتم، که فرآیند استفاده از SQL از یک کوئری ذخیره شده در ACCDB برای اجرا در VBA از طریق DAO یا ADOBD است. من نام «ارائه‌دهنده اموال شی» را به آن دادم، حتی با علامت اختصاری OPP در یادداشت‌هایم، و پیشوند/پسوند نام شی.

    ایده این است که یک شی موجود در ACCDB (معمولا یک پرس و جو) یک ویژگی (معمولا SQL) را نشان می دهد که باید در VBA استفاده شود. من یک تابع را فقط برای مکیدن SQL از پرس و جوها برای این کار قرار دادم. زیر را ببینید. هشدار: متاسفم، اما همه اینها در DAO است، من زیاد از ADODB استفاده نمی کنم. امیدوارم همچنان این ایده ها برای شما مفید باشد.

    من حتی تا آنجا پیش رفته ام که روشی را برای استفاده/درج پارامترهای جایگزین در SQL که از این پرس و جوهای OPP می آید، توسعه داده ام. سپس از VBA.Replace() برای انجام جایگزینی قبل از استفاده از SQL در VBA استفاده می کنم.

    مسیر شی DAO به کوئری SQL در ACCDB به شرح زیر است:

    MySqlStatement = Access.Application.CurrentDb.QueryDefs("myQueryName").SQL

    من از پارامترهای قابل تعویض با ارزیابی مواردی که باید جایگزین شوند و انتخاب یک نام غیرعادی برای پارامتری که نمی تواند در پایگاه داده واقعی وجود داشته باشد، استفاده می کنم. در بیشتر موارد، تنها جایگزین‌هایی که انجام داده‌ام، نام فیلدها یا جدول‌ها یا عبارت‌های WHERE و HAVING هستند. بنابراین من آنها را چیزهایی مانند "(ReplaceMe00000001)" می نامم و سپس از تابع Replace() برای انجام کار استفاده می کنم ...

    SqlText = VBA.Replace(sqlText، "(ReplaceMe00000001)"، "SomeActualParameter") ...

    و سپس از sqlText در VBA استفاده کنید. در اینجا یک مثال کار آمده است:

    تابع عمومی MySqlThing() تیره کردن sqlText به عنوان رشته کم نور myParamater به عنوان رشته کم نور myExpression به عنوان رشته "همه چیز را تنظیم کنید. sqlText = getSqlTextFromQuery("myQuery") myParameter = "(ReplaceMe0000000001) 7" "جایگزینی را انجام دهید. sqlText = VBA.Replace(sqlText، myParameter، myExpression) "سپس از SQL استفاده کنید. m qdefs As DAO.QueryDefs Dim qdef As DAO.QueryDef Dim sqlText As String Set app = Access.Application Set db = app.CurrentDb Set qdefs = db.QueryDefs Set qdef = qdefsFuerText = qdefSQnf (oppGTQnfnde)


    پرس و جو را در Access MakeTable از Excel اجرا کنید

    من یک فایل اکسل دارم که باید آن را خودکار کنم. هنگامی که کاربر یک گزارش اکسل را باز می کند، از او خواسته می شود که داده ها را به روز کند. اگر گفتند بله، باید پرس و جو را اجرا کنم...


    اجرای عملکرد VBA از طریق پرس و جو در MS Access 2013 از JS ActiveX ADO

    چگونه ماکرو VBA را از طریق پرس و جو در MS Access 2013 از JS ActiveX ADO اجرا کنیم؟ تابع VBA این است که کاربر فعلی را وارد سیستم کنید: Public Declare...


    کوئری ذخیره شده حاوی "function" در دسترسی db را از اکسل اجرا کنید

    من سعی می کنم یک پرس و جو ذخیره شده در پایگاه داده دسترسی از اکسل vba را اجرا کنم. اگر آن را در پایگاه داده دسترسی باز و اجرا کنم، پرس و جو خوب کار می کند، اما وقتی آن را از یک ماژول اجرا می کنم، خطا می دهد...


    MS Access - پرس و جو ذخیره شده را با نام در VBA اجرا کنید

    چگونه یک کوئری ذخیره شده در MS Access 2007 در VBA اجرا کنیم؟ من نمی خواهم SQL را در VBA کپی و جایگذاری کنم. من ترجیح می دهم فقط نام پرس و جو را انجام دهم. این کار نمی کند ... VBA نمی تواند پرس و جو را پیدا کند ...


    چگونه کوئری را در ms-access در کد VBA اجرا کنیم؟

    چگونه می توانم برای بازگرداندن رکوردها در پایگاه داده ms-access با استفاده از کد VBA پرس و جو کنم؟


    درخواست دسترسی را از اکسل اجرا کنید و پارامترها را به آن ارسال کنید

    نحوه اجرای پرس و جو در MS Access db از کد Excel VBA یا ماکرو. درخواست MS-Access برخی از پارامترها را می گیرد که باید از اکسل منتقل شوند. متشکرم


    کنترل یک کتاب کار اکسل از Access 2010 VBA

    من یک وضعیت بسیار شبیه به پست زیر دارم: درخواست دسترسی به اکسل 2010 برای ایجاد یک نمودار از طریق vba در مورد من، من یک جدول را صادر می کنم، اما می خواهم کارهای بیشتری برای فایل انجام دهم ...


    درخواست SQL Server End-to-End را از Access VBA اجرا کنید

    من یک درخواست UPDATE pass through ذخیره شده در Access 2007 دارم. وقتی روی عبارت pass through دوبار کلیک می کنم، با موفقیت اجرا می شود. چگونه می توانم این پرس و جو را از VBA اجرا کنم؟ من می خواهم...


    مجموعه داده عظیمی را از طریق VBA به Access از اکسل وارد کنید

    من یک مجموعه داده عظیم دارم که باید از اکسل به اکسس وارد کنم (800 هزار ردیف). با این حال، من می‌توانم ردیف‌هایی با مقدار ستون خاص را نادیده بگیرم که مجموع آنها 90٪ است...


    آیا درخواست MDX در اکسل vba وجود دارد؟

    آیا راهی برای اجرای پرس و جوی MDX در Excel VBA وجود دارد؟ من فکر کردم که می توان آن را از طریق ADO انجام داد، درست مانند مورد SQL (بله، می دانم که SQL با MDX متفاوت است - مشکلی که بارها ...

    با ماکرو OpenRequestدر پایگاه داده های Access، می توانید پرس و جوهای انتخابی و پرس و جوهای متقابل را در نمای صفحه داده، نمای طراحی یا نمای پیش نمایش باز کنید. این عمل یک درخواست تغییر را شروع می کند. همچنین می توانید حالت ورود داده را برای پرس و جو انتخاب کنید.

    توجه داشته باشید:این ماکرو فقط در محیط پایگاه داده Access (MDB یا ACCDB) در دسترس است. اگر از Access Project Environment (ADP) استفاده می کنید، ماکروها را ببینید OpenView, یک رویه ذخیره شده را باز کنیدو OpenFunction. کلان OpenRequestدر برنامه های وب Access موجود نیست.

    تنظیمات

    کلان OpenRequestدارای استدلال های زیر است:

    استدلال کلان

    شرح

    درخواست نام

    نام درخواست باز کردن. نامی را از لیست کشویی انتخاب کنید. این یک استدلال لازم است.

    هنگام اجرای ماکرو حاوی ماکرو در پایگاه داده کتابخانه OpenRequest، اکسس ابتدا به دنبال پرس و جوی با این نام در پایگاه داده کتابخانه و سپس در پایگاه داده فعلی می گردد.

    نمایی که پرس و جو در آن باز می شود. در فیلد انتخاب کنید چشم اندازمعنی جدول, سازنده, پیش نمایش, جدول محورییا نمودار محوری. پیش فرض است جدول.

    توجه داشته باشید:نماهای PivotTable و PivotChart در نسخه‌های Access که با Access 2013 شروع می‌شوند در دسترس نیستند.

    حالت داده

    حالت ورود داده برای پرس و جو. این تنظیم فقط برای جستارهای باز شده در نمای صفحه داده اعمال می شود. انتخاب کنید اضافه کردن(کاربران می‌توانند ورودی‌های جدید اضافه کنند، اما ورودی‌های موجود را تغییر ندهند)، تغییر دادن(کاربران می توانند ورودی های موجود را تغییر دهند و موارد جدید اضافه کنند) یا فقط برای خواندن(کاربران فقط می توانند ورودی ها را مشاهده کنند). مقدار پیش فرض است تغییر دادن.

    یادداشت

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

    کلان OpenRequestمانند دوبار کلیک کردن بر روی یک پرس و جو در صفحه ناوبری یا کلیک راست روی آن در صفحه ناوبری و انتخاب یک نما است. هنگام استفاده از ماکرو، می توانید گزینه های اضافی را انتخاب کنید.

    مشاوره

      می توانید یک پرس و جو را از پنجره ناوبری به پنجره طراح ماکرو بکشید. این به طور خودکار یک ماکرو ایجاد می کند. OpenRequest، که پرس و جو را در نمای دیتاشیت باز می کند.

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

      اگر نمی‌خواهید پیام‌های سیستمی را که معمولاً هنگام اجرای درخواست‌های تغییر ظاهر می‌شوند نمایش دهید (می‌گویند این یک درخواست تغییر است و تعداد رکوردهایی که روی آن تأثیر می‌گذارد)، می‌توانید آنها را با یک ماکرو خاموش کنید. SetWarning.

    برای اجرای ماکرو OpenRequestدر یک ماژول Visual Basic for Applications (VBA)، از روش استفاده کنید OpenRequestهدف - شی DoCmd.