1

SDF(スペース区切りファイル)の行を生成しようとしています。データを取得するために拡張プロパティDBASEIVを持つOLEDBアダプターを使用して、DBASEIVDBFファイルからこれらの行を作成しています。パディング後のデータ列の出力は425文字です。これを、VB.NETのdatagridviewに配置して表示しています。

ただし、クエリを実行すると、正しく実行されているように見えますが、結果のフィールドは256文字に制限されています。私が読んでいる最長の個々のフィールドは35文字で、バーコードとSDF行の2つのフィールドを持つデータセットを返しています。私が理解しているように、OLEDB Jet 4.0は最初の8行に基づいてタイプを推測しようとしますが、すべての行がデータ列の長さが等しい(425文字)ため、小さいフィールドタイプを選択する理由がわかりません。私のフィールドは文字列連結を使用して生成されたフィールドであるためだと思います。この質問の最後に恐ろしいSQLを含めました。だから私の質問は、どうすれば完全な425文字の出力を取得できますか?または、自分のフィールドのデータ型をメモとして指定する方法はありますか?

SELECT scan, 
RIGHT('0000000000000' + trim(cstr(scan)), 13) + 
LEFT(trim(cstr(name)) + '                                   ', 35) + 
LEFT(trim(cstr(name)) + '                ', 16) + 
'    ' + 
'             ' + 
'      ' + 
'1   ' + 
'0.00     ' + 
'0.00     ' + 
'1' + 
'0.00 ' + 
'0.01     ' + 
'0.00     ' + 
'F' + 
'2' + 
'0.00   ' + 
'0.00   ' + 
'   ' + 
'  ' + 
'  ' +
'SALS' + 
'    ' + 
'    ' +
LEFT(trim(cstr(plof)) + '             ', 13) + 
'             ' + 
'             ' + 
'0.00     ' + 
'0.00     ' + 
'0.00     ' + 
'F' + 
'T' + 
'001' + 
'    ' + 
'T' + 
'01' + 
'    ' + 
'        ' + 
'  ' + 
'    ' + 
'F' + 
'F' + 
'        ' + 
'        ' + 
'0   ' + 
'0.00     ' + 
'             ' + 
'0   ' + 
'0.00     ' + 
'0.00   ' + 
'0.00   ' + 
'0.00   ' + 
'1    ' + 
'1    ' + 
'1    ' + 
'0.00  ' + 
'0.00  ' + 
'0.00  ' + 
'0.00 ' + 
'0.00 ' + 
'0.00 ' + 
'                ' + 
'                ' + 
'  '
as STTEMPLINE
from salus where cstr(scan) in (select distinct cstr(scan) from nonscan)

助けてくれてありがとう。

4

1 に答える 1

0

これは、最初の数行のデータに基づいてデータ型が推測される既知の問題です。

この投稿を参照してください...

Excel シートを DataTable にロードしますが、セルごとに最初の 256 文字のみがインポートされます。

また、OLEDB が混合データ型を処理する方法の説明については、この投稿を参照してください...

http://social.msdn.microsoft.com/Forums/pl-PL/csharplanguage/thread/0404d003-5bfb-44f9-8e6b-aebdfce24875

于 2012-08-20T16:08:18.883 に答える