以文本方式查看主题 - 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中设置:
[此贴子已经被作者于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文件夹啊 |