关于OpenRowSet读取VFP的数据问题

Tosp2012 2012-10-09 04:02:34
需要把VFP6.0的数据dbf文件导入SQL2000里。
使用命令如下
insert Into xf select * from openrowset('MSDASQL','DRIVER=Microsoft Visual FoxPro Driver;SourceDB=D:\data;SourceType=DBF','select icbh,ntom(icje),ntom(usemon),rq,time,jqbh,jcs from xf where between(rq,{^2012-09-16},{^2012-09-30})')

下发现有个怪现象,就是导入的数据和VFP原来的数据不一致。
也就是 在SQL执行命令:
select * from openrowset('MSDASQL','DRIVER=Microsoft Visual FoxPro Driver;SourceDB=D:\data;SourceType=DBF','select icbh,ntom(icje),ntom(usemon),rq,time,jqbh,jcs from xf where between(rq,{^2012-09-16},{^2012-09-30})')
结果为:22284行

VFP里执行命令:
select icbh,ntom(icje),ntom(usemon),rq,time,jqbh,jcs from xf where between(rq,{^2012-09-16},{^2012-09-30})
结果为:22314行

以上2条命令应该是等价的啊,为什么出现这样的问题?
请各位大大释疑。谢谢!


...全文
173 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tosp2012 2012-10-15
  • 打赏
  • 举报
回复
自己找到問題的原因了,是有些記錄在VFP中打了刪除標記,SQL是不會認得這些記錄的,所有也就讀取的數據不一樣。
不過還是感謝幾位的回帖。

Tosp2012 2012-10-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
参考
[/Quote]

按照這個說法,
初步判斷生產問題的原因,是我的DBF表有重複的記錄造成。
在刪除重複記錄后,再試試。
Tosp2012 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
弱弱的说一句 你操作的是同一个文件吧
[/Quote]
是的,操作的都是VFP的dbf同一个文件。
汤姆克鲁斯 2012-10-09
  • 打赏
  • 举报
回复
汤姆克鲁斯 2012-10-09
  • 打赏
  • 举报
回复
弱弱的说一句 你操作的是同一个文件吧
Tosp2012 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
去掉between条件也不一致么?。。。
[/Quote]
是的,不带条件,结果也是不一样。
快溜 2012-10-09
  • 打赏
  • 举报
回复
去掉between条件也不一致么?。。。
Tosp2012 2012-10-09
  • 打赏
  • 举报
回复
把SQL里的语句换成这个
select * from openquery(DBFTOSQL,'select icbh,ntom(icje),ntom(usemon),rq,time,jqbh,jcs from xf where between(rq,{^2012-09-16},{^2012-09-30})')
结果同用OPenRowSet一样。

同VFP的还是不一致,这到底问题出在哪了?

Tosp2012 2012-10-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
如果都改成 select* from xf
结果一致不?
[/Quote]

结果也是不一致
汤姆克鲁斯 2012-10-09
  • 打赏
  • 举报
回复
如果都改成 select* from xf
结果一致不?

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧