Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行时错误“3075”VBA:检查表中是否已存在文件_Vba_Ms Access - Fatal编程技术网

运行时错误“3075”VBA:检查表中是否已存在文件

运行时错误“3075”VBA:检查表中是否已存在文件,vba,ms-access,Vba,Ms Access,我给出了一段代码,试图检查文件是否已上载到表中。上传文件时,上传文件的名称会放入名为“报告的名称”的列中。我正在尝试运行下面的代码,并检查保存所有数据的“Table1”中是否已经存在该文件 但是,当我运行下面的代码时,我得到了错误:运行时错误“3075”:语法错误查询表达式“Name\u of_report”=File1中缺少运算符。xlsx,它是分配给TableName变量的值 我知道这是一个简单的解决方案,但我对VBA非常陌生,尝试过各种更改,但看不到如何让它工作 如果您能帮忙,我们将不胜感

我给出了一段代码,试图检查文件是否已上载到表中。上传文件时,上传文件的名称会放入名为“报告的名称”的列中。我正在尝试运行下面的代码,并检查保存所有数据的“Table1”中是否已经存在该文件

但是,当我运行下面的代码时,我得到了错误:运行时错误“3075”:语法错误查询表达式“Name\u of_report”=File1中缺少运算符。xlsx,它是分配给TableName变量的值

我知道这是一个简单的解决方案,但我对VBA非常陌生,尝试过各种更改,但看不到如何让它工作

如果您能帮忙,我们将不胜感激

Sub Check_TableExists(TableName As Variant)
If CurrentDb.OpenRecordset("SELECT count(Name_of_Report) FROM Table1 WHERE Name_of_Report =" & TableName & ";").Fields(0) > 0 Then
    MsgBox ("Data already exists in table")
End If

文本类型字段的参数需要撇号分隔符

如果CurrentDb.OpenRecordSets从表1中选择countName_of_Report,其中Name_of_Report='&表名&';。那么字段0>0

然而,域聚合函数可以完成,而不是打开记录集


如果DCount*、Table1、Name\u of_Report='&TableName&'>0,则不进行此类检查。它们是非原子的,换句话说,它们由多个步骤组成,并且在一秒钟前已为真此名称的记录不存在可能在稍后尝试插入记录步骤时不再为真。相反信任数据库以防止重复。在报告列的名称上创建唯一键。尝试使用常规insert语句插入新记录。如果此操作失败并出现重复密钥错误,则数据已存在。捕获错误并向用户显示消息。如果错误号=。。。然后,由于报告的名称肯定是字符串,所以您应该检查如何查询字符串。将sql语句存储在变量中,并使用Debug输出。打印,然后将代码粘贴到新的查询sql视图。这揭示了许多错误的sql语句。不要忘记,在语句工作后,请尝试存储包含文字分隔符的名称,然后读取!