私はデータグリッドコントロールを直接経験したことはありませんが、一部のデータベース値がMS-Accessコントロールを介して正しく表示されないことにすでに気づきました。たとえば、Uniqueidentifiersは'?????'に設定されます フォームに表示されたときの値。これは、デバッグウィンドウで試すことができます。この場合、「myIdField」コントロールは、基になるレコードセット(一意の識別子タイプフィールド)の「myIdField」フィールドにバインドされます。
? screen.activeForm.recordset.fields("myIdField")
{F0E3C822-BEE9-474F-8A4D-445A33F363EE}
? screen.activeForm.controls("myIdField")
????
アクセスヘルプがこの問題について述べていることは次のとおりです。
Microsoft Jetデータベースエンジンは、GUIDをByte型の配列として格納します。ただし、Microsoft Accessは、フォームまたはレポートのコントロールからバイトデータを返すことはできません。コントロールからGUIDの値を返すには、それを文字列に変換する必要があります。GUIDを文字列に変換するには、StringFromGUID関数を使用します。文字列をGUIDに戻すには、GUIDFromString関数を使用します。
したがって、コントロールから値を抽出してテーブルを更新する場合(直接またはレコードセットを介して)、同様の発行者に直面する可能性があります...
1つの解決策は、レコードセットの元の値から直接データを更新することです。別のオプションは、フィールドがコントロールを介して正しく表示されるように、必要な変換命令を含むクエリで元のレコードセットを開くことです。複数のデータソース(MS-AccessやSQL Serverなど)のuniqueIdentifierフィールドを操作する必要がある同様の状況で通常行うことは、これらのフィールドをレコードセットのテキストとして「標準化」することです。次に、レコードセットは次のようなクエリで作成されます。