2017-07-12 14 views
0

問題の説明: 次のコードを使用して、Wordのテーブルにクエリの結果をエクスポートするMicrosoft Access Plus 2010を使用しています。ただし、レコードが255文字を超える場合は、すべての種類の特殊文字がエクスポートされます。以下は アクセスクエリレコードセットの結果出力に特殊文字が表示される

は、クエリされ、VBAなど

クエリ名:QAから

クエリ機能:Taの

VBAから選択フィールド:

Dim qbf As QueryDef 
Dim dabase As Database 
Set dabase = CurrentDb 
Set qdf = dbase.QueryDefs(Qa) 
Dim results As Recordset 
Dim flds As String 
Set results = qdf.OpenRecordset() 
While (Not results.EOF) 
    doc.addRecord results 
    results.MoveNext 
Wend 
qdf.Close 

Public Sub addRecord(pubRecordSet As Recordset) 
flds = pubRecordSet.Fields("fieldname") 
    mTable.cell(1, 1).range.InsertAfter (flds) 
... 
End Sub 

どこで 'mTable'はWoですrdテーブルオブジェクトで、 'fieldname'はWordテーブルにエクスポートされるフィールドの名前です。 このVBAは、fldsの長さが255未満の場合は一般的に問題ありませんが、長さが255を超えると、表のセルに多くの特殊文字がスローされます。

Word表のセルにエクスポートされた特殊文字の例:

退D瞻껙皿 Ƭ" " ᬈ௩Hȷ⫗ 鋨D૝૝ィ௨瞻껥皿௲Ǭ" "Tೕ ŮԱ ࿨ซ鐌D 

私はMSアクセスの制限をlink hereから確認しました。それはクエリのレコードセットが私のデータが少ない(〜255文字)1GBであることを言及します。どんな助けもありがとうございます。

+1

確認事項:1)データシートビューでクエリを開くと、影響を受けるレコードのテキストは正しく表示されますか? 2)それを設定した後に 'Debug.Print flds'を追加し、直接ウィンドウ(Ctrl + G)で出力を確認してください。 – Andre

+0

そして、 'flds'のデータ型は?文字列でなければならない – Andre

+0

fldsの型は文字列です。私はDebug.Printを行い、文字列が "結果の設定= qdf.OpenRecordset()"によって切り捨てられていることを発見しました – dellair

答えて

1

私は、彼らが切り捨てられているか、ここに記載されている理由の一つで行うことがほぼ確実に破損していると思う:彼らは255文字を超えている場合、長い彼らはメモ型または長いテキスト(同一の定義として解釈される定義ではhttp://allenbrowne.com/ser-63.html

- メモはデータ型の古い名前です)。

+1

はい、私はこのバグを打ちました '連結フィールドはレコードセットでガーベジを生成します。' http://allenbrowne.com/bug- 16.html。これは 'すべてのStructureOnlyテーブルの統合'で動作します。どうもありがとうございました! – dellair

関連する問題