关于PB连接Foxpro DBF文件的问题.

mzqfk 2007-04-20 10:35:32
关于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文件呢?


...全文
737 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
不知,帮顶
mzqfk 2007-04-26
  • 打赏
  • 举报
回复
是别的原因,已经OK了.谢谢大家!
十豆三 2007-04-23
  • 打赏
  • 举报
回复
请参考:

http://community.csdn.net/Expert/topic/5484/5484230.xml
mzqfk 2007-04-20
  • 打赏
  • 举报
回复
选择了所有的列更新,并选择了几个主键!设置了可更新的表名。
青锋-SS 2007-04-20
  • 打赏
  • 举报
回复
必须设置好可更新的列
青锋-SS 2007-04-20
  • 打赏
  • 举报
回复
有主键吗?
mzqfk 2007-04-20
  • 打赏
  • 举报
回复
测试了一上,使用“Microsoft Visual FoxPro Driver”建了个ODBC连接,然后使用这个连接做了个DW,但DW的UPDATE()= -1,没有任何错误提示。
mzqfk 2007-04-20
  • 打赏
  • 举报
回复
现在我就使用“Microsoft Visual FoxPro Driver”驱动建个ODBC连接,试一下就可看出有没有效果了吧。
青锋-SS 2007-04-20
  • 打赏
  • 举报
回复
//以下是连接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
mzqfk 2007-04-20
  • 打赏
  • 举报
回复
我以为不同版会不同,以后不会了.
请教啊.
WorldMobile 2007-04-20
  • 打赏
  • 举报
回复
以后不要发重复的贴子
mzqfk 2007-04-20
  • 打赏
  • 举报
回复
up

752

社区成员

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

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