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
잘 모르겠습니다. 이해 했어. 이것은 더 적은 데이터를 통해 파싱한다는 점에서 확실히 더 효율적이지만, 여전히 루프가 필요하지는 않은 것 같습니다. 내가 입력 한 내용의 다른 버전을 제출하고 그것이 의미하는 바의 예를 제출하면, 그것이 기꺼이 올바른 대답으로 표시됩니다. – LarrySteeze
그래서 코드에 다른 문제가 발생했습니다. 가끔씩은 처음이자 두 번째 등을 사용하는 대신에 반복적으로 발견되는 마지막 대출 목적을 반복하는 것처럼 보입니다. 올바른 값이 아닌 정확한 횟수만큼 반복되는 것으로 보입니다. 생각? 그것은 때로는 올바르게 작동하지만 항상 그런 것은 저에게 이상합니다. – LarrySteeze