2

Access 2003 には、外国語の文字を扱う必要があるデータベースがあります。文字は表にうまく表示されます。ただし、VBA がそれらを読み取ろうとすると、読み取れません。

例として、cf_Answer の列 ANSWER_TEXT には次のように表示されます。佛吉尼亞海灘

しかし、VBA の select ステートメント:

sqlstmt = "SELECT ANSWER_TEXT AS ans_text FROM cf_Answer"
Set rst_a = dbs.OpenRecordset(sqlstmt, dbOpenSnapshot)

rst_a![ans_text]戻ります??????

これが UTF-8 エンコーディングと関係があることはわかっていますが、設定する方法が見つかりません。テーブルに設定する方法はありますか?現在、ANSWER_TEXT は datatypememoです。または、これらの文字を理解するように VBA を設定する方法はありますか?

誰かが少なくとも私を正しい方向に向けることができますか?

4

1 に答える 1

3

問題は、その Unicode テキストを表示している場所が原因である可能性があります。

同じ文字をテーブルのテキスト フィールドに貼り付けました。イミディエイト ウィンドウでそれらを取得するとDLookup、イミディエイト ウィンドウには希望どおりに Unicode が表示されないため、疑問符が表示されます。

? DLookup("some_text", "tblFoo", "id = 1")
??????

AMsgBoxもそれらを疑問符として表示します。

MsgBox DLookup("some_text", "tblFoo", "id = 1")

ただし、フォーム テキスト ボックス コントロールには、Unicode を適切に処理する機能があります。これらの文字を含むフィールドにテキストボックスをバインドすると、これが得られます...

Unicode 文字を含むテキスト ボックス

クエリは Unicode 文字を参照することもできます。これはWHERE句で Unicode 文字を使用し、クエリをデータシート ビューで開いたときにすべて正しく表示します。

SELECT f.id, f.some_text
FROM tblFoo AS f
WHERE (((f.some_text) Like '佛*'));

これはすべて、これらのユニコード文字を使用しようとしている方法と、それらを表示している場所に帰着すると思われます。

コメントで、これらの Unicode 文字をテキスト ファイルに書き込むと疑問符しか生成されないと述べました。ただし、Unicode をテキスト ファイルに書き込んで (以下の手順に従って)、Unicode を正しく処理できるエディターでファイルを表示すると、それらが格納されているテーブルのデータシート ビューに表示されるのと同じ文字が表示されます。 . このスクリーンショットは、以下のコードから作成されたファイルで開かれたワードパッドを示しています。

Unicode テキストを表示するワードパッド

Dim objFso As Scripting.FileSystemObject
Dim objFile As Scripting.TextStream

Set objFso = New Scripting.FileSystemObject
Set objFile = objFso.OpenTextFile(CurrentProject.Path & _
    Chr(92) & "unicode.txt", ForWriting, True, TristateTrue)
objFile.Write DLookup("some_text", "tblFoo", "id = 1")
objFile.Close
Set objFile = Nothing
Set objFso = Nothing
于 2013-04-09T20:03:27.983 に答える