设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[Access本身] 失去焦点

[复制链接]
跳转到指定楼层
1#
发表于 2008-9-29 10:49:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
失去焦点在窗体中的职工ID文本框的失去焦点事件中添加如下代码
Private Sub 职工ID_LostFocus()
On Error GoTo Err_职工ID_LostFocus
'定义字符型变量
Dim STemp As String
'定义用于循环的整型变量
Dim i As Integer
'定义数据集变量
Dim Rs As ADODB.Recordset
'为定义的数据集变量分配空间
Set Rs = New ADODB.Recordset
'为打开数据表"查询语句"字符型变量赋值
STemp = "Select * From 职工基本资料"
'打开"职工基本资料"数据表
Rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  '把记录集指针指向第一条记录
  Rs.MoveFirst
   '使用FOR...NEXT循环语句在Rs数据集中循环判断
   For i = 1 To Rs.RecordCount
    '判断记录集中的"职工ID"字段值与窗体中的"职工ID"文本框的值的关系
    If Rs("职工ID") = Me![职工ID] Then
      '如果相同,则把该记录字段的值赋予窗体对应文本框内
      Me![ 所在院系] = Rs("所在院系 ")
      Me![ 姓名] = Rs("姓名")
      Me![ 基本工资] = Rs("工资")
    Else
      '如果不相同,则移动到下一条记录
      Rs.MoveNext
    End If
  Next i
    '释放系统为Rs数据集分配的空间
    Set Rs = Nothing
Exit_职工ID_LostFocus:
   Exit Sub
Err_职工ID_LostFocus:
   MsgBox Err.Description
   Resume Exit_职工ID_LostFocus
End Sub

其中“所在院系”“姓名”“基本工资”文本框均以锁定,职工基本资料数据表中也有数据
但是在职工ID文本框中输入数据表中存在的职工ID号以后,当鼠标光标离开“职工ID”文本框是系统提示“在对应所需名称或序数的集合中,未找到项目”
这是怎么回事呀?


帮帮忙吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2008-9-29 11:30:50 | 只看该作者
问题应该出在下面这行上:
Me![ 所在院系] = Rs("所在院系 ")
所在院系后面多了一个空格,这个是允许的。

另外,你的程序写得太复杂了,还用了循环,这样会导致程序执行变慢,我将你程序修改一下,希望你能触类旁通

Private Sub 职工ID_LostFocus()
Dim STemp As String
Dim i As Integer
Dim Rs As New ADODB.Recordset
STemp = " Select * From 职工基本资料 WHERE 职工ID='" & Me.职工ID & "'"
Rs.Open STemp, CurrentProject.Connection
If Rs.RecordCount <> 0 Then
    Me.所在院系 = Rs("所在院系 ")
    Me.姓名 = Rs("姓名")
    Me.基本工资 = Rs("工资")
Else
    MsgBox "对不起,没有相应的记录", vbCritical
End If
Rs.Close
Set Rs = Nothing
End Sub
3#
发表于 2008-9-29 11:37:01 | 只看该作者
或者来个更简单的

Private Sub 职工ID_LostFocus()
    Dim IDstr As String
    IDstr = Me.职工ID
    If DCount("*", "职工基本资料", "[职工ID]='" & IDstr & "'") = 0 Then
            MsgBox "对不起,没有相应的记录", vbCritical
    Else
            Me.所在院系 = DLookup("[所在院系]", "职工基本资料", "[职工ID]='" & IDstr & "'")
            Me.姓名 = DLookup("[姓名]", "职工基本资料", "[职工ID]='" & IDstr & "'")
            Me.基本工资 = DLookup("[基本工资]", "职工基本资料", "[职工ID]='" & IDstr & "'")
    End If
End Sub
4#
 楼主| 发表于 2008-9-29 11:39:49 | 只看该作者
[:50] 谢谢了
5#
发表于 2008-9-29 11:58:15 | 只看该作者
或者干脆不管它能不能找到,就dlookup....

写在lostfocus里不好,应该写在afterupdate
6#
发表于 2008-9-29 15:09:58 | 只看该作者
1楼的代码复杂了点,但对于初学者理解VBA语句也有一定的好处
7#
发表于 2008-9-29 15:16:16 | 只看该作者
其实, DCount与 DLookup用法有何区别?
8#
发表于 2008-9-29 16:28:35 | 只看该作者
单就你的程序来说:除zyp前面所说的问题,还有一处问题Me![ 所在院系] = Rs("所在院系") 中,Me![ 所在院系]注意不能有空格.
9#
发表于 2008-10-1 00:30:17 | 只看该作者
得益于回帖

点击这里给我发消息

10#
发表于 2023-10-12 11:03:02 | 只看该作者
学习
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-29 03:50 , Processed in 0.148824 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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