Foxtable(狐表)用户栏目专家坐堂 → 窗体中选择数据源后,怎么实现不动的数据源连接呢?一个是sql数据源 一个是acc数据源


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

主题:窗体中选择数据源后,怎么实现不动的数据源连接呢?一个是sql数据源 一个是acc数据源

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
窗体中选择数据源后,怎么实现不动的数据源连接呢?一个是sql数据源 一个是acc数据源  发帖心情 Post By:2022/1/16 17:15:00 [只看该作者]

在登录窗体登录的时候 先判断对应的SQL数据库是否可以连接
项目有两个数据源
图片点击可在新窗口打开查看
【用户登录】窗体加载后事件代码:
Dim s1 As String ="Pro vider=SQLOLEDB.1;Password=Aa123456;Persist Security Info=True;User ID=sa;Initial Catalog=网安综合业务;Data Source=192.168.0.56"
Dim t As WinForm.Label = e.Form.Controls("Label3")
Dim t1 As WinForm.ComboBox = e.Form.Controls("ComboBox1")
If Conn ectio ns.TryConnect(s1) = False  Then
    t.text="数据源无法连通,请联系管理员!"
    t1.text="本地acc数据库,仅供练习!"
Else
    t.text="当前数据源正常连接,可登陆使用!"
    t1.text="专用sql数据库,正式环境!"
End If

如果可以连接   就直接使用SQL数据库    
图片点击可在新窗口打开查看
反之就启动本地ACC数据库
图片点击可在新窗口打开查看


确定登录事件代码:
Dim UserName As String = e.Form.Controls("UserName").Value
Dim cmd As New SQ LCo mmand
Dim dt As DataTable
Dim dr As DataRow
Dim c1 As WinForm.ComboBox = e.Form.Controls("ComboBox1")
If c1.text="专用sql数据库,正式环境!"
    cmd.Con ne ctio nNa me = "电子审批台账"
Else If c1.text="本地acc数据库,仅供练习!"
    cmd.Co nnec tionN ame = "本地acc数据库"
End If

If UserName = ""  Then
    Messagebox.show("请选择用户!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
cmd.Comm andText = "Se lect * From {用户表} Where [警号] = '" & UserName & "'"
dt = cmd.ExecuteReader(True)
If dt.DataRows.Count = 0 Then
    Messagebox.show("此用户不存在!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
dr = dt.DataRows(0)
If e.Form.Controls("PassWord").Value = dr("密码") Then
    vars("警号") = UserName
    vars("UserName") = dr("用户名称")
    output.Show( vars("UserName") )
    vars("类别") = dr("类别")
    vars("所在单位") = dr("所在单位")
    e.Form.Close
Else
    Messagebox.show("密码错误!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

怎么实现
If c1.text="专用sql数据库,正式环境!"     时数据连接sql数据库的表
    cmd.Con ne ctio nNa me = "电子审批台账"
Else If c1.text="本地acc数据库,仅供练习!"    数据连接本地ACC数据库的表
    cmd.Co nnec tionN ame = "本地acc数据库"
End If

[此贴子已经被作者于2022/1/16 17:17:08编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/16 21:32:00 [只看该作者]

参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=153515&skin=0

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)参考:http://www.foxtable.com/bbs/...  发帖心情 Post By:2022/1/17 0:05:00 [只看该作者]

老师  参照你提供的例子 

当前已经实现实现一个acc一个sql  
选择sql数据源时 可以正常访问SQL数据库数据
选择acc数据源的时候  可以正常访问acc数据源中的数据

                MessageBox.Show(vars("UserName"))
                MessageBox.Show(vars("警号"))
这个sql或acc选择登录时,能够在登录的时候都弹出对应的正确提示内容,但是当当前登录窗体关闭后,打开其他对应的窗体  这两个弹出提示都是空值  
麻烦老师帮忙修正一下 
想让这两个值一直都存在项目中
                MessageBox.Show(vars("UserName"))
                MessageBox.Show(vars("警号"))
看看代码哪里不对呢    谢谢!

图片点击可在新窗口打开查看

当前确定登录代码如下:
Dim 警号 As String = e.Form.Controls("警号").Value

Dim dt As DataTable
Dim dr As DataRow
Dim cmd As New S Q LCommand

Dim str As String = e.Form.controls("combobox1").text
If str = Nothing Then
    msgbox("请选择数据源")
Else
    If str = "专用sql数据库,正式环境!" Then
        
        vars("conn") = "Provi der=SQLOLEDB.1;Password=Aa123456;Persist Security Info=True;User ID=sa;Initial Catalog=网安综合业务;Data Source=192.168.0.56"
        cmd.Con n ect ion N ame = "电子审批台账"
        If UserName = ""  Then
            Messagebox.show("请选择用户!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
            Return
        End If
        cmd.Comma ndText = "Sele ct * From {用户表} Where [警号] = '" & 警号 & "'"
        dt = cm d.ExecuteReader()
        If dt.DataRows.Count = 0 Then
            Messagebox.show("此用户不存在!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
            Return
        End If
        dr = dt.DataRows(0)
        If dr IsNot Nothing
            If e.Form.Controls("PassWord").Value = dr("密码") Then
                vars("警号") = 警号
                vars("UserName") = dr("用户名称")
                output.Show( vars("UserName") )
                vars("类别") = dr("类别")
                vars("所在单位") = dr("所在单位")
                
                MessageBox.Show(vars("UserName"))
                MessageBox.Show(vars("警号"))
                e.Form.Close
            Else
                Messagebox.show("密码错误!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
            End If
        Else
            Messagebox.show("警号错误或无该警号!请联系管理员","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        End If
        
    End If
    If str = "本地acc数据库,仅供练习!" Then
        
        vars("conn") = "Prov ider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ProjectPath & "\Attachments\陈正海2021.mdb;Persist Security Info=False"
        'e.Form.Close
        'Syscmd.Project.Open(ProjectFile, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ProjectPath & str & ".mdb;Persist Security Info=False")
        If UserName = ""  Then
            Messagebox.show("请选择用户!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
            Return
        End If
        
        dt = DataTables("用户表")
        dr = dt.sqlFind("警号='"& 警号 &"'")
        If dr IsNot Nothing
            If e.Form.Controls("PassWord").Value = dr("密码") Then
                vars("警号") = 警号 
                vars("UserName") = dr("用户名称")
                output.Show( vars("UserName") )
                vars("类别") = dr("类别")
                vars("所在单位") = dr("所在单位")
                
                MessageBox.Show(vars("UserName"))
                MessageBox.Show(vars("警号"))
                e.Form.Close
            Else
                Messagebox.show("密码错误!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
            End If
        Else
            Messagebox.show("警号错误或无该警号!请联系管理员","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        End If
    End If
    
End If
[此贴子已经被作者于2022/1/17 1:24:52编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/17 8:40:00 [只看该作者]

afteropenproject事件代码发上来

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)afteropenproject事件代码发上来  发帖心情 Post By:2022/1/17 9:53:00 [只看该作者]

afteropenproject事件代码:
If OpenFileArgs.Count = 0 Then
    Forms("登录窗口").Show()
    If vars("conn") > "" Then
        Syscmd.Project.Open(ProjectFile,vars("conn"))
        Return
    End If
Else
    'msgbox("打开数据源成功")
    Forms("主窗体").Show()
End If


beforeconnectouterdatasource事件代码:
If OpenFileArgs.Count = 0 Then
    '第一次连接的时候,需要将数据源连接到你项目的Access数据库,可以是一个空的数据库
    e.Conn ection String = "Pro vider=Microsoft.Jet.OLEDB.4.0;Data Source=" & e.ProjectPath & "\Attachments\陈正海2021.mdb;Persist Security Info=False"
Else
    '然后设置成新的数据库.
    e.ConnectionString = OpenFileArgs(0)
End If

麻烦老师  谢谢!
[此贴子已经被作者于2022/1/17 9:54:35编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/17 10:09:00 [只看该作者]


afteropenproject事件代码:
If OpenFileArgs.Count = 0 Then
    Forms("登录窗口").Show()
    If vars("conn") > "" Then
        Syscmd.Project.Open(ProjectFile,vars("conn"),vars("UserName"),vars("警号"))
        Return
    End If
Else
vars("UserName") = OpenFileArgs(1)
vars("警号") = OpenFileArgs(2)
    'msgbox("打开数据源成功")
    Forms("主窗体").Show()
End If

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)afteropenproject事件代码:If OpenF...  发帖心情 Post By:2022/1/17 15:36:00 [只看该作者]

谢谢老师

当前数据基本能够实现要求了 

但是在选择SQL数据库的时候  为什么总提示后续新增的用户不存在呢?
我已经对用户表数据进行了全部加载
图片点击可在新窗口打开查看
当以001登录之后  再切换用户  对应的 编号的用户又能够登录   但是在项目启动的第一次登录界面上  就无法直接登录003 004 005这些用户
麻烦老师帮忙看看   谢谢!




当前代码如下:
Dim dt As DataTable
Dim dr As DataRow
Dim cmd As New SQLCommand

Dim str As String = e.Form.controls("combobox1").text
If str = Nothing Then
    msgbox("请选择数据源")
Else
    If str = "专用sql数据库,正式环境!" Then
        vars("数据库类型")="sql"
        vars("conn") = "Prov ider=SQLOLEDB.1;Password=Aa123456;Persist Security Info=True;User ID=sa;Initial Catalog=网安综合业务;Data Sou rce=192.168.0.56"
        cmd.Co nn ectio nName = "电子审批台账"
        If UserName = ""  Then
            Messagebox.show("请选择用户!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
            Return
        End If
        cmd.Com ma ndText = "Sele ct * From {用户表} Where [警号] = '" & e.Form.Controls("警号").Value & "'"
        dt = cmd.ExecuteReader()
        If dt.DataRows.Count = 0 Then
            Messagebox.show("此用户不存在!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
            Return
        End If
        dr = dt.DataRows(0)
        If dr IsNot Nothing
            If e.Form.Controls("PassWord").Value = dr("密码") Then
                vars("警号") = e.Form.Controls("警号").Value
                vars("UserName") = dr("用户名称")
                output.Show( vars("UserName") )
                vars("类别") = dr("类别")
                vars("所在单位") = dr("所在单位")
                
                e.Form.Close
            Else
                Messagebox.show("密码错误!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
            End If
        Else
            Messagebox.show("警号错误或无该警号!请联系管理员","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        End If
        
    End If
    ……
    End If
End If
[此贴子已经被作者于2022/1/17 16:21:56编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/17 15:43:00 [只看该作者]

没有符合条件的数据
cmd.Com ma ndText = "Sele ct * From {用户表} Where [警号] = '" & e.Form.Controls("警号").Value & "'"
msgbox(cmd.CommandText )

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)没有符合条件的数据cmd.Com ma ndTex...  发帖心情 Post By:2022/1/17 16:19:00 [只看该作者]

图片点击可在新窗口打开查看
图片点击可在新窗口打开查看
提示这个语句和提示    当前数据库是有符合条件的数据行的
[此贴子已经被作者于2022/1/17 16:21:01编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/17 16:33:00 [只看该作者]

出现登录窗口的时候还是连接的菜单设置默认的数据源。登录重启项目后才是选择的数据源

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