2012-08-22 64 views
1

我有一個單一的窗體上存在幾個組合框和文本框。一個組合框的值(井)將被獨立填充,然後我需要文本框根據井組合框的值得到它的值。我創建了一個部分解決了問題的查詢,它需要井組合框的值。如果我用表單查詢一部分,它會很好,並要求參數,它是可以的。我認爲要利用VBA,添加處理SELECT語句(上面提到的查詢)的代碼,然後告訴它從將在表單上準備好的井組合值中取出參數。文本框根據組合框值使用查詢

有人可以幫助這個。這可以像我描述的那樣工作。

在此先感謝。

穆罕默德

而且上面我的問題,我曾嘗試以下解決方案:

Private Sub Well_ID_Change() 
Last_Ref.ControlSource = " SELECT TOP1 New_Ref FROM" & _ 
" BSW_Transactions WHERE BSW_Transactions.New_Ref Is Not Null AND BSW_Transactions.Well_ID = " & Me.Well_ID.Value & _ 
" ORDER BY BSW_Transactions.Sample_Date DESC" 
End Sub 

的Last_Ref是文本框我想在代碼中嵌入SELECT語句的結果填寫。 Well_ID是組合框,其值將是SELECT語句的參數。 Well_ID是數字字段,它顯示well_name並將關聯的ID值存儲在表中。在保存更改後運行表單時,Last_Ref文本框顯示(#Name?)。我猜想文本框(是一個數字字段)在組合框Well_ID中找到了一個文本,所以我在條件Me.Well_ID中將「.Value」添加到上面的語法中。但問題依然存在。

我可以誤解語法嗎?有人會幫助解決這個問題。這可以正常工作嗎?

在此先感謝。穆罕默德

+0

當訂單中有匹配項時,排名前1可以返回更多的記錄。爲了正常工作,系統中不能有多個人,否則在A人工作時,人員B可以進行新的交易。我懷疑可能有設計問題。 – Fionnuala

回答

0

的問題是,文本框中不能有自己的控制源設置像一個組合框或列表框,它需要傳遞的值,例如:

Private Sub Well_ID_Change() 

Dim rs As Recordset  

Set rs = CurrentDb.OpenRecordset("SELECT TOP1 [New_Ref] FROM" & _ 
" [BSW_Transactions] WHERE [BSW_Transactions].[New_Ref] Is Not Null" & _ 
" AND [BSW_Transactions].[Well_ID] = " & Me.Well_ID & _ 
" ORDER BY [BSW_Transactions].[Sample_Date] DESC", dbOpenSnapShot) 

rs.MoveFirst 
Last_Ref = rs![New_Ref] 
rs.Close 
Set rs = Nothing 

End Sub 

我也放棄了。價值因爲它不是必需的

+0

這一切看起來有點令人擔憂,但如果OP認爲這必須完成,我想DMax將與其他任何東西一樣有用。 – Fionnuala

+0

@Remou是的,我對這個問題也有點小心,因爲你說它看起來可能會有不好的設計。我選擇了一個D函數,這是因爲一旦有多個參數,我從來都不喜歡與他們合作。 –

+0

@Matt唐南,我試過你的解決方案,但由於VBA顯示的語法錯誤消息失敗,如下所示:運行時錯誤(3075)語法錯誤在查詢表達式'TOP1 New_Ref'中缺少運算符。請您回顧一下 – mhegazy