以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  项目本地数据库使用问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=88579)

--  作者:天若千颖
--  发布时间:2016/8/5 10:47:00
--  项目本地数据库使用问题

红袍老师,我在项目中为了保存用户的一些个人的资料,有的模块使用的是本地数据库,不同步到远程服务器.

 

如果我使用的是Foxtable的内部数据库,当用户升级软件的时候,会用新版本的数据覆盖以前的吗?比如说,在老版本的程序中,用户在一个内部数据的表中已经有10行的数据,而我提供的升级版的程序中,这个同名的表中是没有任何数据的,用户一旦升级,会不会把自己的数据给覆盖掉了?

 

如果我使用Access数据来存储用户个人表格,软件更新的时候不把这个Access文件放入升级包,这倒是不回覆盖用户自己的数据,但是一旦用Access数据,原先设置好的数据链接一旦用到客户的电脑上就不对了,又得手动设置数据源.

 

在开发版的程序中,本地ACCESS数据默认用的是绝对路径

 

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Soft\\fox\\LocalData\\QCLNGDMS.mdb;Persist Security Info=False  \'绝对路径

 

可以改为相对路径,比如:

 

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\\LocalData\\DMS.mdb;Persist Security Info=False   \'相对路径

 

但是一旦发布了程序,这个数据库的地址又变为如下才对:

 

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Soft\\fox\\project\\LocalData\\DMS.mdb;Persist Security Info=False

 

也就说之前设置的相对路径不对,用户登录后,必须管理员到用户的电脑上手动设置数据路径.

 

能否设置一个通用的相对路径地址,不用每个用户都手动去设置数据源呢?

 

[此贴子已经被作者于2016/8/5 11:07:37编辑过]

--  作者:天若千颖
--  发布时间:2016/8/5 11:16:00
--  
If e.name = "成绩" Then
    e.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & e.ProjectPath & 
"成绩数据.accdb;Persist Security Info=False"

End
 if

我试试这个相对路径的方法。

--  作者:大红袍
--  发布时间:2016/8/5 11:22:00
--  

 去编写 BeforeConnectOuterDataSource 事件

 

http://www.foxtable.com/webhelp/scr/0682.htm

 


--  作者:天若千颖
--  发布时间:2016/8/5 11:45:00
--  
在数据源的地方还是根据绝对路径设置外部数据源,然后在项目设置的BeforeConnectOuterDataSource中设置:
 


此主题相关图片如下:qq截图20160805115116.png
按此在新窗口浏览图片

 

Local是我本地数据源的名称

数据文件放在项目文件夹下LocalData文件夹下DMS.mdb文件中。

[此贴子已经被作者于2016/8/5 11:52:51编辑过]

--  作者:天若千颖
--  发布时间:2016/8/5 11:48:00
--  
写了半天  代码都显示不出来  部分被自动隐藏了。
--  作者:大红袍
--  发布时间:2016/8/5 11:53:00
--  

代码

 

e.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & e.projectPath & "\\LocalData\\QCLNGDMS.mdb;Persist Security Info=False"


--  作者:大红袍
--  发布时间:2016/8/5 11:54:00
--  

再有,你的mdb数据库,要放在发布后的文件夹的project文件夹才行吧?


--  作者:天若千颖
--  发布时间:2016/8/5 12:34:00
--  
我发布项目的时候添加了这个文件夹,数据库文件会自动复制到Project文件夹下。

启动的时候还是会提示Local数据不存在,请重新设置。

外部数据源这个地方,还是应该按照绝对路径添加一个Local设置吗?
 
 
[此贴子已经被作者于2016/8/5 13:34:34编辑过]

--  作者:天若千颖
--  发布时间:2016/8/5 12:47:00
--  
2003版本的数据应该用  Microsoft.Jet.OLEDB.4.0  而不是Microsoft.ACE.OLEDB.12.0  估计问题在这里。
--  作者:大红袍
--  发布时间:2016/8/5 14:25:00
--  
按照6楼设置,只要对应的文件夹存在,就不可能报错。注意,是publish文件夹下的project文件夹啊