提示“Data type mismatch”该如何解决

cyxin2121921 2009-09-28 08:16:56
利用菜单导入excel时候,运行到下面红色部分的时候总是会提示“Data type mismatch”错误提示。
用到的这个excel表存放在http://www.access911.net/csdn/FileDescription.asp?mdb=2009-9-25&id=31&mode=3
这个网页上面的cwb1.7z文件就是
请大家帮忙看看 这个xls表中是不是设置的字段的类型有问题
其中 材料编码、规格型号、计划单价、计划金额 几个字段存在空值
但是我补充了前面几条的纪录的时候 这个错误依旧存在

其中材料编码(常规)、材料名称(常规)、规格型号(常规)、计量单位(常规)、数量(数值)、计划单价(数值)、计划金额(数值)、部门(常规)
其中在xls中 材料编码、规格型号、计划单价、计划金额部分字段为空
在vfp中定义字段为依次为材料编码(字符(20))、材料名称(字符(30))、规格型号(字符(30))、计量单位(字符(10))、数量(数值(10,2))、计划单价(数值(10,2))、计划金额(数值(10,2))、部门(字符(20))

SET ENGINEBEHAVIOR 70
public mypath
mypath=""
mypath=getfile("xls")
if empty(mypath)
wait clear
return
endif
_ole_excel = CreateObject("Excel.Application")
_ole_excel.WorkBooks.Open(mypath) && 要打开的工作表名(xls)必须是全路径
_ole_excel.WorkSheets(1).Activate &&激活指定的工作簿
bookExcel = _ole_excel.APPLICATION.Workbooks.OPEN(mypath)
nrows=bookExcel.Worksheets(1)
UsedRange =nrows.UsedRange
r = UsedRange.ROWS.COUNT

USE cwb
dele all
pack
for i=2 TO r
IF empty(nvl(_ole_excel.cells(i,1).value,''))
EXIT
else
With _ole_excel
Insert Into cwb ;
(材料编码,材料名称,规格型号,计量单位,数量,计划单价,计划金额,部门,部位号) ;
Values ( ;
Nvl(.cells(i,1).value,''), Nvl(.cells(i,2).value,''), ;
Nvl(.cells(i,3).value,''), Nvl(.cells(i,4).value,''), ;
Nvl(.cells(i,5).value, 0), Nvl(.cells(i,6).value, 0), ;
Nvl(.cells(i,7).value, 0), Nvl(.cells(i,8).value,''), ;
Nvl(.cells(i,9).value, ''))

EndWith

endif
ENDFOR
use
_ole_excel.quit


...全文
3837 36 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyxin2121921 2009-09-30
  • 打赏
  • 举报
回复
好的 我试一试
WWWWA 2009-09-30
  • 打赏
  • 举报
回复
那你安装2000试试,再导入数据,看看问题是否依然存在
cyxin2121921 2009-09-30
  • 打赏
  • 举报
回复
不行 我曾经尝试多删除几条空的纪录 但是不行
WWWWA 2009-09-30
  • 打赏
  • 举报
回复
再用你的XLS文件测试,确实只有1799条记录,难道是2000与2003有区别?
你将多出的空记录删除不行吧?
cyxin2121921 2009-09-29
  • 打赏
  • 举报
回复
好的 多谢 多多谢
wwwwb 2009-09-29
  • 打赏
  • 举报
回复
我也是在VFP9下测试的,1799
明天我再看看,下班了
cyxin2121921 2009-09-29
  • 打赏
  • 举报
回复
我在VFP6中可以实现的 记录数是对的
但是VFP9中 却不知道为啥会多出四条记录来
你看我的7z文件中的dinge.dbf您就可以看到的!

WWWWA 2009-09-29
  • 打赏
  • 举报
回复
用你上述XLS文件测试,记录条数也是1799
cyxin2121921 2009-09-29
  • 打赏
  • 举报
回复
http://www.access911.net/csdn/FileDescription.asp?mdb=2009-9-29&id=37&mode=3
k226-fsy-1.7z这个就是我现在经常用的表
cyxin2121921 2009-09-29
  • 打赏
  • 举报
回复
这个就是我工作xls的
wwwwb 2009-09-29
  • 打赏
  • 举报
回复
那就上传你的工作XLS,来测试一下
cyxin2121921 2009-09-29
  • 打赏
  • 举报
回复
但是我这个的确是不正确 这种情况我也把excel表中下面几行我做了删除操作 但是还是不行
wwwwb 2009-09-29
  • 打赏
  • 举报
回复
你的XLS与上传的是一样的?应该没有问题嘛
cyxin2121921 2009-09-29
  • 打赏
  • 举报
回复
你看我那个dinge.dbf中 的确存在几条多余的记录
同样是这样的代码 但是在6中 我运行的结果是正确的
但是上面压缩文件时在9下面运行出来的结果
cyxin2121921 2009-09-29
  • 打赏
  • 举报
回复
VFP9+EXCEL2003
WWWWA 2009-09-29
  • 打赏
  • 举报
回复
在vfp6中 操作下述部分红色部分 是不是必须要键入 全部路径
而在9.0 中 键入相对路径就可以?

no,用变量即可
WWWWA 2009-09-29
  • 打赏
  • 举报
回复

http://www.access911.net/csdn/FileDescription.asp?mdb=2009-9-29&id=36&mode=3
中的数据测试,副本副本副本k226-fsy-1.xls另存为TXT文件,导入DINGE,记录条数1799,
在VFP9+EXCEL2000下测试,你的运行环境?
cyxin2121921 2009-09-29
  • 打赏
  • 举报
回复
我此时用的是VFP9.0
我想请教一下
在vfp6中 操作下述部分红色部分 是不是必须要键入 全部路径
而在9.0 中 键入相对路径就可以?
_ole_excel.ActiveWorkbook.SAVEAS("R:\TEMP\QQ.TXT",-4158)
_ole_excel.quit
RELEASE _ole_excel
USE R:\TEMP\CWB
ZAP
APPEND FROM R:\TEMP\QQ.TXT DELIMITED WITH TAB
cyxin2121921 2009-09-29
  • 打赏
  • 举报
回复
http://www.access911.net/csdn/FileDescription.asp?mdb=2009-9-29&id=36&mode=3
定额比较.7z
用户为cyxin2121921
WWWWA 2009-09-29
  • 打赏
  • 举报
回复
上传你的XLS、DBF、PRG到
http://www.access911.net/csdn/
出错的记录号是多少?在XLS中是第几行?
加载更多回复(15)

2,748

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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