高分求助pb importString

qj_198127 2008-09-27 05:11:30
dw_1.importString(csv!,is_data)
is_data为空怎么就没有反映?
如果第一次查询ls_data有记录,那么就显示出有结果,可ls_data为空的时候老是还显示第一次的记录呢,奇怪
...全文
600 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
richardcyq 2008-10-08
  • 打赏
  • 举报
回复
我怀疑是不是你的其他语句有问题?
richardcyq 2008-10-08
  • 打赏
  • 举报
回复
dw_1.reset() 肯定行,我一直这么用,我导的excel。
qj_198127 2008-10-08
  • 打赏
  • 举报
回复
就是相当于把下面格式的字符
2,1,"000092813","张山*","办证",0,0,0,131,-1,8155537,"sy",1750800,1,"",0,"",,"","","",0
3,1,"55559999","王五*","征费",0,0,0,230,0,7700446,"nls",1777800,1,"",0,"",,"","","",0
填充到设置好的一个datawidows里面.
hnzyydx123 2008-10-08
  • 打赏
  • 举报
回复
请问下importstring是什么意思啊?用于做什么用的啊
qj_198127 2008-10-08
  • 打赏
  • 举报
回复
4楼说的如果查询没有记录,
if isnull(i_rc) or i_rc <0 then //小于0
....//导入失败
那导入失败时,总要把datawidows清空,可是像dw_1.importString(csv!,is_data)
这样的填充如何才能把datawidows里面清空呀?用dw_1.retrieve(-1)和dw_1.reset() 都行不通
,我实在找不到好的办法.
richardcyq 2008-10-08
  • 打赏
  • 举报
回复
4楼正解啊,怎么会不行呢?
qj_198127 2008-10-08
  • 打赏
  • 举报
回复
再个问题可能是我第一个人遇到吧,我导入的是文本,区别很大.不过先谢谢你们了.
richardcyq 2008-10-08
  • 打赏
  • 举报
回复
这么说也说不清,还是给你段代码作参考吧

string ls_path,ls_file,ls_err,ls_targerfile
boolean lb_delete
if GetFileOpenName("请选择目标文件",ls_path,ls_file,"xls","Excel文件(*.xls),*.xls") = 1 then
ls_targerfile=Left(ls_path,Len(ls_path) - 4) + "_temp.txt"
OLEObject ExcelServer
ExcelServer = CREATE OLEObject
IF ExcelServer.ConnectToNewObject( "excel.application" ) < 0 THEN
messagebox("","连接excel失败,检查你的系统是否安装了office,必须安装EXCLE才可以使用该导入功能!")
ELSE
lb_delete =TRUE
ExcelServer.Workbooks.Open(ls_path)
excelserver.activeworkbook.saveas(ls_targerfile,3)
excelserver.displayalerts=false
ExcelServer.quit()
excelserver.displayalerts=true
ExcelServer.DisconnectObject()
END IF
end if
dw_1.reset()
if isnull(dw_1.importfile(ls_targerfile,2)) or dw_1.importfile(ls_targerfile,2) < 0 then
messagebox("警告", '待导入数据有错误,请改正后再次进行操作!')
return
else
destroy ExcelServer
dw_1.settransobject(sqlca)
messagebox("成功","数据导入成功!")
commit;
FileDelete(ls_targerfile)
end if
qj_198127 2008-10-07
  • 打赏
  • 举报
回复
???紧急求助
qj_198127 2008-10-07
  • 打赏
  • 举报
回复
你的意思是判断查询出有无记录的问题,如果没有记录就报错,但我现在出现棘手的问题是如果没有记录得把我上次查询的记录覆盖,要不然没有记录也显示上次的
记录,就矛盾了.
jlwei888 2008-10-07
  • 打赏
  • 举报
回复
if isnull(i_rc) or i_rc<0 then //小于0
....//导入失败
qj_198127 2008-10-07
  • 打赏
  • 举报
回复
jlwei888,
你的代码我换了还是不行,也还是空的问题,现在关键的问题是如果我第一次查询出有记录,假如有10个字段,如果下一次查询出的结果为空,那么估计填充的时候
程序应该不知道到底用好多个空字段来填.
在应该是importString函数的漏洞(我认为),不知道楼主怎么理解?
jlwei888 2008-10-07
  • 打赏
  • 举报
回复
都是reset() 那个if有什么用啊!



int i_rc
is_data = string(ole_ie.object.document.f_execute_sql.result.innerText)
dw_1.reset()
i_rc = dw_1.importString(csv!,is_data)
if isnull(i_rc) or i_rc>0 then
....//导入失败

qj_198127 2008-10-07
  • 打赏
  • 举报
回复
还是不行,我改后的代码
if string(ole_ie.object.document.f_execute_sql.result.innerText) <> '' then
dw_1.reset()
is_data = string(ole_ie.object.document.f_execute_sql.result.innerText)
dw_1.importString(csv!,is_data)
else
dw_1.reset()
end if
dw_1.resetUpdate()
pcwe2002 2008-09-27
  • 打赏
  • 举报
回复
先将第一次记录清空再导入
dw_1.reset()
javaxi 2008-09-27
  • 打赏
  • 举报
回复
dw_1.reset()

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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