设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2577|回复: 9
打印 上一主题 下一主题

[Access本身] 与ishi2100 同志商榷Access鸭脖子

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-6 16:45:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 todaynew 于 2010-1-6 16:48 编辑

       ishi2100 同志发了一个瓶颈很多的实例,让人联想起武汉的精武鸭脖子来。武汉号称九省通衢,兼容并蓄的能力很强,自我创新的能力极弱。因此武汉一直很难找到几个名牌。

      不过这三五年来,武汉人终于有了能拿得出手的礼物了,但凡迎来送往之间,必少不了精武鸭脖子,呵呵。因此当看到ishi2100 同志的瓶颈,眼前便浮现出那一段段美味的鸭脖子了。

      梦醒时分,精武鸭脖子还是精武鸭脖子,ishi2100 同志的瓶颈还是ishi2100 同志的瓶颈。于是乎便吞咽口水,擦干哈喇子,一咬牙一跺脚,便也就帮助ishi2100 同志解决瓶颈问题了。

----------------------------------------------------------------------------

1.用户注册:检验用户名;注册(并将信息导入表“用户密码表”);重写(已输入的东西删除);用户名限制为字母和数字(6-12)
答案:
(1)在用户注册窗体上的Text1控件后加一个名为“校验”的标签控件
(2)在用户注册窗体的加载事件中写如下代码:
Private Sub Form_Load()
    Me.校验.Caption = ""
    Me.Text1.InputMask = "aaaaaaaaaaaa"
End Sub
(3)在Text1控件的更新后事件中写如下代码:
Private Sub Text1_AfterUpdate()
    If Nz(DLookup("用户名", "用户密码表", "用户名='" & Me.Text1.Value & "'"), "") = "" Then
        Me.校验.Caption = "可用"
    Else
        Me.校验.Caption = "用户名已存在"
        Me.Text1.Value = Null
    End If
End Sub


2.一开始登录的那个界面,允许“用户注册”窗体显示(点击“新用户注册”按钮)
答案:在“用户注册”窗体设计视图中选窗体属性---其他---弹出方式,将“否”改为“是”。


3.查询:输入内容后在指定的表(者之书在人物表,术之书在忍术表)内查询,显示对应的窗体(人物、忍术),管理员查询显示(人物1、忍术1)
答案:
(1)将姓名和名次控件分别用组合框控件。将窗体中的组合框均按汉字命名。
(2)在查询窗体的加载事件中写如下代码:
Private Sub Form_Load()
    Dim str As String
    str = "SELECT 人物.姓名 FROM 人物;"
    Me.姓名.RowSourceType = "Table/Query"
    Me.姓名.RowSource = str
    str = "SELECT 人物.级别 FROM 人物 GROUP BY 人物.级别;"
    Me.级别1.RowSourceType = "Table/Query"
    Me.级别1.RowSource = str
    str = "SELECT 人物.现所属 FROM 人物 GROUP BY 人物.现所属;"
    Me.所属.RowSourceType = "Table/Query"
    Me.所属.RowSource = str
    str = "SELECT 忍术.名称 FROM 忍术;"
    Me.名称.RowSourceType = "Table/Query"
    Me.名称.RowSource = str
    str = "SELECT 忍术.类别 FROM 忍术 GROUP BY 忍术.类别;"
    Me.类别.RowSourceType = "Table/Query"
    Me.类别.RowSource = str
    str = "SELECT 忍术.级别 FROM 忍术 GROUP BY 忍术.级别;"
    Me.级别2.RowSourceType = "Table/Query"
    Me.级别2.RowSource = str
End Sub
(3)在各组合框的更新后事件中分别写如下代码:

Private Sub 姓名_AfterUpdate()
    Me.级别1.Value = DLookup("级别", "人物", "姓名='" & Me.姓名.Value & "'")
    Me.所属.Value = DLookup("现所属", "人物", "姓名='" & Me.姓名.Value & "'")
    DoCmd.OpenForm "人物"
    Forms("人物").Form.Filter = "姓名='" & Me.姓名.Value & "'"
    Forms("人物").Form.FilterOn = True
End Sub


Private Sub 级别1_AfterUpdate()
    DoCmd.OpenForm "人物"
    Forms("人物").Form.Filter = "级别='" & Me.级别1.Value & "'"
    Forms("人物").Form.FilterOn = True
End Sub


Private Sub 所属_AfterUpdate()
    DoCmd.OpenForm "人物"
    Forms("人物").Form.Filter = "现所属='" & Me.所属.Value & "'"
    Forms("人物").Form.FilterOn = True

End Sub

Private Sub 名称_AfterUpdate()
    Me.类别.Value = DLookup("类别", "忍术", "名称='" & Me.名称.Value & "'")
    Me.级别2.Value = DLookup("级别", "忍术", "名称='" & Me.名称.Value & "'")
    DoCmd.OpenForm "忍术"
    Forms("忍术").Form.Filter = "名称='" & Me.名称.Value & "'"
    Forms("忍术").Form.FilterOn = True
End Sub

Private Sub 类别_AfterUpdate()
    DoCmd.OpenForm "忍术"
    Forms("忍术").Form.Filter = "类别='" & Me.类别.Value & "'"
    Forms("忍术").Form.FilterOn = True
End Sub

Private Sub 级别2_AfterUpdate()
    DoCmd.OpenForm "忍术"
    Forms("忍术").Form.Filter = "级别='" & Me.级别2.Value & "'"
    Forms("忍术").Form.FilterOn = True
End Sub


4.修改:管理员拥有修改的权利,用户没有。
答案:
(1)新建一个模块。在该模块中写如下代码:
Public 类别 As String
(2)在登录窗体的确定按钮中加一句代码:
类别 = DLookup("类别", "用户密码表", "用户名='" & Me.Combo用户名.Value & "'")
(3)在需要区别管理员与用户权限的窗体加载事件中加如下代码:
Private Sub Form_Load()
    If 类别 = "管理员" Then
        Me.Form.AllowAdditions = True
        Me.Form.AllowDeletions = True
        Me.Form.AllowEdits = True
    Else
        Me.Form.AllowAdditions = False
        Me.Form.AllowDeletions = False
        Me.Form.AllowEdits = False
    End If
End Sub


5.报表:显示用户及其登录时间、离开时间
答案:
(1)在浏览登记中增加一个名为ID的字段,并将该字段设为主键。
(2)在登录窗体的确定按钮中增加如下代码:
Dim strsql As String
DoCmd.SetWarnings False
strsql = "INSERT INTO 浏览登记 ( 用户名, 类别, 登陆时间 ) "
strsql = strsql & "VALUES ('" & Me.Combo用户名.Value & "','"
strsql = strsql & DLookup("类别", "用户密码表", "用户名='" & Me.Combo用户名.Value & "'") & "',#" & Now() & "#)"
DoCmd.RunSQL strsql
(3)在退出系统的窗体(具体是哪个窗体自己确定)关闭事件中写如下代码:
Dim strsql As String
DoCmd.SetWarnings False
strsql = "UPDATE 浏览登记 SET 浏览登记.离开时间 = #" & Now() & "#"
strsql = strsql & " WHERE ID=" & DMax("ID", "浏览登记", "用户名='" & Me.Combo用户名.Value & "'")
DoCmd.RunSQL strsql


6.密码修改,确定后信息导入“用户密码表”
答案:没看见有修改密码的地方。修改密码的写入就是更新查询而已,可以参见离开时间的处理方法。


7.若可以,用户的注册时间也有
答案:可在用户密码表中增加注册时间字段



评分

参与人数 1经验 +10 收起 理由
Grant + 10

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-1-6 17:12:15 | 只看该作者
好文章,怎么没人顶呢
3#
发表于 2010-1-6 18:35:16 | 只看该作者
我还没找到北呢,
4#
发表于 2010-1-6 20:54:53 | 只看该作者
多谢LZ,我等好久都没人回答,LZ真是好人啊
5#
发表于 2010-1-7 01:56:04 | 只看该作者
库了?能否传上来看看效果?
6#
发表于 2010-1-7 12:19:28 | 只看该作者
鸭脖子好吃,文章更好
7#
发表于 2010-1-7 15:26:03 | 只看该作者
再次感谢LZ,不过还是有问题啊,查询我已经换了一种方式做好了,先多谢LZ的。检验用户名是可以的了,不过限制我想改下,限制在6-12个字母和数字,超出限制提示“用户名非法,请重新输入!”。注册方面LZ似乎没有回答,点击按钮“注册”,将填写的内容导入“用户密码表”,若有信息没填写而点击的话提示“请完成信息填写!”。报表:显示用户及其登录时间、离开时间,这个不知道为什么不行,总是提示错误,昨晚做了下登录时间是可以的,结果今天做,都不行了。再次请求帮助!
8#
发表于 2010-1-11 08:34:14 | 只看该作者
呵呵~学习学
9#
发表于 2015-5-25 22:27:37 | 只看该作者
谢谢
回复

使用道具 举报

10#
发表于 2015-5-25 22:27:52 | 只看该作者
学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-10 09:00 , Processed in 0.098350 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表