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)
助けてくれてありがとう。