關于PB連接Foxpro DBF檔案的問題.
作業中遇到需要向Foxpro 3.0 的DBF檔案中寫入資料,試用了以下的一些方法但無法實作.
1.使用ODBC中的"Driver do Microsoft dBase (*.dbf)"驅動創建了ODBC資料源,此資料源只選擇了路徑,其它選項使用默認.
在PB中使用此ODBC創建了一個DW,此DW中列型別中數值型的都顯示為'numeric'型別.往此DW中插入記錄(資料無錯)后update失敗.使用saveas()成 dBaseIII 的DBF檔案成功.但使用EXCEL打開此DBF檔案時,發現資料型欄位的單元格格式中為"自定義",設定為數值,并設定好小數位后,可以顯示出小數,否則小數位不顯示。便此檔案在金蝶K3中引入時,會將小數位忽略掉。并且使用EXCEL打開FOXPRO 3 的DBF時,數值是正常顯示,小數位也正常顯示,便打開DW saveas()的 dBaseIII DBF的話小數位就顯示不正常,可以認為是此dBaseIII的DBF非Foxpro 3 的DBF。
2。使用ODBC中的"Driver para o Microsoft Visual FoxPro"驅動創建了ODBC資料源,此資料源只選擇了路徑,其它選項使用默認.
在PB中使用此ODBC創建了一個DW,此DW中列型別中數值型的顯示為'n(20,5)'之類的型別.往此DW中插入記錄(資料無錯)后update失敗.使用saveas()成 dBaseIII 的DBF檔案也失敗!
3,在PB環境下的database畫板中使用上述的ODBC連接操作現象一樣。
現在想請問,如何才能使PB生成合格的Foxpro 3的DBF檔案呢?
uj5u.com熱心網友回復:
//以下是連接VF的資料庫并讀取資料的,樓主可以試著改一下,前提是必須有相應的DBF檔案存在string ls_foxpath
long ll_pos = 1
ls_foxpath = GetCurrentDirectory()
ll_pos = Pos(ls_foxpath,"\",ll_pos)
do while ll_pos > 0
ls_foxpath = Left(ls_foxpath,ll_pos) + "\" + Mid(ls_foxpath,ll_pos + 1)
ll_pos = Pos(ls_foxpath,"\",ll_pos + 2)
loop
long ll_rtn
ll_rtn = RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources","bianh-id-import",RegString!,"Microsoft Visual FoxPro Driver")
ll_rtn += RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\bianh-id-import","Driver",RegString!,"C:\\WINNT\\System32\\vfpodbc.dll")
ll_rtn += RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\bianh-id-import","SourceDB",RegString!,ls_foxpath)
ll_rtn += RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\bianh-id-import","Description",RegString!,"")
ll_rtn += RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\bianh-id-import","SourceType",RegString!,"DBF")
ll_rtn += RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\bianh-id-import","BackgroundFetch",RegString!,"Yes")
ll_rtn += RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\bianh-id-import","Exclusive",RegString!,"No")
ll_rtn += RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\bianh-id-import","Null",RegString!,"Yes")
ll_rtn += RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\bianh-id-import","Deleted",RegString!,"Yes")
ll_rtn += RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\bianh-id-import","Collate",RegString!,"Machine")
ll_rtn += RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\bianh-id-import","SetNoCountOn",RegString!,"No")
if ll_rtn <> 11 then
MessageBox("Caption","設定系統環境時出錯!系統將退出",StopSign!)
halt
end if
transaction sql_fox
sql_fox = create transaction
sql_fox.DBMS = "ODBC"
sql_fox.AutoCommit = False
sql_fox.DBParm = "ConnectString='DSN=bianh-id-import;UID=;PWD='"
connect using sql_fox;
if sql_fox.sqlcode = - 1 then
MessageBox("提示資訊","無法連接資料庫!錯誤資訊:~r" + sql_fox.sqlerrtext,StopSign!)
halt
end if
uj5u.com熱心網友回復:
現在我就使用“Microsoft Visual FoxPro Driver”驅動建個ODBC連接,試一下就可看出有沒有效果了吧。uj5u.com熱心網友回復:
測驗了一上,使用“Microsoft Visual FoxPro Driver”建了個ODBC連接,然后使用這個連接做了個DW,但DW的UPDATE()= -1,沒有任何錯誤提示。uj5u.com熱心網友回復:
有主鍵嗎?uj5u.com熱心網友回復:
必須設定好可更新的列uj5u.com熱心網友回復:
選擇了所有的列更新,并選擇了幾個主鍵!設定了可更新的表名。uj5u.com熱心網友回復:
upuj5u.com熱心網友回復:
以后不要發重復的貼子uj5u.com熱心網友回復:
我以為不同版會不同,以后不會了.請教啊.
uj5u.com熱心網友回復:
請參考:http://community.csdn.net/Expert/topic/5484/5484230.xml
uj5u.com熱心網友回復:
是別的原因,已經OK了.謝謝大家!uj5u.com熱心網友回復:
不知,幫頂轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/113682.html
標籤:數據庫相關
