hur.cn - 华软网

 热门搜索

请问如何动态连接vfp数据库文件?

  作者:未知    来源:网络    更新时间:2019/4/16
要求是软件打开后一个窗口,用户浏览一个vfp的数据库资料后,即连接该数据库.

哪位知道怎么做或那里有代码下载?谢谢了!
------华软网友回答------
你先建一个数据源,用odbc连接
------华软网友回复------
0068 -- 关于动态注册DBF数据源
http://www.51pb.com/viewthread.php?tid=917&extra=page%3D4
------华软网友回复------
0068 -- 关于动态注册DBF数据源

//************************************************************//
// 函数名: autosetodbc // 
// 功能: 主要是根据传入的库资料名,自动完成ODBC的配置 //
// 一资料名在ODBC中注册数据源 //
// 输入: // 
// ls_file 资料名称(主要是库资料) //
// ls_path 资料所在的目录 //
// as_drivedir 驱动程序路径 //
// 前往值: //
// 1 表示自动配置成功 //
// 0 表示自动配置失利 //
// 设计者: Adamswater //
// 完成时间: 2003年10月 //
// //
//************************************************************//
integer li_return //前往值
string ls_filename //库资料名
string ls_fileend //资料的扩展名
string ls_filedir //资料所在的目录
string ls_driver //驱动程序
integer li_rtn
blob lb_value
string ls_root
string ls_root_table

li_return = 1
ls_driver = as_drivedir + +"\vfpodbc.dll"
ls_fileend = right(ls_file,3) //获得资料的扩展名
ls_filename = left(ls_file,pos(ls_file,'.',1) - 1) //获得资料名
ls_filedir = ls_path//left(ls_path,lastpos(ls_path,'\') - 1)
ls_root = "HKEY_LOCAL_MACHINE\software\odbc\odbc.ini"
ls_root_table = ls_root + "\" + ls_filename
if ls_fileend="dbf" then
//先判断是否已经注册过
//被选择的是DBF资料时
li_rtn = registryset(ls_root,ls_filename,regstring!,"")
if li_rtn= - 1 then
return 0
end if
li_rtn = registryset(ls_root_table,"BackgroundFetch",regstring!,"Yes")
if li_rtn= - 1 then
return 0
end if
li_rtn = registryset(ls_root_table,"Collate",regstring!,"Machine")
if li_rtn= - 1 then
return 0
end if
li_rtn = registryset(ls_root_table,"Deleted",regstring!,"Yes")
if li_rtn= - 1 then
return 0
end if
li_rtn = registryset(ls_root_table,"Collate",regstring!,"Machine")
if li_rtn= - 1 then
return 0
end if
li_rtn = registryset(ls_root_table,"Description",regstring!,"")
if li_rtn= - 1 then
return 0
end if
li_rtn = registryset(ls_root_table,"Driver",regstring!,ls_driver)
if li_rtn= - 1 then
return 0
end if
li_rtn = registryset(ls_root_table,"Exclusive",regstring!,"No")
if li_rtn= - 1 then
return 0
end if
li_rtn = registryset(ls_root_table,"Null",regstring!,"Yes")
if li_rtn= - 1 then
return 0
end if
li_rtn = registryset(ls_root_table,"SetNoCountOn",regstring!,"No")
if li_rtn= - 1 then
return 0
end if
li_rtn = registryset(ls_root_table,"SourceDB",regstring!,ls_filedir)
if li_rtn= - 1 then
return 0
end if
li_rtn = registryset(ls_root_table,"SourceType",regstring!,"DBF")
if li_rtn= - 1 then
return 0
end if
else
end if
return li_return 

------华软网友回复------
讨教楼上的,这样连接能够举行一般的增删改吗?
------华软网友回复------
按照楼上几位朋友说的做了以后,你能够在你的程序中创建两个数据库连接事务。当用户需要对哪一个数据库举行操作,就用哪一个事务举行连接。操作完成后,记得断开。
------华软网友回复------
连接后能不能举行一般的增删修改,要看VF数据库中的表是否有主键和唯一索引。
如果数据库是空的,即使连上了,也没有用的。
------华软网友回复------
留脚印      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。