2013-01-21 31 views
0

這篇文章有點類似於我之前的一篇關於如何從表中返回多條記錄的文章。但是,在這裏我想從表中返回一條記錄。這是我曾嘗試:從表中返回一條記錄Visual Basic

Private Sub UpdateSalary(RoleSelected As String) 

Dim strSQL As String 
strSQL = "SELECT Salary " & _ 
     "FROM Roles_Table " & _ 
     "WHERE Role = '" & RoleSelected & "'; " 

Dim rcrd As Record 
Dim salaryValue As Integer 

'Get the values of the SQL from the data base 
Set rcrd = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset) 

End Sub 

這背後的基本邏輯是,當用戶在組合框中選擇一個值應根據該選擇更新文本框。組合框包含名爲Roles的表中的值,該表包含該角色的角色定義和屬性薪水。

例如 - 選擇會計頭,然後薪水文本框應檢查表並獲得與該角色相關的工資。 我相信我的SQL沒問題,只是如何從記錄中獲取值。

感謝

回答

2

你可以做

rcrd.MoveFirst 
debug.print rcrd!Salary 

執行你的查詢只返回一個結果,你可以添加TOP:SELECT TOP 1 .... WHERE ... ORDER BY somethingLikeLastModified DESC

+0

好 - 斑根據您的評論我的錯誤:)糾正我,如果我錯了,但當你打開一個記錄集時,它不會自動查看第一條記錄 - 你需要指定 - 正確的? – Katana24

+0

這對於從基於*的同一個表*上的組合框獲得對文本框的值有很長的路要走。 – Fionnuala

+0

@Remou:你說得對。我沒有看到什麼和爲什麼太久。 OP也應該考慮你的解決方案。他可能需要查看選定的行,特別是如果組合框具有標題。 – ExternalUse

0

記錄集不返回一個值的最佳方法從組合框到文本框。你的組合框大概是這樣的:

Row Source: SELECT ID, Role, Salary FROM Roles 
Column Count : 3 

,這意味着你可以簡單地設置文本框:

=ComboBoxName.Column(2) ''0 to 2