【问题标题】:Access VBA Displaying Unique Data in Text box访问 VBA 在文本框中显示唯一数据
【发布时间】:2017-05-08 11:41:23
【问题描述】:

我使用的是 Access 2007-2010,并且我在一个表单上有 2 个文本框。我想要做的是当用户在textbox1(使用afterupdate)中输入一个名字时,比如“bob”,我希望能够在textbox2 中只显示唯一的年龄(没有双重年龄)。姓名和年龄在一个名为data 的表格中。

[布局]

textbox2 将显示12, 64 或一个在另一个下方。

对不起,如果这很简单,我正在学习Access和VBA

【问题讨论】:

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


    【解决方案1】:

    可能比您要寻找的要多一点,但请尝试:

    Dim ages(), name As String
    Dim y, x, i As Integer
    
    Dim rs As Recordset
    
    name = Me.textbox1.Value
    
    Set rs = CurrentDb.OpenRecordset("Select * from data Where name = '" & name & "'")
    
    
    
    With rs
    
    .MoveLast
    x = .RecordCount
    .MoveFirst
    
    ReDim ages(1 To (x + 1))
    
    Do Until rs.EOF
    y = y + 1
    If y = 1 Then
    
    ages(y) = ![age]
    
    Else
    
    For i = 1 To y
    
    If ages(y) = ages(i) And y <> i Then
    
    ages(y) = "skip"
    GoTo exiter
    
    Else
    
    'fine
    ages(y) = ![age]
    End If
    
    Next i
    End If
    exiter:
    .MoveNext
    
    Loop
    
    .Close
    End With
    
    y = 0
    
    For y = 1 To x
    
    
    If ages(y) <> "skip" Then
    
    ages(x + 1) = ages(x + 1) & ages(y) & ","
    End If
    
    Next y
    
    
    'feel free to change form msgbox to whatever form object you want
    
    MsgBox " Entries in this List with the name " & name _
                & vbNewLine & ages(x + 1)
    

    如果需要,删除 vb 新行并用 "," 和 msgbox 替换为文本框

    【讨论】:

    • 所以当我查找所有这些内容时,我试图让您的代码正常工作,您是否可能为 Do 循环中的 if 语句之一遗漏了 End If?我相信它会在Next i 之后出现,所以我这样做了,但似乎当我输入一个有其他年龄的名字时,最后的 msgbox 会显示,但如果我输入一个没有年龄或不存在的名字表格,那个 msgbox 会弹出,当然没有年龄。
    • 哎呀,很好。如果在next iexiter 之间,则应该结束
    • @RayceNeal 以下更改应该可以满足您的需求:.MoveLast x = .RecordCount .MoveFirst 以及 ` 如果ages(y) =ages(i) And y i Then `
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多