sql表中有243列,求导出dbf格式文件的方法(卫统N042表)
用pb把datawindow保存为dbf(3,4,5)格式时列数少时(网上说128列),可以正常保存,但这个表列数太多了,保存时出错。
先保存成access2003格式,再从access2003中导出为dbf也是出错。
保存成excel,再另存为dbf保存时不出错,但在卫统N042表上报引入dbf时,会出错!
excel直接改扩展名为dbf也不行。。。
还有什么办法?谁做过新的卫统N042表的接口数据?
[解决办法]
本帖最后由 lzp_lrp 于 2013-04-27 10:02:48 编辑 还有一个办法,保存一个10个的数据窗口为dbf文件,然后研究一下dbf文件的格式,然后使用fileopen、filewrite来自己生成一个dbf文件,我以后做财务接口时这么做过,生成dbf文件格式比较简单,前面的内容是固定的(好象只需要改个列数),你研究一下
以下是我做生成dbf文件的参考例子
(最后一段放在这里了,因为只允许连接回复三次)
for ll_row = 1 to ll_cnt
ls_blob = ''
for ll_item_row = 1 to ll_item_cnt
ls_col_nam = idw_item.getitemstring(ll_item_row, "column_nam")
ll_item_len = idw_item.getitemnumber(ll_item_row, "item_num")
if idw_data.describe(ls_col_nam + ".visible") = '!' then
ls_data = space(ll_item_len)
else
choose case idw_item.getitemstring(ll_item_row, "item_typ")
case 'string'
ls_data = idw_data.getitemstring(ll_row, ls_col_nam)
if len(ls_data) > 0 then
//
else
ls_data = ''
end if
ls_data = left(ls_data + space(ll_item_len), ll_item_len)
case 'number'
ls_data = string(idw_data.getitemnumber(ll_row, ls_col_nam), '##########.00000')
if len(ls_data) > 0 then
//
else
ls_data = ''
end if
ls_data = right(space(ll_item_len) + ls_data, ll_item_len)
case 'date'
ls_data = string(idw_data.getitemdatetime(ll_row, ls_col_nam), 'YYYYMMDD')
if len(ls_data) > 0 then
//
else
ls_data = ''
end if
ls_data = left(ls_data + space(ll_item_len), ll_item_len)
end choose
end if
ls_blob += ls_data
next
ls_blob = left(ls_blob, len(ls_blob) - 1)
//ls_blob += space(59) //space(80) + space(80) + space(20)
if ll_row = ll_cnt then
ls_blob += '~h31~h1A'
else
ls_blob += '~h31~h20'
end if
FileWrite(ll_handle, ls_blob)
next
FileClose(ll_handle)
return 1
nvo_commdlg_excel Dialogs
string ls_title = "文件另存为"
string ls_filter = "DBF文件(*.dbf)~t*.dbf~tALL文件(*.*)~t*.*"
string ls_initialdir = "C:\My Documents"
string ls_filename//保存的文件名,包括路径及扩展名;
string ls_extendname//文件扩展名;如".psr"
integer li_ret
long li_type
Dialogs.hWndParent = Handle(this)
Dialogs.Title = ls_title
Dialogs.Filter = ls_filter
Dialogs.FilterIndex = 1
Dialogs.InitialDir = "finance.dbf"
Dialogs.FileName = "finance.dbf"
Dialogs.Flags = Dialogs.BitOr({Dialogs.OFN_EXPLORER, Dialogs.OFN_LONGNAMES, Dialogs.OFN_PATHMUSTEXIST})
If Dialogs.SaveDialog() Then
ls_extendname = upper(right(trim(dialogs.filename), 4))
ls_filename = Dialogs.PathName + "" + Dialogs.FileName
ls_extendname = upper(right(trim(dialogs.filename), 4))
if FileExists(ls_filename) then
li_ret = gnv_app.of_Message("文件:" + ls_filename + " 已经存在,要覆盖这个文件吗?", Question!, OKCanCel!)
if li_ret = 1 then
//
else
return 0
end if
end if
else
return 0
end if
long ll_handle
blob lb_data
blob{1} lb_zero
string ls_data
ll_handle = FileOpen(ls_filename, StreamMode!, Write!, LockWrite!, Replace!)
if ll_handle = -1 then
gnv_app.of_message('文件打开失败,请检查是否在使用中!')
return 0
end if
string ls_hex
//生成接口文件
ls_data = ' 03 0A 09 0F'
ls_hex = gf_dectohex(idw_data.rowcount())
ls_data += ' ' + right('00' + left(ls_hex, 2), 2) + ' ' + left('00' + mid(ls_hex, 3, 2), 2)
ls_data += ' 00 00 01 0A 2E 15 00 00 00 00'// ; ........?R.....
ls_data += ' 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 44 41 54 45 00 00 00 00 00 00 44 00 00 00 00'// ; FDATE......D....
ls_data += ' 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 54 52 41 4E 53 44 41 54 45 00 44 00 00 00 00'// ; FTRANSDATE.D....
ls_data += ' 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 50 45 52 49 4F 44 00 00 00 00 4E 00 00 00 00'// ; FPERIOD....N....
ls_data += ' 14 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 47 52 4F 55 50 00 00 00 00 00 43 00 00 00 00'// ; FGROUP.....C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4E 55 4D 00 00 00 00 00 00 00 4E 00 00 00 00'// ; FNUM.......N....
ls_data += ' 14 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 45 4E 54 52 59 49 44 00 00 00 4E 00 00 00 00'// ; FENTRYID...N....
ls_data += ' 14 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 45 58 50 00 00 00 00 00 00 00 43 00 00 00 00'// ; FEXP.......C....
ls_data += ' FE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ?..............
ls_data += ' 46 41 43 43 54 49 44 00 00 00 00 43 00 00 00 00'// ; FACCTID....C....
ls_data += ' 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; (...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 31 00 00 43 00 00 00 00'// ; FCLSNAME1..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 31 00 00 00 00 43 00 00 00 00'// ; FOBJID1....C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 31 00 00 43 00 00 00 00'// ; FOBJNAME1..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 32 00 00 43 00 00 00 00'// ; FCLSNAME2..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 32 00 00 00 00 43 00 00 00 00'// ; FOBJID2....C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 32 00 00 43 00 00 00 00'// ; FOBJNAME2..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 33 00 00 43 00 00 00 00'// ; FCLSNAME3..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 33 00 00 00 00 43 00 00 00 00'// ; FOBJID3....C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 33 00 00 43 00 00 00 00'// ; FOBJNAME3..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 34 00 00 43 00 00 00 00'// ; FCLSNAME4..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 34 00 00 00 00 43 00 00 00 00'// ; FOBJID4....C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 34 00 00 43 00 00 00 00'// ; FOBJNAME4..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 35 00 00 43 00 00 00 00'// ; FCLSNAME5..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 35 00 00 00 00 43 00 00 00 00'// ; FOBJID5....C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 35 00 00 43 00 00 00 00'// ; FOBJNAME5..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 36 00 00 43 00 00 00 00'// ; FCLSNAME6..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 36 00 00 00 00 43 00 00 00 00'// ; FOBJID6....C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 36 00 00 43 00 00 00 00'// ; FOBJNAME6..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 37 00 00 43 00 00 00 00'// ; FCLSNAME7..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 37 00 00 00 00 43 00 00 00 00'// ; FOBJID7....C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 37 00 00 43 00 00 00 00'// ; FOBJNAME7..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 38 00 00 43 00 00 00 00'// ; FCLSNAME8..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 38 00 00 00 00 43 00 00 00 00'// ; FOBJID8....C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 38 00 00 43 00 00 00 00'// ; FOBJNAME8..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 39 00 00 43 00 00 00 00'// ; FOBJNAME9..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 39 00 00 00 00 43 00 00 00 00'// ; FOBJID9....C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 39 00 00 43 00 00 00 00'// ; FCLSNAME9..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 31 30 00 43 00 00 00 00'// ; FCLSNAME10.C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 31 30 00 00 00 43 00 00 00 00'// ; FOBJID10...C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 31 30 00 43 00 00 00 00'// ; FOBJNAME10.C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 31 31 00 43 00 00 00 00'// ; FCLSNAME11.C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 31 31 00 00 00 43 00 00 00 00'// ; FOBJID11...C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 31 31 00 43 00 00 00 00'// ; FOBJNAME11.C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 31 32 00 43 00 00 00 00'// ; FCLSNAME12.C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 31 32 00 00 00 43 00 00 00 00'// ; FOBJID12...C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 31 32 00 43 00 00 00 00'// ; FOBJNAME12.C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 31 33 00 43 00 00 00 00'// ; FCLSNAME13.C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 31 33 00 00 00 43 00 00 00 00'// ; FOBJID13...C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 31 33 00 43 00 00 00 00'// ; FOBJNAME13.C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 31 34 00 43 00 00 00 00'// ; FCLSNAME14.C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 31 34 00 00 00 43 00 00 00 00'// ; FOBJID14...C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 31 34 00 43 00 00 00 00'// ; FOBJNAME14.C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 4C 53 4E 41 4D 45 31 35 00 43 00 00 00 00'// ; FCLSNAME15.C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 49 44 31 35 00 00 00 43 00 00 00 00'// ; FOBJID15...C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 4F 42 4A 4E 41 4D 45 31 35 00 43 00 00 00 00'// ; FOBJNAME15.C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 54 52 41 4E 53 49 44 00 00 00 43 00 00 00 00'// ; FTRANSID...C....
ls_data += ' FE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ?..............
ls_data += ' 46 43 59 49 44 00 00 00 00 00 00 43 00 00 00 00'// ; FCYID......C....
ls_data += ' 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 45 58 43 48 52 41 54 45 00 00 4E 00 00 00 00'// ; FEXCHRATE..N....
ls_data += ' 14 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 44 43 00 00 00 00 00 00 00 00 43 00 00 00 00'// ; FDC........C....
ls_data += ' 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 46 43 59 41 4D 54 00 00 00 00 4E 00 00 00 00'// ; FFCYAMT....N....
ls_data += ' 14 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 51 54 59 00 00 00 00 00 00 00 4E 00 00 00 00'// ; FQTY.......N....
ls_data += ' 14 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 50 52 49 43 45 00 00 00 00 00 4E 00 00 00 00'// ; FPRICE.....N....
ls_data += ' 14 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 44 45 42 49 54 00 00 00 00 00 4E 00 00 00 00'// ; FDEBIT.....N....
ls_data += ' 14 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 43 52 45 44 49 54 00 00 00 00 4E 00 00 00 00'// ; FCREDIT....N....
ls_data += ' 14 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 53 45 54 54 4C 43 4F 44 45 00 43 00 00 00 00'// ; FSETTLCODE.C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 53 45 54 54 4C 45 4E 4F 00 00 43 00 00 00 00'// ; FSETTLENO..C....
ls_data += ' 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; (...............
ls_data += ' 46 50 52 45 50 41 52 45 00 00 00 43 00 00 00 00'// ; FPREPARE...C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 50 41 59 00 00 00 00 00 00 00 43 00 00 00 00'// ; FPAY.......C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 41 53 48 00 00 00 00 00 00 43 00 00 00 00'// ; FCASH......C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 50 4F 53 54 45 52 00 00 00 00 43 00 00 00 00'// ; FPOSTER....C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 43 48 45 43 4B 45 52 00 00 00 43 00 00 00 00'// ; FCHECKER...C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 41 54 54 43 48 4D 45 4E 54 00 4E 00 00 00 00'// ; FATTCHMENT.N....
ls_data += ' 14 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 50 4F 53 54 45 44 00 00 00 00 4C 00 00 00 00'// ; FPOSTED....L....
ls_data += ' 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 4D 4F 44 55 4C 45 00 00 00 00 43 00 00 00 00'// ; FMODULE....C....
ls_data += ' 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 44 45 4C 45 54 45 44 00 00 00 4C 00 00 00 00'// ; FDELETED...L....
ls_data += ' 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 53 45 52 49 41 4C 4E 4F 00 00 4E 00 00 00 00'// ; FSERIALNO..N....
ls_data += ' 14 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 55 4E 49 54 4E 41 4D 45 00 00 43 00 00 00 00'// ; FUNITNAME..C....
ls_data += ' 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; P...............
ls_data += ' 46 52 45 46 45 52 45 4E 43 45 00 43 00 00 00 00'// ; FREFERENCE.C....
ls_data += ' FE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ?..............
ls_data += ' 46 43 41 53 48 46 4C 4F 57 00 00 4E 00 00 00 00'// ; FCASHFLOW..N....
ls_data += ' 14 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 46 48 41 4E 44 4C 45 52 00 00 00 43 00 00 00 00'// ; FHANDLER...C....
ls_data += ' 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; 2...............
ls_data += ' 46 45 58 52 54 54 59 50 45 00 00 4E 00 00 00 00'// ; FEXRTTYPE..N....
ls_data += ' 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'// ; ................
ls_data += ' 0D 20 '// ; .
long ll_i, ll_len, ll_k, ll_char
ll_len = len(ls_data)
ll_k = ll_len / 3
ll_len = 1
for ll_i = 1 to ll_k
ll_char = gf_hextodec(mid(ls_data, (ll_i - 1) * 3 + 1, 3))
if ll_char = 0 then
lb_data = lb_data + lb_zero
else
lb_data = lb_data + blob(char(ll_char))
end if
next
FileWrite(ll_handle, lb_data)
long ll_item_row, ll_item_cnt
long ll_row, ll_cnt, ll_item_len
string ls_col_nam, ls_blob
ll_cnt = idw_data.rowcount()
ll_item_cnt = idw_item.rowcount()
//自动注册odbc数据源(对access数据库)
string ls_odbcname //odbc数据源名
string ls_database //access数据库
string ls_currentPath //当前路径
string ls_odbcDriver //odbc驱动
string ls_odbcdll //程序目录中包含odbcjt32.dll驱动
string ls_systempath=space(200)
//as_database='bk.mdb'//需要写在ini文件中
ls_currentPath = getCurrentDirectory()
ls_currentPath = ls_currentPath + "\db"//数据库放在\db的路径下面
ls_odbcname = "bk_jm" //数据源名可变
ls_database = ls_currentPath + "bk.mdb" //数据库文件可变
//ls_database = ls_currentPath + "bk.accdb" //数据库文件可变
ls_odbcdll = ls_currentPath + "odbcjt32.dll" //提前把odbcjt32.dll放在程序目录中
GetSystemDirectory(ls_systempath,255)
//odbc驱动文件必须放在系统目录下
ls_odbcDriver = ls_systempath + "\odbcjt32.dll"
if FileExists (ls_odbcDriver) then
else
if FileCopy (ls_odbcdll, ls_systempath, FALSE)<>1 then
goto re
end if
end if
//检查用户机子上是否已经安装了本程序所需的数据源
string ls_databasepath//如果已经有,注册健里的数据库值
string ls_regEditKey
ls_regEditKey = "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI" +ls_odbcname
string ls_regOdbcSources
ls_regOdbcSources = "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources"
//registryget(key, 数据,数据类型, 存放结果)
if registryget(ls_regEditKey, "DBQ", RegString!, ls_databasepath)=1 then
if lower(ls_databasepath) <> lower(ls_database) then
if registrySet(ls_regEditKey, "DBQ", RegString!, ls_database)=-1 then goto re//判断如果已经注册的数据库跟当前的数据库路径不一致,则更改
end if
return 0//代表已经注册,这里可能需要更改一下路径,只是对于数据库的路径
else
//注册用户数据源
if registrySet(ls_regEditKey, "DBQ", RegString!, ls_database)=-1 then goto re
if registrySet(ls_regEditKey, "Driver", RegString!, ls_odbcDriver)=-1 then goto re
if registrySet(ls_regEditKey, "DriverId", ReguLong!, 25)=-1 then goto re
if registrySet(ls_regEditKey, "FIL", RegString!, "MS Access")=-1 then goto re
if registrySet(ls_regEditKey, "UID", RegString!, "")=-1 then goto re //用户名可以自己设置,此处设置为空
if registrySet(ls_regEditKey, "PWD", RegString!, "")=-1 then goto re //密码可以自己设置,此处设置为空
if registrySet(ls_regEditKey, "SafeTransactions", ReguLong!, 0)=-1 then goto re
//下面这行程序把该用户dsn添加到odbc dsn列表中,即管理工具添加数据源的"可见性"
if registrySet(ls_regOdbcSources, ls_odbcname, RegString!, "Microsoft Access Driver(*.mdb)")=-1 then goto re
return 1 //代表成功
end if
re:
return -1//代表注册失败
[解决办法]
...