我对数据网格控件没有直接经验,但我已经注意到某些数据库值无法通过 MS-Access 控件正确显示。例如,Uniqueidentifiers 设置为 '?????' 显示在表单上时的值。您可以在调试窗口中尝试此操作,其中“myIdField”控件绑定到来自底层记录集的“myIdField”字段(唯一标识符类型字段):
? screen.activeForm.recordset.fields("myIdField")
{F0E3C822-BEE9-474F-8A4D-445A33F363EE}
? screen.activeForm.controls("myIdField")
????
以下是访问帮助关于此问题的说明:
Microsoft Jet 数据库引擎将 GUID 存储为字节类型的数组。但是,Microsoft Access 不能从窗体或报表上的控件返回字节数据。为了从控件返回 GUID 的值,您必须将其转换为字符串。要将 GUID 转换为字符串,请使用 StringFromGUID 函数。要将字符串转换回 GUID,请使用 GUIDFromString 函数。
因此,如果您从控件中提取值以更新表(直接或通过记录集),您可能会遇到类似的发行者......
一种解决方案是直接从记录集原始值更新数据。另一种选择是使用包含必要转换指令的查询打开原始记录集,以便通过控件正确显示该字段。我通常在类似的情况下,我必须操作来自多个数据源(例如 MS-Access 和 SQL Server)的 uniqueIdentifier 字段,将这些字段“标准化”为记录集中的文本。然后使用以下查询构建记录集:
SQL 服务器
“选择转换(nvarchar(36),myIdField)作为myIdField,.... FROM ....”
MS-Access
“SELECT stringFromGUID(myIdField) as myIdField, .... FROM ....”