当前位置: 代码迷 >> PB >> PB的dw窗口导入txt文件数据的有关问题-在线期求,多谢啦
  详细解决方案

PB的dw窗口导入txt文件数据的有关问题-在线期求,多谢啦

热度:198   发布时间:2016-04-29 09:14:36.0
PB的dw窗口导入txt文件数据的问题--在线期求,谢谢啦!
要做一个txt文件导入到pb的dw中并最终保存到数据库中的程序,txt数据格式是固定的,但量很大,一次性导入会是上万笔资料,怎么做,请求大家给个例子,在线期求,谢谢啦!

------解决方案--------------------
照TXT格式做个DW,
dw_1.importfile("c:\1.txt")
------解决方案--------------------
dw_1.importfile()不写参数就行!

你试试就知道了!
再好就直接用数据库导入了!

------解决方案--------------------
一次性保存太多的数据,不好

偶以前写过一个程序,用FILEOPEN打开文件,一行一行的读取,保存到数据窗口
根据偶机器的性能,偶最后定下是5000行保存一次数据,也就是每5000行update一次数据窗口,然后再继续读数据,直到读光为止

在读、保存数据的过程中,偶用一个提示窗口显示保存数据的行数
这样人家不会以为死机了
------解决方案--------------------
SQL code
int li_returnstring ls_fullname,ls_filenameif GetFileOpenName ("选择导入文件", ls_fullname, ls_filename, &   "CSV", "CSV Files (*.CSV),*.CSV", &   "", 32770) < 1 then else    li_return = dw_1.importfile(CSV!,ls_fullname)    choose case li_return        case -1            messagebox('导入失败','文件内没有数据或数据过多!',StopSign!)        case -2            messagebox('导入失败','这是个空文件!',StopSign!)        case -3            messagebox('导入失败','参数错误!',StopSign!)        case -4            messagebox('导入失败','无效的输入!',StopSign!)        case -5            messagebox('导入失败','无法打开文件!',StopSign!)        case -6            messagebox('导入失败','无法关闭文件!',StopSign!)        case -7            messagebox('导入失败','读文本错误!',StopSign!)        case -8            messagebox('导入失败','文件格式错误,必须是*.csv,*.txt,*.dbf或*.xml格式的文件。',StopSign!)        case -10            messagebox('导入失败','不支持的dBase文件格式(仅支持dBase2或dBase3)',StopSign!)        case -11            messagebox('导入失败','XML文件解析错误;XML解析库不存在或XML格式不正确!',StopSign!)        case -12            messagebox('导入失败','XML模板不存在!',StopSign!)        case -13            messagebox('导入失败','DataWindow的格式不支持导入!',StopSign!)        case -14            messagebox('导入失败','DataWindow嵌套错误!',StopSign!)    end chooseend if
------解决方案--------------------
//偶写的参考代码

C/C++ code
/*假如文本如下:文件名:aa.txt2008-05-12    0001    aaa2008-05-12    0002    bbb数据窗口dw_1rq    rybh    ryxm*/long ll_fileopenlong ll_rowlong ll_rowcountstring ls_read,ls_templl_rowcount = 0ll_fileopen = fileopen("aa.txt",linemode!)if ll_fileopen<=0 then    messagebox("提示","打开文件失败")   returnend if//读文件do while fileread(ll_fileopen,ls_read)<>-100  ll_rowcount++  ll_row = dw_1.insertrow(ll_rowcount) //插入新行  yield()  st_ts.text="已读取数据:"+string(ll_rowcount)  //分解字符串并写数据到数据窗口中  ls_temp = mid(ls_read,1,10) //rq字段  dw_1.setitem(ll_row,"rq",ls_temp)  ls_temp = mid(ls_read,12,4)    //rybh字段  dw_1.setitem(ll_row,"rybh",ls_temp)  ls_temp = mid(ls_read,16)        //ryxm字段  dw_1.setitem(ll_row,"ryxm",ls_temp)  if mod(ll_rowcount,5000)=0 then //每5000条保存一次数据     yield()     st_ts.text = "提示:正在保存数据"     dw_1.update()     dw_1.reset()  end if  loop//剩下的数据再保存一次if dw_1.rowcount()>0 then   dw_1.update()end if
  相关解决方案