2013-08-28 156 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