VBA-da sql so'rovlarini bajarish. VBA-da Excel so'rovi orqali Access-dan so'rovni bajaring. VBA bazasiga qarshi so'rovni tanlang

Kirish "myQuery" deb nomlangan so'rov yaratuvchisi bilan ishlab chiqilgan so'rovni saqlab qoldi. Ma'lumotlar bazasi tizimga ODBC aloqasi orqali ulanadi. Makrolarning barchasi kiritilgan.

Excel orqali ma'lumotlar bazasiga ulanish uchun ADODB ulanishiga ega

Dim con As ADODB.Connection Dim rs As ADODB.Recordset Set con \u003d New ADODB.Connection With con .Provider \u003d "Microsoft.ACE.OLEDB.12.0" .Ochiq "MyDatabase.accdb" bilan tugatish

Odatda siz davom etasiz va shunchaki SQL-ni yozasiz, bu juda yaxshi va keyin siz shunga o'xshash narsalarni qilasiz

Dim sqlQuery As String sqlQuery \u003d "SELECT * FROM myTable" rs \u003d New ADODB.Recordset rs.Open sqlQuery, con, ... o'rnating.

Lekin men kirish ma'lumotlar bazasida saqlangan so'rovga kirishni xohlayman. Xo'sh, men qanday qilib ulangan ma'lumotlar bazasida saqlangan so'rovni chaqira olaman.

Oldindan sinab ko'rdim

  1. con.Execute ("EXEC myQuery") lekin u menga bu mening savolimni topib bo'lmasligini aytdi.
  2. rs.Open "myQuery", con lekin bu yaroqsiz va undan SELECT / etc so'zlarini talab qiladi
vba excel-vba ms-access-2007 adodb excel

5 javob


6

O'ylaymanki, siz buni saqlangan protsedura deb o'ylashingiz mumkin.

Agar biz Dim sqlQuery As String oldidan boshlasak

Yangi ADODB.Command cmd.CommandType \u003d adCmdStoredProc cmd.CommandText \u003d "myQuery" cmd.ActiveConnection \u003d con Set rs \u003d cmd.Execute ()

Shundan so'ng yozuvlar to'plamini oling.


1

Siz deyarli u erda edingiz:

Dim con As ADODB.Connection Dim rs As ADODB.Recordset Set con \u003d New ADODB.Connection With con .Provider \u003d "Microsoft.ACE.OLEDB.12.0" .Open "z: \\ docs \\ MyDatabase.accdb" con.Execute bilan tugatish "MyQuery"

Faqat Execni bir chetga qoldiring.

Siz parametrlarni qo'shishingiz mumkin, bu biroz eskirgan, ammo yordam berishi kerak:


0

Bu qandaydir xakerlik, ammo siz so'rovni so'rashingiz mumkin. Ya'ni, sql satrini quyidagilar bilan almashtiring:

SqlQuery \u003d "SELECT * FROM QueryName;".

Ushbu dasturni ishga tushirishdan oldin Access ma'lumotlar bazasi saqlanganligiga ishonch hosil qilishingiz kerak, ya'ni. Ctrl + S tugmalarini bosing (Access-da so'rovni bajarish uchun etarli emas).


0

Access-da allaqachon saqlangan yangilanish so'rovini quyidagilar yordamida bajarishga muvaffaq bo'ldim:

Connection.Execute "My_Update_Query_Already_Saved_In_Access", adExecuteNoRecords, adCmdStoredProc

So'rov nomidagi bo'shliqlarni Access ma'lumotlar bazasida ham, ijro etuvchi bayonotda ham pastki chiziqlar bilan almashtirgunimcha, bu menga xatolarni keltirib chiqardi.


0

Ushbu mavzu yaratilganiga ancha vaqt bo'ldi. Agar men hamma narsani to'g'ri tushunsam, foydali narsalarni qo'shishim mumkin. Men OP bayon qilgan narsaga nom berdim, ya'ni DACD yoki ADOBD orqali VBA-da ishlash uchun ACCDB-da saqlangan so'rovdan SQL-dan foydalanish jarayoni. Men unga "Ob'ekt mulk ta'minotchisi" nomini berdim, hatto yozuvlarimdagi OPP qisqartmasi bilan va ob'ekt nomi prefiksi / qo'shimchasi uchun.

Fikr shundaki, ACCDB-dagi mavjud ob'ekt (odatda so'rov) VBA-da ishlatilishi kerak bo'lgan xususiyatni (odatda SQL) beradi. Buning uchun so'rovlardan SQL so'rish uchun funktsiyani yig'dim; pastga qarang. Ogohlantirish: Kechirasiz, ammo bularning hammasi DAOda, men ADODB ni juda ko'p ishlatmayman. Umid qilamanki, siz hali ham ushbu g'oyalarni foydali deb topasiz.

Hatto ushbu OPP so'rovlaridan kelib chiqadigan SQL-ga almashtiriladigan parametrlardan foydalanish / kiritish usulini o'ylab topishga qadar bordim. Keyin VBA-da SQL-ni ishlatishdan oldin almashtirishni amalga oshirish uchun VBA.Replace () dan foydalanaman.

ACCDB-da SQL so'roviga DAO yo'li quyidagicha ko'rinadi:

MySqlStatement \u003d Access.Application.CurrentDb.QueryDefs ("myQueryName"). SQL

O'zgartiriladigan parametrlardan foydalanayapman, nima o'zgarishi kerakligini baholayapman va parametr uchun haqiqiy bo'lmagan ma'lumotlar bazasida mavjud bo'lmagan nomni tanladim. Ko'pincha, men faqatgina maydon yoki jadval nomlari yoki WHERE va HAVING iboralar o'rnini bosganman. Shuning uchun ularni "(ReplaceMe00000001)" kabi narsalar deb atayman va keyin ishni bajarish uchun Replace () funktsiyasidan foydalanaman ...

SqlText \u003d VBA.Replace (sqlText, "(ReplaceMe00000001)", "SomeActualParameter") ...

va keyin VBA-da sqlText-dan foydalaning. Mana ishlaydigan misol:

Umumiy funktsiya MySqlThing () Dim sqlText sifatida String Dim myParamater sifatida String Dim myExpression "String sifatida" Hammasini o'rnating. SqlText \u003d getSqlTextFromQuery ("myQuery") myParameter \u003d "(ReplaceMe00000001)" myExpression \u003d "SomeDateOr ... sqlText \u003d VBA.Replace (sqlText, myParameter, myExpression) "So'ngra SQL.db.Execute sqlText, dbFailOnError End Funksiya funktsiyasi getSqlTextFromQuery (ByVal oppName As String) as String Dim app As AccessApp Dim DAO.QueryDefs Dim qdef As DAO.QueryDef Dim sqlText As String Set app \u003d Access.Application Set db \u003d app.CurrentDb Set qdefs \u003d db.QueryDefs Set qdef \u003d qdefs (oppName) oppGetSqlText \u003d qdef.SQL End Function


So'rovni Excel-dan Access MakeTable-da bajaring

Avtomatlashtirishim kerak bo'lgan Excel fayli bor. Foydalanuvchi Excel hisobotini ochganda, undan ma'lumotlarni yangilash so'raladi. Agar ular "ha" deyishsa, men so'rov o'tkazishim kerak ...


VBA funktsiyasini JS ActiveX ADO-dan MS Access 2013-da ko'rish so'rovi orqali bajaring

MS Access 2013 da JS ActiveX ADO-dan ko'rish so'rovi orqali VBA makrosini qanday bajarish kerak? VBA funktsiyasi joriy foydalanuvchini quyidagi tizimga kirish uchun mo'ljallangan: Public Declare ...


Excel-dan access db-da "function" o'z ichiga olgan saqlangan so'rovni bajaring

Excel ma'lumotlar bazasida saqlangan so'rovni Excel vba-dan ishlatishga harakat qilaman. Agar men uni ochish va kirish ma'lumotlar bazasida ishga tushirsam, lekin uni moduldan ishga tushirganimda xatoga yo'l qo'ysam, so'rov yaxshi ishlaydi ...


MS Access - VBA-da saqlangan so'rovlarni nomlari bo'yicha bajarish

MS Access 2007 da saqlangan so'rovni VBA-da qanday bajarishim mumkin? SQL-ni VBA-ga nusxalash va joylashtirishni xohlamayman. Men shunchaki so'rov nomiga amal qilaman. Bu ishlamaydi ... VBA so'rovni topa olmaydi ....


VBA kodidagi ms-access-da so'rovni qanday bajarishim mumkin?

VBA kodi yordamida ms-access ma'lumotlar bazasidagi yozuvlarni qaytarish uchun qanday qilib so'rovni bajarishim mumkin?


Excel-dan kirish so'rovini ishga tushiring va unga paramerts yuboring

Excel VBA kodi yoki so'lidan MS Access db-da so'rov qanday bajariladi. MS-Access so'rovi ba'zi parametrlarni oladi, ularni Excel-dan uzatish kerak. rahmat


Excel ish kitobini Access 2010 VBA-dan boshqaring

Menda quyidagi xabarga juda o'xshash vaziyat mavjud: vba orqali grafik yaratish uchun Excel 2010-ga kirishni so'rash Mening vaziyatimda men jadvalni eksport qilmoqdaman, lekin fayl uchun juda ko'p narsalarni qilishni xohlayman ...


Access VBA-dan SQL Serverning oxirigacha so'rovini bajaring

Menda Access 2007-da saqlangan so'rov orqali UPDATE parol bor. So'rov orqali uzatishni ikki marta bosganimda, u muvaffaqiyatli bo'ladi. VBA-dan qanday qilib ushbu so'rovni olishim mumkin? Men .. istayman...


Excelga VBA orqali ulkan ma'lumotlar to'plamini Access-ga import qilish

Excel-dan Access-ga import qilishim kerak bo'lgan juda katta ma'lumotlar to'plami bor (~ 800k qator). Biroq, men 90% gacha bo'lgan ma'lum bir ustun qiymatiga ega qatorlarni e'tiborsiz qoldira olaman ...


Excel vba ichidagi har qanday MDX so'rovi?

excel VBA ichida MDX so'rovini bajarishning bir usuli bormi? Buni ADO orqali amalga oshirish mumkin deb o'ylardim, xuddi SQL bilan bo'lgani kabi (ha, men bilaman SQL MDXdan farq qiladi - bu muammo ko'p marta ...

Access myQuery Query Builder yordamida ishlab chiqilgan so'rovni saqlab qoldi. Ma'lumotlar bazasi tizimga ODBC aloqasi orqali ulangan. Makrolarning barchasi kiritilgan.

Ma'lumotlar bazasiga ulanish uchun Excel ADODB ulanishini o'rnatadi

Dim con As ADODB.Connection Dim rs As ADODB.Recordset Set con \u003d New ADODB.Connection With con .Provider \u003d "Microsoft.ACE.OLEDB.12.0" .Ochiq "MyDatabase.accdb" bilan tugatish

Odatda siz shunchaki ajoyib ishlaydigan SQL-ni yozasiz, so'ngra shunga o'xshash narsalarni qilasiz

Dim sqlQuery As String sqlQuery \u003d "SELECT * FROM myTable" rs \u003d New ADODB.Recordset rs.Open sqlQuery, con, ... o'rnating.

Lekin men kirish ma'lumotlar bazasida saqlangan so'rovga kirishni xohlayman. Xo'sh, men hozirgina ulangan ma'lumotlar bazasida saqlangan so'rovni qanday chaqiraman.

Oldindan harakat qildim

  1. con.Execute ("EXEC myQuery"), lekin u menga myQuery-ni topa olmasligini aytdi.
  2. rs.Open "myQuery", lekin u yaroqsiz va undan SELECT so'zlarini talab qiladi / etc

5 javob

Menimcha, buni saqlangan protsedura deb hisoblashingiz mumkin.

Agar biz Dim sqlQuery As String oldidan boshlasak

Yangi ADODB.Command cmd.CommandType \u003d adCmdStoredProc cmd.CommandText \u003d "myQuery" cmd.ActiveConnection \u003d con Set rs \u003d cmd.Execute ()

Undan keyin o'z ishingizni yozuvlar to'plami bilan oling.

Siz deyarli u erda edingiz

Dim con As ADODB.Connection Dim rs As ADODB.Recordset Set con \u003d New ADODB.Connection With con .Provider \u003d "Microsoft.ACE.OLEDB.12.0" .Open "z: \\ docs \\ MyDatabase.accdb" con.Execute bilan tugatish "MyQuery"

Faqat Exec-ni tark eting.

Siz parametrlarni qo'shishingiz mumkin, bu biroz eskirgan, lekin yordam berishi kerak: Access ma'lumotlar bazasidagi 2 maydonni Excel ma'lumotlari va ehtimol so'l bilan yangilash

Access-da allaqachon saqlangan yangilanish so'rovini quyidagilar yordamida bajarishga muvaffaq bo'ldim:

Connection.Execute "My_Update_Query_Already_Saved_In_Access", adExecuteNoRecords, adCmdStoredProc

So'rov nomidagi bo'shliqlarni Access ma'lumotlar bazasida ham, ijro etuvchi bayonotda ham pastki chiziq bilan almashtirguncha, bu menga xatolarni keltirib chiqardi.

Bu xakerlik ishi, ammo siz so'rovni so'rashingiz mumkin. Ya'ni, SQL qatorini quyidagilar bilan almashtiring:

SqlQuery \u003d "SELECT * FROM QueryName;".

Ishga kirishishdan oldin, Access ma'lumotlar bazasi saqlanganligiga ishonch hosil qilishingiz kerak, ya'ni. Ctrl + S tugmalarini bosing (so'rov Access-da ishlashi uchun etarli emas).

Ushbu mavzu yaratilganidan ancha oldin. Agar men to'g'ri tushunsam, foydali narsalarni qo'shishim mumkin. Men OP bayon qiladigan narsaga nom berdim: bu DACD yoki ADOBD orqali VBA-da ishlash uchun ACCDB-da saqlangan so'rovdan SQL-dan foydalanish jarayoni. Men uni "Ob'ekt mulk ta'minotchisi" deb nomladim, hatto yozuvlarimda OPP qisqartmasi bilan va ob'ekt nomining prefiksi / qo'shimchasi uchun ham.

G'oya shundan iboratki, ACCDB-dagi mavjud ob'ekt (odatda so'rov) VBA-da ishlatilishi kerak bo'lgan xususiyatni (odatda SQL) beradi. Buning uchun so'rovlardan SQL so'rish uchun funktsiyani yig'dim; Pastga qarang. Ogohlantirish: Kechirasiz, ammo barchasi DAO-da, men ADODB-dan foydalanmayman. Umid qilamanki, siz hali ham g'oyalarni foydali deb topasiz.

Hatto ushbu OPP so'rovlaridan kelib chiqqan holda SQL-ga almashtiriladigan parametrlardan foydalanish / kiritish usulini ishlab chiqishga qadar borganman. Keyin VBA-da SQL-ni ishlatishdan oldin almashtirish uchun VBA.Replace () dan foydalanaman.

ACCDB-da SQL so'roviga DAO yo'li quyidagicha ko'rinadi:

MySqlStatement \u003d Access.Application.CurrentDb.QueryDefs ("myQueryName"). SQL

Nimani almashtirish kerakligini baholash va haqiqiy ma'lumotlar bazasida mavjud bo'lmagan parametr uchun g'ayrioddiy nomni tanlash orqali almashtiriladigan parametrlardan foydalanaman. Ko'pincha, men faqatgina maydon yoki jadval nomlari yoki WHERE va HAVING iboralar o'rnini bosganman. Shuning uchun men ularni "(ReplaceMe00000001)" kabi chaqiraman va keyin ishni bajarish uchun Replace () funktsiyasidan foydalanaman ...

SqlText \u003d VBA.Replace (sqlText, "(ReplaceMe00000001)", "SomeActualParameter")

Va keyin VBA-da sqlText-dan foydalaning. Mana ishlaydigan misol:

Umumiy funktsiya MySqlThing () Dim sqlText sifatida String Dim myParamater sifatida String Dim myExpression "String sifatida" Hammasini o'rnating. SqlText \u003d getSqlTextFromQuery ("myQuery") myParameter \u003d "(ReplaceMe00000001)" myExpression \u003d "SomeDateOr ... sqlText \u003d VBA.Replace (sqlText, myParameter, myExpression) "So'ngra SQL.db.Execute sqlText, dbFailOnError End Funksiya funktsiyasi getSqlTextFromQuery (ByVal oppName As String) as String Dim app As Access Aspp Dpp DAO.QueryDefs Dim qdef As DAO.QueryDef Dim sqlText As String Set app \u003d Access.Application Set db \u003d app.CurrentDb Set qdefs \u003d db.QueryDefs Set qdef \u003d qdefs (oppName) oppGetSqlText \u003d qdef.SQL End Function

Ushbu darsga e'tibor qaratiladi SQL so'rovlari ma'lumotlar bazasiga VBA-ga kirish... VBA-da ma'lumotlar bazasiga INSERT, UPDATE, DELETE so'rovlari qanday bajarilishini ko'rib chiqamiz, shuningdek SELECT so'rovidan ma'lum bir qiymatni olishni o'rganamiz.

Dasturlashtiradiganlar VBA-ga kirish SQL-server ma'lumotlar bazasi bilan ishlashda, ular ma'lumotlar bazasiga SQL so'rov yuborish kabi juda oddiy va zarur vazifalar bilan duch kelishadi, INSERT, UPDATE yoki oddiy bo'lsin. SQL SELECT so'rovi ... Va biz boshlang'ich dasturchilar ekanmiz, biz ham bunga qodir bo'lishimiz kerak, shuning uchun bugun biz buni qilamiz.

Biz allaqachon SQL-serverdan ma'lumotlarni qabul qilish mavzusiga to'xtaldik, u erda biz ushbu ma'lumotlarni olish uchun VBA-da kod yozdik, masalan, maqolada MSSql 2008-dan matnli faylga ma'lumotlarni tushirish yoki shuningdek materialga ozgina tegdi Access-dan ma'lumotlarni Word va Excel shabloniga yuklang , lekin u erda u yoki bu tarzda biz uni yuzaki ko'rib chiqdik va bugun men bu haqda batafsilroq gaplashishni taklif qilaman.

Eslatma! Quyidagi barcha misollar Access 2003 ADP loyihasi va MSSql 2008 ma'lumotlar bazasi yordamida ko'rib chiqiladi, agar siz umuman ADP loyihasi nima ekanligini bilmasangiz, biz buni materialda ko'rib chiqdik. Access ADP loyihasini yaratish va sozlash

Misollar uchun dastlabki ma'lumotlar

Aytaylik, bizda test_jadval mavjud bo'lib, unda yil raqamlari va oylari nomlari keltiriladi (so'rovlar yordamida amalga oshiriladi) Boshqaruv studiyasi)

JADVAL yarating. (NULL EMAS, (50) NULL) YO'LIDA

Aytganimdek, biz MS SQL 2008 bilan ishlash uchun tuzilgan ADP loyihasidan foydalanamiz, unda men test formasini yaratdim va imzo bilan boshlash tugmachasini qo'shdim "Yugur"biz kodimizni sinab ko'rishimiz kerak, ya'ni. biz barcha kodlarni voqealarni ko'rib chiquvchiga yozamiz " Tugmani bosing».

VBA INSERT, Yangilash, o'chirish so'rovlari

Uzoq vaqtga cho'zilmaslik uchun, darhol boshlaymiz, aytaylik, test jadvalimizga qator qo'shishimiz kerak ( kod izohlanadi)/

Private Sub start_Click () "So'rovlar qatorini saqlash uchun o'zgaruvchini e'lon qiling Dim sql_query String sifatida" Bizga kerak bo'lgan so'rovni yozing sql_query \u003d "INSERT INTO test_table (id, name_mon) VALUES (" 6 "," June ")" "Uni bajaring DoCmd. RunSQL sql_query End Sub

Bunday holda, so'rov ma'lumotlar bazasiga ulanishning joriy parametrlari yordamida amalga oshiriladi. Ma'lumot qo'shilgan yoki qo'shilmaganligini tekshirishimiz mumkin.

Ko'rib turganingizdek, ma'lumotlar kiritilgan.

Bir qatorni o'chirish uchun quyidagi kodni yozing.

Private Sub start_Click () "So'rovlar qatorini saqlash uchun o'zgaruvchini e'lon qiling Dim sql_query String sifatida" Unga o'chirish so'rovini yozing sql_query \u003d "Test_table WHERE id \u003d 6" "Uni bajaring DoCmd.RunSQL sql_query End Sub

Agar tekshirib ko'rsak, kerakli satr o'chirilganligini ko'ramiz.

Ma'lumotni yangilash uchun sql_query o'zgaruvchisiga yangilash so'rovini yozing, umid qilamanki ma'nosi aniq.

VBA bazasiga qarshi so'rovni tanlang

SQL-ning qolgan tuzilmalariga qaraganda bu erda narsalar biroz qiziqroq.

Birinchidan, aytaylik, biz barcha ma'lumotlarni jadvaldan olishimiz kerak va, masalan, biz ularni qayta ishlaymiz va xabarda ko'rsatamiz va siz, albatta, undan boshqa maqsadlarda foydalanishingiz mumkin, buning uchun quyidagi kodni yozamiz

Xususiy Sub start_Click () "O'zgaruvchilarni e'lon qilish" Ma'lumotlar bazasidan olingan yozuvlar to'plami uchun Dim RS As ADODB.Recordset "So'rovlar qatori Dim sql_query As String" Xabarda xujjatli ma'lumotlarni aks ettirish uchun string "St str As String" yozuvlari uchun yangi ob'ekt yarating RS \u003d Yangi ADODB .Recordset "Query string sql_query \u003d" SELECT id, name_mon FROM test_table "" So'rovni joriy loyiha ulanish sozlamalari yordamida amalga oshiring. RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "Yozuvlar davomida emas (RS.EOF) str \u003d str & RS.Fields ("id") & "-" & RS.Fields ("name_mon") & vbnewline xabarlarini ko'rsatish uchun keyingi yozuvga o'ting RS.MoveNext Wend "Xabarni ko'rsatish msgbox str End Sub

Bu erda biz allaqachon foydalanmoqdamiz vBA Access ko'chadan yozuvlar to'plamidagi barcha qiymatlarni takrorlash uchun.

Ammo, ko'pincha yozuvlar to'plamidan barcha qiymatlarni emas, balki faqat bittasini, masalan, kodni oyning nomini olish kerak bo'ladi. Va buning uchun loopdan foydalanish qandaydir qimmatga tushadi, shuning uchun biz faqat bitta qiymatni qaytaradigan so'rovni yozishimiz va unga murojaat qilishimiz mumkin, masalan, biz 5-kod bo'yicha oy nomini olamiz

Private Sub start_Click () "O'zgaruvchilarni e'lon qilish" Ma'lumotlar bazasidan olingan yozuvlar to'plami uchun Dim RS As ADODB.Recordset "So'rovlar qatori Dim sql_query As String" Umumiy qiymatni ko'rsatish uchun satr Dim str As String "Yozuvlar to'plami uchun yangi ob'ekt yarating RS \u003d New ADODB.Recordset "Query string sql_query \u003d" SELECT name_mon FROM test_table WHERE id \u003d 5 "" Biz so'rovni loyihani joriy ulanish sozlamalari yordamida bajaramiz. RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "Bizning qiymatimizni oling str \u003d RS.Fields (0) msgbox str. Yakuniy pastki

Umumjahonlik uchun bu erda biz allaqachon hujayra nomi bilan emas, balki uning indekslari bo'yicha murojaat qildik, ya'ni. 0, va bu birinchi qiymat Yozuvlar to'plami, oxirida biz qiymatga ega bo'ldik "May".

Ko'rib turganingizdek, hamma narsa juda oddiy. Agar siz tez-tez bazadan ma'lum bir qiymatni olishingiz kerak bo'lsa ( oxirgi misolda bo'lgani kabi), keyin barcha kodlarni alohida funktsiyaga joylashtirishni tavsiya qilaman ( VBA Access 2003 da funktsiyani qanday yozish kerak) bitta kirish parametri bilan, masalan, oy kodi ( bizning misolimizni ko'rib chiqsak) va shunchaki, agar bu qiymatni chiqarish zarur bo'lsa, kerakli parametrni kerakli parametr bilan chaqiring va shu bilan VBA kodini sezilarli darajada kamaytiradi va bizning dasturimiz idrokini yaxshilaydi.

Bugungi kun uchun barchasi shu. Omad!

Makrosdan foydalanish Ochiq so'rov Access ma'lumotlar bazalarida siz Grid ko'rinishida, Dizayn ko'rinishida yoki Ko'rib chiqish rejimida tanlangan va o'zaro so'rovlarni ochishingiz mumkin. Ushbu harakat o'zgartirish so'rovini keltirib chiqaradi. Shuningdek, so'rov uchun ma'lumotlarni kiritish rejimini tanlashingiz mumkin.

Eslatma: Ushbu so'l faqat Access ma'lumotlar bazasida (MDB yoki ACCDB) mavjud. Agar siz Access Project Environment (ADP) dan foydalanayotgan bo'lsangiz, makrolarni ko'ring OpenView, OpenSaved protsedurasi va Funktsiyani oching... Ibratli Ochiq so'rov Access veb-ilovalarida mavjud emas.

O'rnatish

Ibratli Ochiq so'rov quyidagi dalillarga ega:

Ibratli argument

Tavsif

Ismni so'rang

Ochish uchun so'rov nomi. Ochiladigan ro'yxatdan ismni tanlang. Bu talab qilinadigan dalil.

Kutubxona ma'lumotlar bazasida so'lni o'z ichiga olgan so'lni bajarishda Ochiq so'rov, Access dastlab kutubxona ma'lumotlar bazasini shu nom bilan so'rovni qidiradi va keyin joriy ma'lumotlar bazasini qidiradi.

So'rov ochiladigan ko'rinish. Qutidagi belgini tanlang Ko'rinish qiymat Jadval, Konstruktor, Oldindan ko'rish, Umumiy jadval yoki Pivot diagrammasi... Sukut bo'yicha Jadval.

Eslatma: PivotTable va PivotChart ko'rinishlari Access 2013 yildan boshlab Access versiyalarida mavjud emas.

Ma'lumotlar rejimi

So'rov uchun ma'lumotlarni kiritish tartibi. Ushbu parametr faqat jadval rejimida ochilgan so'rovlarga tegishli. Iltimos tanlang qo'shish (foydalanuvchilar yangi yozuvlarni qo'shishlari mumkin, ammo mavjudlarini o'zgartirmaydilar), Tahrirlash (foydalanuvchilar mavjud yozuvlarni o'zgartirishlari mumkin, shuningdek yangilarini qo'shishlari mumkin) yoki Faqat o'qish uchun (foydalanuvchilar faqatgina yozuvlarni ko'rishlari mumkin). Sukut bo'yicha Tahrirlash.

Izohlar

Agar bahs uchun Ko'rinish belgilangan qiymat Jadval, Access siz tanlagan so'rov, o'zaro so'rov, birlashma so'rovi yoki server so'rovi, xususiyatidan foydalanayotgan bo'lsangiz, natijalar to'plamini ko'rsatadi. Qaytgan yozuvlar bu muhim Ha... Agar bu mulkni o'zgartirish uchun so'rov, ma'lumotni aniqlash uchun so'rov yoki server so'rovi bo'lsa Qaytgan yozuvlar o'rnatilgan Yo'q, so'rov bajarilmoqda.

Ibratli Ochiq so'rov navigatsiya panelidagi so'rovni ikki marta bosish yoki uni navigatsiya oynasida o'ng tugmasini bosish va ko'rinishni tanlash bilan bir xil. Makrosdan foydalanganda qo'shimcha variantlarni tanlashingiz mumkin.

Maslahat

    So'rovni Navigatsiya panelidan Ibratli Dizayner oynasiga sudrab borishingiz mumkin. Bu avtomatik ravishda so'l yaratadi Ochiq so'rovso'rovni jadval ko'rinishida ochadi.

    Agar so'rov ochiq bo'lsa, Konstruktorga o'tsangiz, argument qiymati Ma'lumotlar rejimi olib tashlandi. Agar foydalanuvchi jadval holatiga qaytgan bo'lsa ham, ushbu parametr hech qanday ta'sir ko'rsatmaydi.

    Agar siz odatda o'zgartirish so'rovlarini yuborishda paydo bo'ladigan tizim xabarlarini ko'rsatishni xohlamasangiz (ular bu o'zgartirish so'rovi va unga ta'sir qiladigan yozuvlar sonini bildiradilar), ularni so'l yordamida o'chirib qo'yishingiz mumkin. SetWarning.

Ibratli dasturni bajarish uchun Ochiq so'rov Visual Basic for Applications (VBA) modulida ushbu usuldan foydalaning Ochiq so'rov ob'ekt DoCmd.

Maqola sizga yoqdimi? Do'stlar bilan bo'lishish uchun: