首页 > 解决方案 > 访问 QueryDefs 和 SQL 方言

问题描述

我正在运行 MySQL DB 作为后端,MS Access (Office 365) 作为前端。

在 VBA 中,我正在创建一个带有参数的 DAO querydef,以将数据插入到链接表中。如果我逐行插入,这将有效。querydef 中的 SQL 如下所示:

参数 param1 LONG,param2 TEXT;插入 tbl_target (attr1, attr2) 值 (param1,param2);

但是,我想在这个 SQL 字符串中使用 2 个 MySQL 特性:

  1. 插入忽略
  2. 在一次调用中添加多个值组

SQL 字符串因此看起来像:

参数 param1 LONG, param2 TEXT**, param3 LONG, param4 TEXT**; INSERT IGNORE INTO tbl_target (attr1, attr2) VALUES (param1,param2) , (param4, param3) ;

我无法让它工作,因为 DAO 似乎检查了 SQL 字符串(即使它将是直通的)并抱怨它显然不知道这些 MySQL 功能。

我能做些什么来实现我想要的?

非常感谢 krilledrille

编辑/添加: 代码看起来像这样。我对 SQL 字符串中的 PARAMETERS 部分感到困惑,因为这与 MySQL 不兼容(据我所知):

Set qdf = CurrentDb.CreateQueryDef(vbNullString)
qdf.Connect = getMyBackendConnectionString()
qdf.ReturnsRecords = False
qdf.SQL = theSql
qdf.Parameters("param1") = 12345678
qdf.Parameters("param2") = "this is param2"
qdf.Parameters("param3") = 87654321
qdf.Parameters("param4") = "this is param4"
qdf.Execute dbSQLPassThrough
qdf.Close
Set qdf = Nothing

标签: mysqlvbams-access

解决方案


推荐阅读