У меня нет непосредственного опыта работы с элементами управления сеткой данных, но я уже заметил, что некоторые значения базы данных неправильно отображаются через элементы управления MS-Access. Например, для уникальных идентификаторов установлено значение «?????» значения при отображении в форме. Вы можете попробовать это в окне отладки, где элемент управления «myIdField» связан с полем «myIdField» из базового набора записей (уникальное поле типа идентификатора):
? screen.activeForm.recordset.fields("myIdField")
{F0E3C822-BEE9-474F-8A4D-445A33F363EE}
? screen.activeForm.controls("myIdField")
????
Вот что говорит справка Access по этому вопросу:
Ядро базы данных Microsoft Jet хранит GUID как
массивы типа Byte. Однако Microsoft Access не может вернуть байтовые данные
из элемента управления в форме или отчете. Для того, чтобы вернуть значение
GUID из элемента управления, вы должны преобразовать его в строку. Чтобы преобразовать
GUID для строки, используйте функцию StringFromGUID. Чтобы преобразовать строку
вернуться к GUID, используйте функцию GUIDFromString.
Так что, если вы извлекаете значения из элементов управления для обновления таблицы (напрямую или через набор записей), вы можете столкнуться с похожими источниками ...
Одним из решений будет обновление данных непосредственно из исходного значения набора записей. Другой вариант - открыть исходный набор записей с помощью запроса, содержащего необходимые инструкции преобразования, чтобы поле было правильно отображено через элемент управления.
Что я обычно делаю в аналогичной ситуации, когда мне приходится манипулировать полями uniqueIdentifier из нескольких источников данных (например, MS-Access и SQL Server), так это «стандартизировать» эти поля как текст в наборах записей. Наборы записей затем создаются с такими запросами, как:
SQL Server
"SELECT convert (nvarchar (36), myIdField) как myIdField, .... FROM ...."
MS-Access
"ВЫБЕРИТЕ stringFromGUID (myIdField) как myIdField, .... FROM ...."