Foxtable(狐表)用户栏目专家坐堂 → 一个程序对应多个数据库


  共有4586人关注过本帖树形打印复制链接

主题:一个程序对应多个数据库

帅哥哟,离线,有人找我吗?
hopestarxia
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
一个程序对应多个数据库  发帖心情 Post By:2022/3/12 12:40:00 [显示全部帖子]

老师,开发了一个程序,用了一段时间后,重新建立了一个新的数据库,需要时不时的在新旧数据库中操作,使用中需要重新连接修改数据源,
有没有简单的示例可以直接打开程序后就可以选择下拉列表选择不同的数据源名称进入不同的数据源,这样就不用修改数据源连接、


 回到顶部
帅哥哟,离线,有人找我吗?
hopestarxia
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2022/3/12 15:34:00 [显示全部帖子]

谢谢老师!

 回到顶部
帅哥哟,离线,有人找我吗?
hopestarxia
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2022/3/27 22:38:00 [显示全部帖子]

If e.name = "数据源1" Then
     e.C & e.ProjectPath & e.User.ExtendedValues("数据库1") & ".mdb;Persist Security Info=False"
ElseIf e.name = "数据源2" Then
         e.C & e.ProjectPath & e.User.ExtendedValues("数据库2") & ".mdb;Persist Security Info=False"
End If

老师,我想把数据连接改为SQL数据库连接,同时像上面一样可以在出来选择账套时输入用户名和密码,SQL的怎么改?
另外是需要像例子一样重做登录窗口,还是可用自带的,在用户管理里加上扩展属性也可以?

Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=账套A;Data Source=127.0.0.1

Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=账套B;Data Source=127.0.0.1

 回到顶部
帅哥哟,离线,有人找我吗?
hopestarxia
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2022/3/27 22:52:00 [显示全部帖子]

谢谢老师!

 回到顶部
帅哥哟,离线,有人找我吗?
hopestarxia
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2022/3/28 14:03:00 [显示全部帖子]

老师,直接发代码报错,发到图片上了问题。
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20220328140105.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
hopestarxia
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2022/3/28 15:01:00 [显示全部帖子]

老师,我这里是指我不管选择2021还是2022,进去的都是对应的2021(2021也是我菜单设置的数据源)的数据,选择2022,进去还是2021的东西,好像那进原代码并没有管用一样。

 回到顶部
帅哥哟,离线,有人找我吗?
hopestarxia
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2022/3/28 15:53:00 [显示全部帖子]

老师:项目BeforeConnectOuterDataSource事件代码
If OpenFileArgs.Count = 0 Then
    '第一次连接的时候,需要将数据源连接到你项目的Access数据库,可以是一个空的数据库
    e.C
Else
    '然后设置成新的数据库.
    e.ConnectionString = OpenFileArgs(0)
End If

AfterOpenProject 事项代码为   
If OpenFileArgs.Count = 0 Then
    Forms("登录窗口").Show()
    If vars("conn") > "" Then
        Syscmd.Project.Open(ProjectFile,vars("conn"))
        Return
    End If
Else
 
If _UserName = "" Then
    Syscmd.Project.Exit()
    Return '这个要加上,因为既然要退出,就不应该再执行后面的初始化代码了,否则会出错
End If

End If

老师现在已经 可以进入不同的数据库了,但是登录的用户名却一直是一个,选择不同的用户登录后,还是显示是同一登录用户。

 回到顶部
帅哥哟,离线,有人找我吗?
hopestarxia
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2022/3/28 16:29:00 [显示全部帖子]

老师,加上后发现显示还是不正确,我把系统中窗口显示的当前的登录用户名代码由 e.Form.Controls("textbox2").Value = User.Name 改为了 e.Form.Controls("textbox2").Value = _UserName 发现就显示了。
但是发现例如2021数据源下用户有 张三 这个账号,进入一切正常,但是 2022 数据库下用户并没有 张三  ,也能进入,但是显示的当前的登录用户信息就是空了。这个2022如果没有该用户,是不是可以提示?
另外我有的地方要引用当前登录用户信息,是不是只能全部将 User.Name 改为 _UserName 才行了(不改还有别的方法没有?)?

 回到顶部
帅哥哟,离线,有人找我吗?
hopestarxia
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2022/3/28 17:35:00 [显示全部帖子]

老师,这个关系倒是不大,不同的业务库有的人能操作,有的人是不允许进入的。
我重调整一下权限,如果进去后没有对应用户,就不让点击功能按钮,这样调整一下。


 回到顶部
帅哥哟,离线,有人找我吗?
hopestarxia
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2022/3/28 17:41:00 [显示全部帖子]

嗯,慢慢整理一下,重设计 一下,照老师说的是优化多了。

 回到顶部
总数 13 1 2 下一页