Работа с Access VBA Recordsets чрез DAO или ADO: 3 ключови точки с VBA Recordsets

Ето 3 ключови точки, които трябва да имате предвид и да имате предвид, когато кодирате с Access VBA, използвайки DAO или ADO за свързване с други бази данни.

Има често срещани капани и полезни съвети, за които да внимавате, когато използвате кода на Access VBA, работещ с обекта на набор от записи, и в тази статия (част 1) ще разгледам първите три точки тук и сега.

1. Коя библиотека да използвам DAO или ADO?

Ако сте използвали Access VBA за известно време, тогава може да сте попаднали на две опции за библиотека (DAO или ADO). И двете библиотеки поддържат Набор от записи обект, но те имат различни членове (т.е. свойства, методи и събития).

DAO е родната препратка към базите данни на Microsoft Access и е естественият избор при кодиране към други системи за бази данни на Access, тъй като е имплицитна връзка с таблици в Access.

ADO обаче се използва за други типове бази данни извън рамката на Microsoft Access, когато искате да се свържете с външни източници на данни и се счита за гъвкавото от двете.

Има плюсове и минуси между двата типа библиотеки, но понякога те могат да съществуват заедно в една и съща среда на база данни, което може да причини известно объркване. Ако случаят е такъв, редът, в който се появяват в списъка с препратки, има предимство. За да избегнете двусмислено препращане, най-добрата практика (ако настоявате да имате и двете) е да бъдете изрични във вашето кодиране. Например,

Dim rs като Recordset – може да се отнася за всяка библиотека, но използва

Дим rsDAO като DAO.Recordset

Dim rsADO As ADODB.Recordset – ще направи двата обекта изрични.

2. Опит за придвижване между записи, когато няма записи

Ако не кодирате за улавяне и тестване на колекцията от обекти на набор от записи и се опитате да навигирате в този масив, това ще изведе грешка.

Методи като MoveFirst, MoveLast, MoveNextили Преместване на предишния ще доведе до грешки, когато не бъдат намерени записи. Затова не забравяйте да добавите Ако тествайте, преди да преминете през записи, като използвате нещо като:

Ако не е rs.BOF и не е rs.EOF Тогава

3. Типовете по подразбиране на набор от записи могат да варират между връзките на таблица и заявка

Ако използвате метода OpenRecordset към заявка или прикачена таблица (таблица, която не се съхранява локално), типът аргумент по подразбиране е dbOpenDynaset в сравнение с локална единична таблица, която използва dbOpenTable.

Ако сте разработили своята база данни на Access в самостоятелна среда, където по подразбиране е dbOpenTable и след това сте разделили базата данни на Access на предна и задна среда, кодът няма да успее да се изпълни.

Затова променете по подразбиране от dbOpenTable да се dbOpenDynaset.Например:

Задайте rs = db.OpenRecordset(„MyLocalTable“, dbOpenDynaset)

Имам други капани и съвети, за които да се съобразявам с Access VBA DAO и ADO и ще ги публикувам в следващата си статия, така че внимавайте!

Empfohlene Artikel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert