【问题标题】:Ms Access 2007 record set not auto filling into textboxMs Access 2007 记录集不自动填充到文本框
【发布时间】:2015-03-13 23:19:26
【问题描述】:

我有一个模块,里面有一个如下所示的过程:

Public Sub OpenRecordset()

Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("QOff2")
qdf.Parameters(0).Value = [Forms]![Form]![Text10]

Dim db As Database
Dim rs As Recordset
Dim StrBusinesses As String

Set rs = qdf.OpenRecordset
If rs.EOF And rs.BOF Then
MsgBox ("No businesses exist for this Customer")
Exit Sub
Else
rs.MoveFirst
End If
StrBusinesses = ""
Do While Not rs.EOF
StrBusinesses = StrBusinesses & rs!Fnam & ", "
rs.MoveNext
Loop

rs.Close
StrBusinesses = Left(StrBusinesses, Len(StrBusinesses) - 2)
Forms!Form.Badge = StrBusinesses
Set rs = Nothing



End Sub

我试图让这个模块将查询结果输入到一个文本框(forms!form.badge),但我似乎无法让它像我的其他 5 个 dlookup 函数那样做到这一点。当我打开模块并按下绿色播放按钮时,它会显示在正确的文本框上,但也会显示在其他记录上。它也不会自动显示,也不会在您输入参数时更新。一个模块不是应该帮助将大量变量自动填充到文本框中来代替多个值的 dlookup 吗?

【问题讨论】:

    标签: ms-access vba ms-access-2007


    【解决方案1】:

    没有。如果 Forms!Form!Badge 是未绑定的文本框,则分配给它的值将在所有记录中以相同方式显示。 要个性化,您将需要一个查找函数,该函数将记录的 ID 或其他唯一值作为参数(添加到文本框):

    =LookupBadges([Forms]![Form]![Text10])
    
    
    Public Function LookupBadges(ByVal Value As Variant) As Variant
    
        Dim db As Database
        Dim qd As QueryDef    
        Dim rs As Recordset
    
        Dim Businesses As String
    
        Set db = CurrentDb
        Set qd = db.QueryDefs("QOff2")
    
        qd.Parameters(0).Value = Nz(Value)
        Set rs = qd.OpenRecordset
        If rs.RecordCount > 0 Then
            rs.MoveFirst
            Do While Not rs.EOF
                Businesses = Businesses & rs!Fnam.Value & ", "
                rs.MoveNext
            Loop
        End If
        rs.Close
    
        Businesses = Left(Businesses, Len(Businesses) - 2)
        LookupBadges = Businesses
    
        Set rs = Nothing
        Set qd = Nothing
        Set db = Nothing
    
    End Function
    

    【讨论】:

    • 这会像 dlookup 一样工作吗?模块如何在不按下绿色播放按钮的情况下自动填写数字? @古斯塔夫。谢谢。
    • 您可以按原样使用 DLookup(查看在线帮助以了解语法),或者如果您需要 DLookup 无法提供的更多功能,则可以创建自己的 LookupBadges 函数。打开表单时,将获取值 - 不需要播放按钮。
    • 当我使用你的代码时,它说#name 错误。你能解释一下关于创建我自己的 LookupBadges 函数的更多信息吗?您的意思是我需要从查询中创建此查找吗?
    • 不,我的意思是如果 DLookup 不能满足您的需要,您可以编写自己的类似函数,该函数将返回一个由提供给它的参数确定的值。 LookupBadges 只是此类功能的工作名称。
    • 我不理解函数以及如何编写查找标签,你能举个例子来说明你的意思吗?
    猜你喜欢
    • 2014-11-26
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    相关资源
    最近更新 更多