2013-08-28 159 views
-2

我有这个需求,我必须根据其他字段中给出的数据检查数据。我有'N'字段的桌子。我应该允许用户从表中选择4个字段。然后,我应该得到该特定记录的所有其他字段,并将其显示给用户,以便他可以验证他输入到表中的数据是否正确。请帮忙。从Access中获取记录

感谢

+0

你能编辑你的文章并给我们一个例子吗?另外,你有什么具体问题?你的代码在哪里破坏? – PowerUser

+1

对于选民来说:如果你不告诉OP他们做错了什么,为什么要麻烦downvoting? – PowerUser

+0

所以我有一个输入表格来输入数据到表格中。用户现在想要在输入数据后检查数据。为了检查,他们想要选择已经出现在表格中的四个字段,并且应该显示其他字段。例如:可以说一个表格有4个字段 - 名字(主),姓(主),生日(主),性别。现在用户想要检查他输入的数据。所以我需要形成类似于Entry表单的Checking表单。我将允许用户从主键选择 - 组合为名,组合为姓,组合为DOB - 应该显示此用户的性别值。 – user1804254

回答

0

我有一个更清晰的认识现在的你需要的东西 - 希望这是你所需要的:


假设你有一个名为“手机”

的电话表的表有三个主要字段:制造商,操作系统和运营商 除了这些主要字段,还有辅助“规范”字段。现在我们有三个:ScreenSize,Frequencies和Price。

我创建了一个包含三个组合框的表单:ManufacturerFilter,OperatingSystemFilter和CarrierFilter。
每个组合框的行来源是类似于:

SELECT Carrier FROM Phones GROUP BY Carrier ORDER BY Carrier; 

当载流子是由制造商和[操作系统]分别取代。

然后我添加所有的次要字段,每个次要字段绑定到他们各自的字段。

您还可以添加一个名为“检索”的按钮,现在让点击代码留空。


此时您有几个选项。我还是要强调两个,而这两个选项都需要下面的过程:

Private Function FilterStr() As String 
    Dim myFilterStr As String 

    ' Include each filter if they are entered 
    If Nz(Me.ManufacturerFilter, "") <> "" Then myFilterStr = myFilterStr & "[Manufacturer]='" & Me.ManufacturerFilter.Value & "' AND" 
    If Nz(Me.OperatingSystemFilter, "") <> "" Then myFilterStr = myFilterStr & "[Operating System]='" & Me.OperatingSystemFilter.Value & "' AND" 
    If Nz(Me.CarrierFilter, "") <> "" Then myFilterStr = myFilterStr & "[Carrier]='" & Me.CarrierFilter.Value & "' AND" 

    ' Remove the last AND statement 
    If myFilterStr <> "" Then myFilterStr = Mid(myFilterStr, 1, Len(myFilterStr) - 4) 
    FilterStr = myFilterStr 
End Function 

这个函数返回一个过滤字符串,根据选择的组合框的选项。

选项#1:筛选记录 我们希望发生什么,是当选择了主字段值,记录被过滤只有符合标准来显示。下面的代码添加到您的检索按钮的OnClick事件:

Private Sub RetreiveButton_Click() 
    Dim myFilterStr As String 
    myFilterStr = FilterStr 

    If myFilterStr <> "" Then 
    Me.Filter = myFilterStr 
    Me.FilterOn = True 
    Else 
    Me.Filter = "" 
    Me.FilterOn = False 
    End If 
End Sub 

所以单击按钮时会发生什么情况,是一个过滤字符串是基于选择的价值创造,然后过滤器被应用到形成。如果在组合框中未选择任何值,则会清除并关闭过滤器。

选项#2:查找基于价值一个记录 我们要的是在组合框来选择值,然后移动到符合条件的记录。

将以下代码添加到检索按钮的onClick事件中。

Private Sub RetreiveButton_Click() 
    Dim rst As DAO.Recordset 
    Dim myFilterStr As String 

    myFilterStr = FilterStr() 

    If myFilterStr = "" Then 
    MsgBox "No Filter Selected", vbOKOnly, "Error" 
    Exit Sub 
    End If 

    Set rst = Me.RecordsetClone 
    rst.FindFirst myFilterStr 
    If rst.NoMatch Then 
    MsgBox "No Matching Records were found", vbOKOnly, "No Data" 
    Else 
    Me.Bookmark = rst.Bookmark 
    End If 

    Set rst = Nothing 
End Sub 

这使用相同的FilterStr()函数来返回搜索字符串,但使用记录集的FindFirst方法来查找记录。如果找到,它将移动到记录。

希望能回答你的问题。正如我所指出的那样,确切的行为会有所不同,但其基本原则仍然是一样的。

+0

嗨DHW ......感谢您的建议......但输入和检查必须在输入后进行记录......输入和检查多次完成......如果我使用上述方法,再次检查所有记录,因为他无法选择特定的记录。 – user1804254

+0

让我试着阐述我想要做的事 - 我有一个参赛表格。数据通过这个输入到表格中。现在我正在为用户提供主要字段。所以这些是从表格中获取数据的组合框。当用户选择所有主键时,它类似于使用查询拉起记录(除了查找字段之外的字段)。只是我应该能够在各自的文本框中显示检索到的字段。我一直在努力工作很长一段时间。但不知道如何继续。 – user1804254

+0

我想我得到了你 - 你想用主键查找记录,然后显示记录。让我用你的解决方案修改我的答案。给我一点写代码。 – DHW