【发布时间】:2015-06-30 01:24:40
【问题描述】:
我知道以前有人问过这个问题,但我看过的问题都有点不同。我正在创建一个临时表,导入数据,将数据放在现有表中,并删除临时表。这是我的代码:
Dim db As Database
Dim StrSql As String
Dim rst As Recordset
Set db = CurrentDb()
If DCount("[Name]", "MSysObjects", "[Name] = 'tblInfoLink'") = 1 Then
DoCmd.DeleteObject acTable, "tblInfoLink"
StrSql = "SELECT tblStaff.LastName, tblStaff.FirstName, tblStaff.Rank, tblStaff.PriPhone, " _
& " tblStaff.SecPhone, tblStaff.HireDate INTO tblInfoLink " _
& " FROM [\\Server\BE.accdb].tblStaff " _
& " WHERE (((tblInfo.LastName)=[tblInfo].[LastName]) AND ((tblInfo.FirstName)=[tblInfo].[FirstName]) AND ((tblInfo.HireDate)=[tblInfo].[HireDate]));"
db.Execute StrSql
ElseIf DCount("[Name]", "MSysObjects", "[Name] = 'tblInfoLink'") = 0 Then
StrSql = "SELECT tblStaff.LastName, tblStaff.FirstName, tblStaff.Rank, tblStaff.PriPhone, " _
& " tblStaff.SecPhone, tblStaff.HireDate INTO tblInfoLink " _
& " FROM [\\Server\BE.accdb].tblStaff " _
& " WHERE (((tblStaff.LastName)=[tblInfo].[LastName]) AND " _
& " ((tblStaff.FirstName)=[tblInfo].[FirstName]) AND ((tblStaff.HireDate)=[tblInfo].[HireDate]));"
db.Execute StrSql
End If
StrSql = "Update tblInfo Set PriPhone = Null, SecPhone = Null"
db.Execute StrSql
StrSql = "INSERT Into tblInfo (PriPhone, SecPhone) " _
& " SELECT tblInfoLink.PriPhone, tblInfoLink.SecPhone " _
& " FROM tblInfoLink " _
& " WHERE (((tblInfoLink.LastName)=[tblInfo].[LastName]) AND " _
& " ((tblInfoLink.FirstName)=[tblInfo].[FirstName]) AND ((tblInfoLink.HireDate)=[tblInfo].[HireDate]));"
db.Execute StrSql
'Delete Linked Tables
DoCmd.DeleteObject acTable, "tblInfoLink"
一旦我尝试运行它,我就会收到运行时错误“3061”参数太少。预期 3. 当我点击调试时,highligthed 区域是:
db.Execute StrSql
我知道在 End If 之后,一切正常。从字面上看,这是 ISN 不起作用的最重要的部分。
有什么想法吗?提前致谢!
【问题讨论】:
-
尝试在行前使用
Debug.Print StrSql或MsgBox StrSql查看查询,相信你会发现问题 -
这只是向我展示了我正在制作的确切 SQL 语句。
SELECT LastName, FirstName, Rank, PriPhone, SecPhone, HireDate INTO tblOfcInfoLink FROM [\\Server\BE.accdb].tblStaff WHERE (((tblStaff.LastName)=[tblInfo].[LastName]) AND ((tblStaff.FirstName)=[tblInfo].[FirstName]) AND ((tblStaff.HireDate)=[tblInfo].[HireDate])); -
你用过
Debug.Print StrSql吗? -
我假设我做对了。我这样做了,然后当我点击调试时按 Ctrl+G,这就是立即窗口中显示的内容
-
@keongkenshih,我刚刚做了一些编辑,我很确定问题出在 WHERE 语句中。
标签: ms-access vba ms-access-2010