2014-02-05 45 views
2

修復錯誤後返回並現在一個新的。我在Access 2007中使用VBA創建了一條SQL語句,並且出現錯誤「在此集合中找不到項目」這些字段確實存在於表格中,拼寫正確。我甚至將SQL語句複製到一個查詢中,它工作。我假設是錯誤的代碼訪問2007年VBA SQL選擇錯誤「在此集合中找不到項目」

Dim strCMCID As Long ' (it's a Key field AutoNumber) 
strCMCID = Me!CMCID_Txt 

"WHERE Commitments_Tbl.CMCID = " & strCMCID & "" 

全部代碼貼在下面的這部分。這是我第一次在使用VBA時使用SQL語句。我想要做的是獲取SQL語句從當前表單的特定記錄中提取兩個電子郵件地址。

Public Sub SendConfirm() 
On Error GoTo Err_SendConfirm_Click 

Dim Borrower As String, LOEmail As String, ProcEmail As String, ClsEmail As String, Caution As String, LNumber As Long, TheFile As String, TheName As String 

'SQL Statement to get Processor and Closer email 
Dim dbs As DAO.Database 
Dim rst As DAO.Recordset 
Dim strSQL As String 
Dim strCMCID As Long 'AutoNumber 
Dim strMWS As String 
Dim strProcEM As String 
Dim StrClsEM As String 

strCMCID = Me!CMCID_Txt 'AutoNumber 
strSQL = "SELECT Commitments_Tbl.CMCID, Status_Tbl.MWStatus, DBUsers_Tbl.EMail, DBUsers_Tbl_1.EMail " & _ 
"FROM ((Commitments_Tbl LEFT JOIN Status_Tbl ON Commitments_Tbl.LoanNumber = Status_Tbl.LoanNumber) LEFT JOIN DBUsers_Tbl AS DBUsers_Tbl_1 ON Status_Tbl.Processor = DBUsers_Tbl_1.MWName) LEFT JOIN DBUsers_Tbl ON Status_Tbl.Closer = DBUsers_Tbl.MWName " & _ 
"WHERE Commitments_Tbl.CMCID = " & strCMCID & "" 

Set dbs = CurrentDb 
Set rst = CurrentDb.OpenRecordset(strSQL) 
strMWS = rst!MWStatus 
strProcEM = Nz(rst!DBUsers_Tbl.EMail, "[email protected]") 
StrClsEM = Nz(rst!DBUsers_Tbl_1.EMail, "[email protected]") 

'Message Box 
Dim Msg, Style, Title, Response 

LOEmail = Me!OrigID_Cbo.Column(3) 
Borrower = Me!BorrNameL_Txt 
LNumber = Nz(Me!LoanNumber_Txt, 0) 

Msg = "Do you want to send an e-mail to Set_up?" 
Style = vbYesNo 
Title = "Cancel Set-Up E-Mail" 
Response = MsgBox(Msg, Style, Title) 
If Response = vbYes Then 
    GoTo line3 
Else 
    GoTo line4 
End If 

line3: 
TheName = "" & Borrower & " " & LNumber & "" 
TheFile = "P:\mortgage\prodcenters\LOAN ITEMS (SW)\_RateLocks_and_Changes\" & TheName & ".rtf" 

DoCmd.OutputTo acOutputReport, "Confirmation_Email2", acFormatRTF, TheFile, False 

    If Nz(Me!InvestorID_Cbo, "Blank") = "Blank" Then 
     DoCmd.SendObject , , , "[email protected]", , , "New Lock: " & Borrower & ": " & LNumber, "A rate lock confirmation has been saved down to the server at P:\mortgage\prodcenters\LOAN ITEMS (SW)\_RateLocks_and_Changes as a word document with the same name and loan number as that is the subject line of this email. Please upload it into the GDR.", -1 
    Else 
     DoCmd.SendObject , , , "[email protected]", , , "Term Change" & ": " & Borrower & ": " & LNumber, "A rate lock confirmation has been saved down to the server at P:\mortgage\prodcenters\LOAN ITEMS (SW)\_RateLocks_and_Changes as a word document with the same name and loan number as that is the subject line of this email. Please upload it into the GDR.", True 
    End If 

line4: 
    ClsEmail = Nz(StrClsEM, "[email protected]") 
    ProcEmail = Nz(strProcEM, "[email protected]") 
If Me!RateExpDate_Txt <= Date + 8 Then 
    Caution = "STOP Terms Finalized:" 
ElseIf strMWS = "Closing" And Me!RateExpDate_Txt >= Date + 8 Then 
    Caution = "STOP:" 
Else 
    Caution = "" 
End If 
If Me!InvestorID_Cbo = "" Then 
    DoCmd.SendObject acSendReport, "Confirmation_Email", "SnapshotFormat(*.snp)", LOEmail, ProcEmail & ";" & ClsEmail, , Caution & "New Lock: " & Borrower & ": " & LNumber, , True 
Else 
    DoCmd.SendObject acSendReport, "Confirmation_Email", "SnapshotFormat(*.snp)", LOEmail, ProcEmail & ";" & ClsEmail, , Caution & " " & "Term Change" & ": " & Borrower & ": " & LNumber, , True 
End If 
rst.Close 
Set rst = Nothing 
Set dbs = Nothing 

Exit_SendConfirm_Click: 
    Exit Sub 

Err_SendConfirm_Click: 
    MsgBox Err.Description 
    Resume Exit_SendConfirm_Click 

End Sub 

回答

3

如果我們在Access中創建,拉兩個不同表中具有相同名稱的兩個字段,然後訪問將命名導致列Table1.FieldTable2.Field來消除歧義查詢。當使用「bang(!)表示法」在記錄集中引用這些字段時,您必須在整個字段名稱周圍放上方括號。在你的情況,例如,您可能需要使用的

rst![DBUsers_Tbl.EMail] 

代替

rst!DBUsers_Tbl.EMail