1

「C」コードを含むテキストを MS ACCESS テーブルに (プログラムで) 保存しようとすると、エスケープ シーケンス ('\n'、'\t') を疑問符記号に置き換えます。

例 :

保存するコード:

#include<stdio.h>
int main()
{
  printf("\n\n\t Hi there...");
  return 0;
} 

上記の挿入されたコードの MS-Access テーブルを見ると、すべての改行文字と「\t」文字が「?」に置き換えられていることが示されています。シンボルの一種。

私の質問は、「エスケープ シーケンスを何らかの記号に置き換えずに、コードをそのまま格納する MS-Access フィールド用の他のデータ型はありますか?」そして、「MySQL のような他の DBMS に '生の' データ型が存在するか?」

access-07 では次のように表示されます。

これは、疑問符記号を表示する方法です

4

2 に答える 2

0

ソース テキストの改行が Windows 標準の CRLF (キャリッジ リターン、ライン フィード) ではないようです。それらの謎の文字の文字コードを見つけてください。

以下の手順を使用して、テキスト文字列を入力すると、各文字のコードが一覧表示されます。イミディエイト ウィンドウの例を次に示します。

AsciiValues "a" & vbcrlf & "b"
position      Asc           AscW
 1             97            97 
 2             13            13 
 3             10            10 
 4             98            98 

テーブルのテキスト フィールドに格納されている値を調べたい場合は、 を使用DLookupしてその値を取得し、関数にフィードできます。

AsciiValues DLookup("memo_field", "tblFoo", "id=1")
position      Asc           AscW
 1             108           108 
 2             105           105 
 3             110           110 
 4             101           101 
 5             32            32 

問題のある文字のコードを特定したら、UPDATEステートメントを実行して、問題のある文字コードを適切な代替コードに置き換えることができます。

UPDATE YourTable
SET YourField = Replace(YourField, Chr(x), Chr(y));

そして、これが手順です...

Public Sub AsciiValues(ByVal pInput As String)
    Dim i As Long
    Dim lngSize As Long
    lngSize = Len(pInput)
    Debug.Print "position", "Asc", "AscW"
    For i = 1 To lngSize
        Debug.Print i, Asc(Mid(pInput, i, 1)), AscW(Mid(pInput, i, 1))
    Next
End Sub
于 2013-02-27T20:04:43.933 に答える
0

おそらく改行全体が欠けていると思います。Access の改行は、キャリッジ リターン (ASCII 13)ライン フィード (ASCII 10) で構成されます。これは CRLF と略されます。おそらくどちらか一方しか持っていませんが、両方は持っていません。

HansUp の AsciiValues プロシージャを使用して確認してください。

于 2013-02-28T02:15:18.453 に答える