Foxtable(狐表)用户栏目专家坐堂 → 连接SQsever登录问题(测试)


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

主题:连接SQsever登录问题(测试)

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/10/17 17:18:00 [显示全部帖子]

我将用户表定向到SQL Server,测试好像正常呢。

我留意到你更改用户窗口的确定按钮,漏了一行:

cmd.C

 

你测试我这个文件,注意用户表所在的SQL数据源名称我改为abc了:

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/10/17 17:27:00 [显示全部帖子]

记得: 你更改用户窗口的确定按钮没有指定cmd的数据源名称,漏掉了一行:

 

cmd.Connection Name = "数据源"


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/10/18 12:40:00 [显示全部帖子]

这个和和数据源无关,和你的代码有关,登录窗口的AfterLoad事件改为:

 

 

Dim cmd As New SQLCommand
Dim dt As DataTable
Dim cmb As WinForm.ComboBox = e.Form.Controls("UserName")
cmd.C   '外部数据源
cmd.CommandText = "SELECT DISTINCT 用户名称 From {用户表}"
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.Datarows
    cmb.Items.Add(dr("用户名称"))
Next
If cmb.Items.Count > 0 Then
    cmb.SelectedIndex = 0
End If

 

因为定向后的用户表是空的,所以出错。

建议你看看:

http://www.foxtable.com/help/topics/1485.htm

这样一旦出错,就能自己找出出错代码的位置,大概就知道原因了,不至于束手无策。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/10/18 14:30:00 [显示全部帖子]

你确定按钮当然要出错,应为你屏蔽了这行代码:

 

 

Dim UserName As String = e.Form.Controls("UserName").Value
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim dr As DataRow
'cmd.Connection Name = "test2"   外部数据源
If UserName = ""  Then
    Messagebox.show("请选择用户!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/10/18 14:33:00 [显示全部帖子]

Dim UserName As String = e.Form.Controls("UserName").Value
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim dr As DataRow
'cmd.Connection Name = "test2" 外部数据源
If UserName = ""  Then
    Messagebox.show("请选择用户!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
cmd.CommandText = "Select * From {用户表} Where [用户名称] = '" & UserName & "'"
dt = cmd.ExecuteReader
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
    _UserName = UserName
    _UserGroup = dr("分组名称")
    e.Form.Close

For Each t As Table In Tables
    t.Visible = True
    t.AllowEdit = True
    For Each c As Col In t.Cols
        c.Visible = True
        c.AllowEdit = True
    Next
Next

Tables("授权表").Visible = (_UserGroup = "管理人员A")

For Each dr1 As DataRow In DataTables("授权表").Select("分组名称 = '" & _UserGroup & "'" )
    If dr1.IsNull("列名称") Then
        Tables(dr1("表窗名称")).Visible = Not dr1("不可见")
        Tables(dr1("表窗名称")).AllowEdit = Not dr1("不可编辑")
    Else
        Tables(dr1("表窗名称")).Cols(dr1("列名称")).Visible = Not dr1("不可见")
        Tables(dr1("表窗名称")).Cols(dr1("列名称")).AllowEdit = Not dr1("不可编辑")
    End If
Next
   If  _usergroup <> "管理人员A" Then
      Tables("授权表").Visible = False
    Else
       Tables("授权表").Visible = True  
    End If

Else
    Messagebox.show("密码错误!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

 

好好看看这里:

http://www.foxtable.com/help/topics/1485.htm

知道这么找出出错的代码,这样就能更快地找出原因。

 

此外要知道: 重定向之后,新数据库中的表是空的,你得重新增加用户来测试。

[此贴子已经被作者于2012-10-18 14:42:34编辑过]

 回到顶部