0
因此,在我的數據庫中,我有一個交匯表,其中列出了所有人的貸款「目的」。代碼只是在顯示值(以數字形式)時工作,但在我的第二個循環中,我在第二個表中搜索實際名稱的目的,我遇到了問題。它顯示了正確的號碼的用途,但不幸的是,該文本重複了第一次發現的次數,而不是顯示所有適用的目的。使用VBA將ID轉換爲名稱
這裏是代碼我使用:
Private Sub cmdMsgBox_Click()
Dim DB As Database
Dim tblOpp2LP As Recordset
Dim tblLoanPurpose As Recordset
Dim ctlFindRecord As Control
Dim lngHoldOpportunityID As Variant
Dim intRecordCount As Integer
Dim valTestBox As String
Dim valLP As String
Dim valName As String
Set DB = CurrentDb
Set tblInputOpp2LP = DB.OpenRecordset("Opp2LP")
Set tblLoanPurpose = DB.OpenRecordset("LoanPurpose")
Set ctlFindRecord = Me.ctlFindRecord
lngHoldOpportunityID = CLng(ctlFindRecord)
valTestBox = ""
On Error GoTo ErrorHandling_Err:
tblInputOpp2LP.FindFirst "[OpportunityID] = " & lngHoldOpportunityID
If tblInputOpp2LP.NoMatch Then
MsgBox "No Matching Record Found"
Exit Sub
Else
Do Until tblInputOpp2LP.EOF
If lngHoldOpportunityID = tblInputOpp2LP![OpportunityID] Then
valLP = tblInputOpp2LP![LPID]
intCounter = intCounter + 1
Do Until tblLoanPurpose.EOF
If valLP = tblLoanPurpose![LPID] Then
valName = tblLoanPurpose![Name]
End If
tblLoanPurpose.MoveNext
Loop
If valTestBox = "" Then
valTestBox = valName
Else
valTestBox = valTestBox & ", " & valName
End If
End If
tblInputOpp2LP.MoveNext
Loop
txtMsgbox = valTestBox
End If
ErrorHandling_Exit:
Exit Sub
ErrorHandling_Err:
MsgBox Err.Description & " - " & Err.Number
Resume ErrorHandling_Exit
End Sub
的思考?提前致謝!
太棒了!我想建議你用幾行重寫整個分支。你可以通過以下方式打開一個記錄集:Set tblLoanPurpose = DB.OpenRecordset(「SELECT * FROM LoanPurpose WHERE LPID =」&valLP)''然後遍歷它,而不是所有額外的匹配和ifs – ashareef 2014-08-27 18:01:33
我不確定我明白。這似乎是肯定會更有效率,因爲它是通過較少的數據解析,但它不會仍然需要循環?如果您提交了我所輸入內容的另一個版本,並舉例說明您的意思,並且它很有用,我很樂意將您的標記標記爲正確的答案! – LarrySteeze 2014-08-27 20:16:40
所以我現在正在運行代碼的另一個問題。 有時它似乎重複了它反覆發現的最後貸款目的,而不是使用第一和第二等,它似乎重複正確的次數,而不是正確的值。思考?它偶爾會正常工作,但並非總是如此,這對我來說很奇怪。 – LarrySteeze 2014-09-05 15:06:46