1

我正在尝试为 SDF(空格分隔文件)生成行。我正在使用具有扩展属性 DBASEIV 的 OLEDB 适配器从 DBASE IV DBF 文件创建这些行,以获取数据。填充后我的数据列输出为 425 个字符,我将其放入 VB.NET 中的 datagridview 中以显示它。

但是,当我运行查询时,虽然它似乎正确执行,但结果字段限制为 256 个字符。我正在阅读的最长的单个字段是 35 个字符,我正在返回一个包含 2 个字段、条形码和 SDF 行的数据集。据我了解,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 回答