그래서 몇 가지 플래그를 설정하는 등의 시스템이 구축되었지만 수행하려는 작업 중 하나는 준비 테이블의 내용을 가져 와서 보냅니다. 추적에 사용되는 다른 테이블로 넘어갑니다. 내가 루프에 삽입을 사용하여 그것을 할려고하지만 단순히 의도대로 작동하게하는 방법을 알아낼 수 없습니다.루프가 전체 테이블에서 실행되지 않음
Private Sub Form_Load()
DoCmd.SetWarnings False
DoCmd.OpenQuery ("qryDeleteEmail")
Dim db As Object
Dim rst As Object
Dim test As Object
Set db = Application.CurrentDb
Set rst = db.OpenRecordset("qryDate")
Set test = db.OpenRecordset("tblEmailTemp")
If Me.RecordsetClone.RecordCount = 0 Then
MsgBox ("No delinquent accounts. No email will be generated.")
Me.Refresh
DoCmd.Close acForm, "qryDate", acSaveNo
DoCmd.CancelEvent
Else
rst.MoveFirst
Do Until rst.EOF
rst.Edit
rst!NeedsEmail = 1
rst.Update
rst.MoveNext
Loop
'DoCmd.Requery
'rst.Close
DoCmd.RunMacro ("StagingTable")
test.MoveFirst
Do Until test.EOF
CurrentDb.Execute "Insert Into EmailTracking (Account, ExpirationDate)" & _
"Values ('" & AccountName & "', '" & ExpirationDate & "')"
test.MoveNext
Loop
test.Close
rst.MoveFirst
Do Until rst.EOF
rst.Edit
rst!EmailSent = 1
rst.Update
rst.MoveNext
Loop
'DoCmd.Requery
rst.Close
DoCmd.RunMacro ("Close")
'DoCmd.OpenQuery ("qryDeleteEmail")
End If
Exit Sub
End Sub
현재 스테이징 테이블의 첫 번째 레코드를 두 번 복사하고 있습니다. 예를 들어 나는 계정 이름 A와 계정 이름 S를 가지고 있지만 A에 대한 레코드와 S에 대한 레코드를 삽입하는 대신 단순히 A를 두 번 삽입하는 것입니다.
도움이 될 것입니다.
코드의 들여 쓰기가 이해가되지 않아 편집했습니다. 코드의 작은 부분에는 의미가 없지만 아직 많이 있습니다. – dnLL
글쎄, 나는이 일에 매우 나쁘다는 것을 인정하고 여전히 배우려고 애쓰는 첫 번째 사람이 될 것이다. 그래도 편집 해 주셔서 감사합니다. 그것은 읽기 쉽게합니다. – user1706975
"StagingTable"매크로는 무엇을 수행합니까? 또한 AccountName 및 ExpirationDate를 초기화하지 않았습니다. 모듈 상단에'Option Explicit'을 두는 것이 좋습니다. 당신이 원할 수있는 것은'test! AccountName'과'test! ExpirationDate'입니다. – Bobort