2016-10-24 44 views
1

我的代码正在退出表示“CurrentDb.Execute strSQL_Insert_Data”的行的子部分。你知道为什么会发生这种情况吗?为什么我的Access SQL VBA代码跳出Sub?

Local_Array = Array("dbo_Tape_Capture_Local_tbl", "dbo_Tape_Local_tbl", "dbo_Tape_Memo_Local_tbl") 
    Server_Array = Array("dbo_Tape_Capture", "dbo_Tape", "dbo_Tape_Memo") 

For i = 0 To UBound(Local_Array) 
    strSQL_Insert_Data = "INSERT INTO [" & Local_Array(i) & "] " & _ 
         "SELECT [" & Server_Array(i) & "].* " & _ 
         "WHERE (LEFT([" & Server_Array(i) & "].header__situs_loan_id," & _ 
          Len([Forms]![Login Page]![CBO_Job_Select_Login]) & ") = " & _ 
         "[Forms]![Login Page]![CBO_Job_Select_Login]);" 

CurrentDb.Execute strSQL_Insert_Data 

CurrentDb.Close 

Next i 

--Added打印出来代码 -

INSERT INTO [dbo_Tape_Capture_Local_tbl] SELECT [dbo_Tape_Capture].* 
WHERE (LEFT([dbo_Tape_Capture].header__situs_loan_id,14) = [Forms]![Login Page]![CBO_Job_Select_Login]); 
+2

不要在循环内关闭DB连接。 – Arvo

+1

这不是最简单的代码,可以重现您的问题。例如,如果你做了最简单的插入,会发生什么情况。那它有用吗?如果是这样,你的SQL是问题 - 尝试打印出来并手动运行它。如果没有,那么你的数据库连接可能会出错。尝试完全删除该循环,只需要1插入。也许你没有权限插入。请添加更多关于您试图缩小问题的信息。 – Bohemian

+0

嗨波希米亚人。我有权限。但是,我已打印代码,以查看是否可以发现任何错误 –

回答

3

有丢失在查询FROM TableName。用实际表名替换TableName

strSQL_Insert_Data = "INSERT INTO [" & Local_Array(i) & "] " & _ 
        "SELECT [" & Server_Array(i) & "].* " & _ 
        "FROM [" & Server_Array(i) & "] " & _ 
        "WHERE (LEFT([" & Server_Array(i) & "].header__situs_loan_id," & _ 
         Len([Forms]![Login Page]![CBO_Job_Select_Login]) & ") = " & _ 
        "[Forms]![Login Page]![CBO_Job_Select_Login]);" 
+1

谢谢。我认为应该包括在内,但是我使用Access Query Builder进行了测试,并且它生成了一些不同的内容(不包括FROM行)。但是,您的解决方案工作! –

+0

@ConradAddo很高兴帮助你! –

相关问题