我有一个带有SQL Server后端的Access前端。
在其中一个表格中,有一些VBA可以保留"审核日志"的变化。
在一个过程中有这两位代码,第一个有效,但第二个有错误
工作:
sSQL = "DELETE FROM [dbo_EventReport_Audit_Temp_Before];"
CurrentProject.Connection.Execute sSQL
没有工作几行:
sSQL = "INSERT INTO [dbo_EventReport_Audit_Temp_Before] (<TABLE COLUMNS>) SELECT <TABLE COLUMNS> FROM [dbo_EventReport] WHERE ((Event_ID)= <EVENT_ID>");"
CurrentProject.Connection.Execute sSQL
因此第一个语句删除表中的所有记录。这很好,因为我已经插入了虚拟数据并逐步执行了代码并看到它被删除了。
但是第二个语句会导致错误:
错误-2147467259:ODBC - 与&#39; EventsDB&#39;的连接失败。
任何人都知道为什么第一个声明可以正常工作,但第二个声明失败了?
为第二个语句提取sSQL的值,并通过Access中的SQL查询手动运行它,将数据插入表中。
编辑: 我并不想发表完整的声明,因为它有点像怪物。但这是:
sSQL = "INSERT INTO " & sAudTmpTable & " ( [audType], [audDate], [audUser], [Event_Number], [Event_ID], " & _
"[Received_Date], [Response_Date], [Site], [Server], [Workstation], [Software_Version], [Data_Version], " & _
"[Description], [Test_Description], [Company], [Observed_By], [Observed_Date], [Tested_By], [AssignedTo], " & _
"[Tested_Date], [Test_Result], [Ind_Tested_By], [Ind_Tested_On], [Ind_Test_Result], [Reviewed_By], " & _
"[Actioned_Date], [Review_Date], [Review_Result], [Completed_By], [Completed_Date], [Closed_By], " & _
"[Closed_Date], [Exclude], [Category], [State], [Event_Responsibility], [Probability], [WIP_Number], " & _
"[OriginalWIP], [Severity], [Blocked], [Block_Description], [Tags], [Work], [TaskID], [EventType], " & _
"[DefectType], [known_issue_impact], [known_issue_description], [Operator_Notes], [BugWIP], " & _
"[SupplierName], [SupplierCompany], [Simulator], [ATSTest], [FixPriority] ) " & _
"SELECT '" & EditOrInsert & "' AS Expr1, '" & DateTime & "', '" & User & "', [Event_Number], [Event_ID], " & _
"[Received_Date], [Response_Date], [Site], [Server], [Workstation], [Software_Version], [Data_Version], " & _
"[Description], [Test_Description], [Company], [Observed_By], [Observed_Date], [Tested_By], [AssignedTo], " & _
"[Tested_Date], [Test_Result], [Ind_Tested_By], [Ind_Tested_On], [Ind_Test_Result], [Reviewed_By], " & _
"[Actioned_Date], [Review_Date], [Review_Result], [Completed_By], [Completed_Date], [Closed_By], " & _
"[Closed_Date], [Exclude], [Category], [State], [Event_Responsibility], [Probability], [WIP_Number], " & _
"[OriginalWIP], [Severity], [Blocked], [Block_Description], [Tags], [Work], [TaskID], [EventType], " & _
"[DefectType], [known_issue_impact], [known_issue_description], [Operator_Notes], [BugWIP], " & _
"[SupplierName], [SupplierCompany], [Simulator], [ATSTest], [FixPriority] " & _
"FROM [" & sTable & "] WHERE ((" & sKeyField & ")=" & lngKeyValue & ");"
答案 0 :(得分:1)
您报告此尝试失败了......
sSQL
...但是这可以使用相同的CurrentDb.Execute sSQL, dbFailOnError + dbSeeChanges
语句...
CurrentProject.Connection.Execute
CurrentDb.Execute
是一种ADO方法。 INSERT
是一种DAO方法。这两种方法相似,但不一样。
一个重要的区别是当SQL语句包含保留字作为对象(表,字段等)名称时,ADO版本更有可能失败; DAO对问题名称更加宽容。
但是还存在其他差异,并且无法确定哪些是我们未见过的function showDialog() {
$mdDialog.show({
controller: 'SampleCtrl',
controllerAs: 'vm',
bindToController: true,
templateUrl: 'template.html',
onComplete: function () {
service.doSomething();
}
});
}
陈述的关键因素。 ; - )