我需要为MS-Access 2000编写一个SQL查询,以便在存在行的情况下进行更新,但在不存在的情况下进行插入。(我相信这被称为“ upsert”)
IE
如果行存在…
UPDATE Table1 SET (...) WHERE Column1='SomeValue'
如果不存在…
INSERT INTO Table1 VALUES (...)
可以在一个查询中完成吗?
通常,我通常先运行insert语句,然后检查是否发生错误3022,这表明该行已存在。所以像这样:
On Error Resume Next
CurrentDb.Execute "INSERT INTO Table1 (Fields) VALUES (Data)", dbFailOnError
If Err.Number = 3022 Then
Err.Clear
CurrentDb.Execute "UPDATE Table1 SET (Fields = Values) WHERE Column1 = 'SomeValue'", dbFailOnError
ElseIf Err.Number <> 0 Then
'Handle the error here
Err.Clear
End If
Edit1:
我想提一下,我在这里发布的内容是一个非常常见的解决方案,但是您应该意识到,对错误进行计划并将其用作程序正常流程的一部分通常被认为是一个坏主意,尤其是当存在获得相同结果的其他方式。感谢RolandTumble指出这一点。
问题内容: 是否有用于在python中使用MS Access数据库的库?win32模块不像MySQL库那样简单。有没有更简单的方法可以将MS Access与Python一起使用? 问题答案: 根据您想做的事情,pyodbc可能就是您想要的。 注意: 如果未安装 MSOffice ,则可以下载可免费分发的新驱动程序。 __
本文向大家介绍ms-access 什么是MS-Access,我们将其用作什么?,包括了ms-access 什么是MS-Access,我们将其用作什么?的使用技巧和注意事项,需要的朋友参考一下 示例 Microsoft Access是一个应用程序生成器,用于开发数据库和数据驱动的应用程序,主要供本地使用。Microsoft Access包含两个主要元素: 一个关系数据库管理系统(RDBMS),它将M
问题内容: 如何在Windows中使用JDBC代码连接到基于Microsoft Access的数据库? Type-1和Type-4类型的驱动程序应编写什么语法? 对于我们使用的每种类型的驱动程序,以上语法是否有所不同?我们如何定义和识别我们使用的驱动程序类型? 如果可能,然后还为oracle指定要加载的驱动程序语法。 问题答案: 您可以通过以下方式使用JDBC-ODBC桥: 然后,您可以使用以下形
问题内容: 任务: 我正在将数据库从MS Access迁移到Maximizer。为此,我必须在MS ACCESS中获取64个表并将它们合并为一个表。输出必须为TAB或CSV文件的形式。然后将其导入到Maximizer中。 问题: Access无法执行看起来如此复杂的查询,因为每次运行查询时它都会崩溃。 替代方案: 我已经考虑了一些替代方案,并希望在其中选择最耗时的方案,同时还要利用任何机会学习新知
Summary As explained in the generic SQL injection section, SQL injection vulnerabilities occur whenever user-supplied input is used during the construction of a SQL query without being adequately cons
问题内容: 为SQL Server编写查询时,可以声明和使用如下变量: 在编写用于MS Access的查询时,是否有一种方法可以类似地声明和使用变量? 我需要用另一个查询的结果填充变量,然后使用该值执行插入/更新操作。该查询将从.NET应用程序运行。 问题答案: 在某种方式 但是,您不能使用,在运行查询或在VBA中设置查询时可以手动输入参数。 您可以使用System.Data.OleDb命名空间中