以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  新增用户代码能否这样简化  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=149537)

--  作者:天宇科技
--  发布时间:2020/5/5 19:06:00
--  新增用户代码能否这样简化
帮助中新增用户代码非常复杂。如下:
Dim UserName As String = e.Form.Controls("UserName").Value
Dim UserGroup As String  = e.Form.Controls("UserGroup").Value
Dim PassWord As String = e.Form.Controls("PassWord").Value
Dim cmd As New SQLCommand
cmd.ConnectionName = "database"
If UserName = "" OrElse UserGroup = "" Then
    Messagebox.show("请输入用户名和用户分组!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
cmd.CommandText = "Select Count(*) Fro m {Users} Where Name = \'" & UserName & "\'"
If cmd.ExecuteScalar > 0 Then
    Messagebox.show("增加用户失败,已经能存在同名用户!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
cmd.CommandText = "Insert Into {Users} ([Name],[Group],[Password]) Values (\'"
cmd.CommandText = cmd.CommandText & UserName & "\',\'" & UserGroup & "\',\'" & Password & "\')"
If cmd.ExecuteNonQuery = 1 Then \'返回1表示增加成功
    If Forms("用户管理").Opened Then
        With Forms("用户管理").Controls("ListBox1")
            .Items.Add(UserName)
            .SelectedIndex = .Items.Count -1
        End With
    End If
    e.Form.Close()
End If
————————————————————————————————————————————————
我能否修改成下面这样的,思路就是判断是否输入了数据,是否有同名的,如果没有,就保存到新增的ROW中去,然后关闭窗口,我不明白帮助中为什么要写这么复杂。

Dim UserName As String = e.Form.Controls("UserName").Value
Dim UserGroup As String  = e.Form.Controls("UserGroup").Value
Dim cmd As New SQLCommand
cmd.C
If UserName = "" OrElse UserGroup = "" Then
    Messagebox.show("请输入用户名和用户分组!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
cmd.CommandText = "Select Count(*) Fro m {Users} Where Name = \'" & UserName & "\'"
If cmd.ExecuteScalar > 0 Then
    Messagebox.show("增加用户失败,已经能存在同名用户!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
Else
    Tables("users").AddNew
    DataTables("users").Save
    e.Form.Close
    
End If

--  作者:baicaocao
--  发布时间:2020/5/5 20:30:00
--  
 你这样不对。。最后的table没有给Name赋值。
--  作者:天宇科技
--  发布时间:2020/5/5 20:42:00
--  
我试了,赋值了。
--  作者:有点蓝
--  发布时间:2020/5/5 20:59:00
--  
帮助是按照不加载用户表的方式做的。至于怎么用,条条大路通罗马,自己喜欢就好
--  作者:天宇科技
--  发布时间:2020/5/6 10:14:00
--  
关键是这样写对吗?有人告诉我这样写是错的。
--  作者:有点蓝
--  发布时间:2020/5/6 10:20:00
--  
测试有什么问题?能不能实现自己需要的效果?

如果用户表数据已经加载了,也可以不使用sql,然后通过datatable的find、compute来判断是否有同名用户。