Sql select语句包含一个保留字或参数名,该保留字或参数名拼写错误或缺失

Sql select语句包含一个保留字或参数名,该保留字或参数名拼写错误或缺失,sql,vba,ms-access,Sql,Vba,Ms Access,如果像这样的东西已经发布或者只是一个简单的修复,我会道歉,但我已经到处找了,似乎找不到解决这个问题的方法。我使用的是vba:ms access,我试图通过运行一个查询在不同的数据库中复制两个相同的表。我一直在尝试制作脚本,以便它可以在只需要用户输入的不同数据库上运行。然而,在这一过程中,我似乎不断收到一个错误,内容如下: select语句包含一个保留字或一个参数名 拼写错误或丢失 LinkUserTable函数基本上根据用户输入从另一个DB创建链接表。下面是子程序: Sub LinkTables

如果像这样的东西已经发布或者只是一个简单的修复,我会道歉,但我已经到处找了,似乎找不到解决这个问题的方法。我使用的是vba:ms access,我试图通过运行一个查询在不同的数据库中复制两个相同的表。我一直在尝试制作脚本,以便它可以在只需要用户输入的不同数据库上运行。然而,在这一过程中,我似乎不断收到一个错误,内容如下:

select语句包含一个保留字或一个参数名 拼写错误或丢失

LinkUserTable函数基本上根据用户输入从另一个DB创建链接表。下面是子程序:

Sub LinkTables()
        Dim sTable1 As String
        Dim sTable2 As String
    sTable1 = LinkUserTable
    sTable2 = LinkUserTable

    vars_sql = "SELECT " & sTable1 & ".[f_ptid]," & sTable1 & ".[f_flag]," & sTable1 & ".[f_user]," & sTable1 & ".[f_brief]," & sTable1 & ".[f_gid]," & sTable1 & ".[f_vco]," & sTable1 & ".[f_dtype]," & sTable1 & ".[f_precs]," & sTable1 & ".[f_addr]," & sTable1 & ".[f_ndim]," & sTable1 & ".[f_sys]," & sTable1 & ".[f_unit]," & sTable1 & ".[f_value]," & sTable1 & ".[f_pred]," & sTable1 & ".[f_bflag]," & sTable1 & ".[f_dim1]," & sTable1 & ".[f_dim2]," & sTable1 & ".[f_dim3]," & sTable1 & ".[f_bound]," & sTable1 & ".[f_size]," & sTable1 & ".[f_updat]," & sTable1 & ".[f_time]," & sTable1 & ".[f_ldes]," & sTable1 & ".[f_sflag]," & sTable1 & ".[f_tflag]," & sTable1 & ".[rid]" + _
                    "FROM" + sTable1 + " AS LEFT JOIN " + sTable2 + " AS ON sTable1.[f_ptid] = sTable2.[f_ptid]" + _
                    "WHERE (((" & sTable2 & ".[f_ptid]) Is Null))" 


If CheckQuery("new_old") = "Yes" Then
            DoCmd.DeleteObject acQuery, "new_old"
        End If

Set qdf = CurrentDb.CreateQueryDef("new_old", vars_sql)

End Sub

我只是想知道基于此,可能会有哪些问题导致此错误?所有字段都在两个数据库中,所有字段都具有相同的属性(只是不同的数据)。如果缺少信息,我会道歉。如果需要,我可以提供更多信息。

正确的语法是
左连接
,而不是
左连接


例外情况是,如果您想给表提供一个别名,在这种情况下,您可以使用alias LEFT JOIN
。。。但是,在这种情况下,您不希望这样做,因为您使用的是
[table].[columnname]
语法。

赋值的
vars\u sql
第二行在字符串中有一些表变量:

" AS ON sTable1.[f_ptid] = sTable2.[f_ptid]"
上述内容应如下所示:

" AS ON " + sTable1 + ".[f_ptid] = " + sTable2 + ".[f_ptid]"  

看来我们都是对的;我错过了sTable1上的
,[f_ptid]=sTable2。[f_ptid]”
,但您仍然有别名语法错误。@LittleBobbyTables-听起来我们都部分正确。您在
左连接
语法方面做得很好。正如我担心一个简单的修复方法一样。谢谢谢谢你!对SQL还是很陌生,没有很多地方可以寻求具体的帮助。
拼写错误
是故意拼错的吗?