Управление базами данных Access на VBA - eDrive
Управление базами данных Access на VBA - eDrive
Управление базами данных Access на VBA - eDrive
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
10<br />
Удаляемая запись помещается в буфер удаления и остается текущей.<br />
Удаление выполняется без предупреждения и отмены.<br />
Уникальный объект DoCmd реализует связь между<br />
макропрограммированием и программированием <strong>на</strong> <strong>VBA</strong>, дублируя операции<br />
интерфейса пользователя <strong>Access</strong>. Методы DoCmd не возвращают з<strong>на</strong>чений. В<br />
их аргументах активно используются константы <strong>Access</strong>, такие как acTable,<br />
acQuery, acForm, acReport, True, False. Име<strong>на</strong> объектов здесь не заключаются<br />
в прямоугольные скобки, а при необходимости помещаются в двойные<br />
кавычки. В частности, для выполнения запросов SQL вызывается метод<br />
RunSQL объекта DoCmd. В программах <strong>VBA</strong> допускается использование<br />
выражений SQL длиной до 32768 символов.<br />
Другой метод — Clone — создает копии <strong>на</strong>боров записей. При<br />
копировании организуется независимый указатель текущей записи, а<br />
закладки копии совпадают с закладками ориги<strong>на</strong>ла. Но копия не <strong>на</strong>следует<br />
свойств Index, Filter, Sort.<br />
Связь полей таблиц и запросов описывается методом Relation. Он<br />
используется для создания новых связей (CreateRelation), для их изменения и<br />
просмотра. При создании связи указываются соответствующие поля в<br />
первичной и внешней таблицах (запросах). В первой таблице эти поля<br />
образуют первичный ключ, одноз<strong>на</strong>чно определяющий запись, а во второй<br />
таблице — внешний ключ. Каждое поле первичного ключа следует добавить<br />
в семейство Fields связи с указанием внешнего ключа в свойстве<br />
ForeignName:<br />
Set объектСвязи = базаДанных.CreateRelation<br />
([«Имя», Таблица, внешняяТаблица, Атрибуты])<br />
объектСвязи.Table = «Таблица»<br />
объектСвязи.ForeignTable = «внешняяТаблица»<br />
Set объектПоле = объектСвязи.CreateField(«Поле»)<br />
объектПоле.ForeignName = «Поле»<br />
объектСвязи.Fields Append объектПоле<br />
базаДанных.Relations Append объектСвязи<br />
При этом <strong>Access</strong> уста<strong>на</strong>вливает параметр ссылочной целостности, но не<br />
уста<strong>на</strong>вливает каскадное обновление и удаление записей.<br />
Примеры<br />
Sub ПоискDAO ()<br />
Set tdf1 = CurrentDb.OpenRecordset ("Сотрудники")<br />
tdf .Index = "PrimaryKey"<br />
tdf .Seek "=", "Иванов"<br />
Set tdf2 = CurrentDb.OpenRecordset ("Командировки", dbOpenSnapshot)