26.12.2014 Views

Управление базами данных Access на VBA - eDrive

Управление базами данных Access на VBA - eDrive

Управление базами данных Access на VBA - eDrive

SHOW MORE
SHOW LESS

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)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!