Foxtable(狐表)用户栏目专家坐堂 → ★华海仓管之庖丁解牛篇★←菜鸟学习帮手(1月3日2楼更新gdlgh老师倾心讲解)


  共有35914人关注过本帖平板打印复制链接

主题:★华海仓管之庖丁解牛篇★←菜鸟学习帮手(1月3日2楼更新gdlgh老师倾心讲解)

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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
★华海仓管之庖丁解牛篇★←菜鸟学习帮手(1月3日2楼更新gdlgh老师倾心讲解)  发帖心情 Post By:2009/1/1 11:28:00 [只看该作者]

贴子已被锁定

为了方便广大菜鸟朋友学习华海仓管实例,本人在研究的同时逐步为各位献上代码解说,错误之处请多多包涵.



把gdlgh老师的登陆代码分离出来搞了个自定义登陆实例,大家慢慢学习.
学习重点:
全局变量/sql命令及select ; update ; insert into语句/动态控件生成/字符串加密解密/各权限功能实现方法

相关知识:
状态栏设置/MessageBox对话框/项目属性各事件的运用

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:登陆测试.rar

只下不顶不是好同志哦...

动态控件代码:
Dim cmd As New SQLCommand  设置SQL命令
cmd.C 设置连接数据库ckgl
dim x,y,i1,i2 as integer 设置整数变量x,y,i1,i2
Dim dt As DataTable
cmd.CommandText = "select 名称 From [权限]" 
获取权限表名称列的值
dt = cmd.ExecuteReader()
i2 = dt.datarows.count

'生成用户列表
Dim rad As WinForm.RadioButton 定义rad为单选框控件
for y  = 0 to Math.Ceiling(i2/5)-1  y=0至用户列表数除于5再减1的最小整数
    for x = 0 to iif(y = Math.Ceiling(i2/5)-1 and (i2 mod 5)<>0,(i2 Mod 5)-1,4) x=0至用户列表数除于5再减1的最小整数并且 (这里我无法用语言表达...)
        rad = Forms("管理").CreateControl("rad" & i1,ControlTypeEnum.RadioButton) 在管理窗口建立单选框控件
        rad.Text = dt.datarows(i1)("名称") 设置控件名称
        rad.Left = 2+x*80
        rad.Top = y*70
        rad.Width = 80
        rad.Height = 70  
设置控件位置及长宽
        rad.TextAlign = ContentAlignment.BottomCenter  设置控件文本位置
        rad.ImageFile = ProjectPath & "Images\ne.ico" 设置控件图标
        rad.ImageAlign = ContentAlignment.TopCenter 设置图标位置
        rad.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText 设置图标文本相对位置
        rad.Appearance = System.Windows.Forms.Appearance.Button
        Forms("管理").Controls("Panel1").AddControl(rad) 设置新增控件所处位置
        i1 += 1
    next
next
e.Form.Controls("rad0").Select()


权限设置窗口确定按钮:

Dim lst As WinForm.CheckedListBox
lst = e.form.Controls("CheckListBox1")   设置lst为"CheckListBox1"字串
if Vars("用户").split(",")(0) = "rad0" and len(lst.value)<>158 then 如果是第一个用户并且字串长度不等于158则
    msgbox("管理员必须拥有所有权限!",64,"提示") 弹出提示窗口
    Return 返回
end if 结束
dim str1,str2,str3 as string   设置字符串str1.2.3
str1 = e.Form.Controls("TextBox1").value 
str2 = e.Form.Controls("TextBox2").value
str3 = e.Form.Controls("TextBox3").value 
   设置相对应的TextBox
if str1 is nothing then   如果str1为空则
    msgbox("用户名不能为空!",64,"提示")   弹出提示窗口
else if str2 is nothing then   如果str2为空则
    msgbox("密码不能为空!",64,"提示")   弹出提示窗口
else if str3 <> str2 then  如果str3为空则
    msgbox("两次输入的密码不一致,请重新输入!",64,"提示")  
弹出提示窗口
    e.Form.Controls("TextBox2").value = nothing
    e.Form.Controls("TextBox3").value = nothing   
相应的TextBox清空
else
    str2 = EncryptText(str2,"lgh","1qaz2wsx3edc")   str2=加密后的str2
    str3 = EncryptText(lst.Value & "","gdlgh","4rfv5tgb6yhn")   str3=加密后复选列表框(lst)的值
    Dim cmd As New SQLCommand    设置一个SQL命令
    cmd.Con nection Name = "ckgl"   连接数据ckgl
    if Vars("用户")<>"" then  如果全局变量(用户)不为空则
        cmd.CommandText = "UPDATE [权限] SET 名称 = '" & str1 & "',密码 = '" & str2 & "',权限 = '" & str3 & "' WHERE 名称 = '" & Vars("用户").split(",")(1) & "'"  向权限表写入数据
        cmd.ExecuteNonQuery()  执行SQL命令
        Forms("管理").Controls(Vars("用户").split(",")(0)).text = str1  管理窗口相对应的动态控件文本更改为str1的值
    else
        cmd.CommandText = "select count(*) from [权限] where 名称 = '" & str1 & "'" 查询权限表里名称=str1的值
        if cmd.ExecuteScalar() > 0 then 如果找到则
            msgbox("用户名已存在!",64,"提示") 弹出提示窗口
            e.Form.Controls("TextBox1").value = ""  当前窗口textBox1里的值清空
            Return 返回
        end if
        cmd.CommandText = "Insert Into [权限] (名称,密码,权限) values('" & str1 & "','" & str2 & "','" & str3 & "')"  权限表新增一行并写入相应数据
        cmd.ExecuteNonQuery() 执行SQL命令
        with Forms("管理").Controls("CheckBox1")
            .Checked = not .Checked
        end with  
返回管理窗口CheckBox1控件,并使它呈非选中状态
    end if
    Forms("管理").Controls("rad0").Select() 将焦点转到管理窗口第一个动态控件上
    e.form.close  当前窗口关闭
end if

登陆窗口AfterLoad代码:

if Vars("用户")<>"gdlgh" then   如果全局变量(用户)不是gdlgh则
    For Each tb As Table In Tables
        tb.Visible = false
    Next        
           隐藏所有表
    QAT.Visible = False 隐藏快速访问栏
    ConfigBar.Visible = False 隐藏配置栏
end if
Dim cmd As New SQLCommand 
cmd.C
Dim dt As DataTable
cmd.CommandText = "select 名称 From [权限]" 获取权限表名称列的值
dt = cmd.ExecuteReader() 变量dt=获取的值
Dim cbox As WinForm.ComboBox = e.Form.Controls("ComboBox1") 设置cbox=ComboBox1
For Each dr As Datarow In dt.Datarows
    cbox.Items.Add(dr("名称"))
Next

把获取的值加入到cbox中



------------------------------------分割线2009年1月2日更新-------------------------------------


登陆窗口确定按钮:

Dim cmd As New SQLCommand '定义一个SQL命令
cm d.Con nection Name = "c k g l" '指定数据源ckgl
cmd.CommandText = "select 密码 From [权限] where 名称 = '" & e.Form.Controls("ComboBox1").value & "'" '设置SQL命令=从权限表的密码列寻找名称等于ComboBox1的字符串
dim str as string = cmd.ExecuteScalar() '定义STR为找到的这个字符串
str = DecryptText(str,"lgh","1qaz2wsx3edc") 'str=解密后的字符串,其中密钥1密钥2分别为"lgh"和"1qaz2wsx3edc"
cmd.CommandText = "select 权限 From [权限] where 名称 = '" & e.Form.Controls("ComboBox1").value & "'" '设置SQL命令=从权限表的权限列寻找名称等于ComboBox1的字符串
Vars("权限") = DecryptText(cmd.ExecuteScalar(),"gdlgh","4rfv5tgb6yhn") '全局变量(权限)=解密后的找到的字符串,其中密钥1密钥2分别为"gdlgh","4rfv5tgb6yhn"
if str = e.Form.Controls("TextBox1").value and str <> "" then '如果解密后的str=当前窗口TextBox1里面的字符串并且不为空则
    Vars("用户") = e.Form.Controls("ComboBox1").value '全局变量(用户)=当前窗口ComboBox1里的字符串
    QAT.Visible = True '快速访问栏可见
    ConfigBar.Visible = True '配置栏可见
    Tables("查询表").Visible = True '查询表可见
    StatusBar.Reset() '重设状态栏
    StatusBar.Message1= "  单机版[试用] V1.0                             ||  操作员:  " & Vars("用户")     '设置左边状态栏
    StatusBar.Message2= ""      '中间状态栏
    StatusBar.Message3= "                       广州华海软件工作室"     '设置右边状态栏
    e.form.close  '当前窗口关闭
else '否则
    msgbox("密码不正确!",64,"提示") '弹出提示窗口
end if


'登陆窗口取消按钮:


if Vars("用户")<>"gdlgh" then '如果全局变量(用户)不等于gdlgh则
    e.form.close 当前窗口关闭
    system.diagnostics.process.GetProcessesByName("foxtable")(0).kill  'foxtable进程关闭
else '否则
    e.form.close 当前窗口关闭
end if



[此贴子已经被作者于2009-1-3 9:59:00编辑过]

 回到顶部
总数 33 1 2 3 4 下一页