![]() |
1
1
解决(和博客)如下 我一直在为一组Access数据库实现升级,用由ODBC链接的MySQL替换Access文件数据库。除了将记录插入具有自动递增ID列的表中并检索刚刚创建的ID的值这一常见概念外,一切似乎都非常顺利。当然,在PHP或类似的应用程序中,只需使用 选择最后一个插入ID()。 函数来检索ID。但是,MySQL文档本身表示,这对某些ODBC应用程序(如Delphi或Access)不起作用,建议使用 从tbl中选择*,其中auto为空; 不幸的是,当从我正在使用的访问应用程序内部调用时,这对我来说根本不起作用,而且在Web上似乎有一些评论认为这确实不可靠,因为访问可能会中断数据连接并在后台重新连接,从而使调用无效。 作为另一种选择,我决定使用MySQL函数向表中添加一个空白记录,返回Access随后用于更新记录的ID(这与现有应用程序的代码样式非常匹配)。不幸的是,这种明显简单的解决方法并不简单,因为MySQL中的长期错误使得找到既能发送又能返回变量的有效代码成为了一种挑战。Web上的几个示例将在有限的领域内工作,即只使用输入或输出变量,但无法同时使用这两个变量。 我的最后一个解决方案是,它适用于我正在部署的MySQL5.1和Access2003组合,如下所示 MySQL过程
此过程非常有用,因为它将插入一行,并返回行中包含所有空字段或定义了默认值的非空字段的任何表的ID。要调用此函数,我使用以下函数:
这段代码有点不寻常,因为在MSSQL上,您通常会使用参数化过程调用,但由于MySQL ODBC中存在错误(或至少与Access不兼容),以上似乎是允许传递和返回这两个数据的唯一方法。 |
![]() |
Stormer · 从Access格式化Excel单元格无效 2 年前 |
![]() |
schalld · 从ms access中执行URL 2 年前 |
![]() |
Lando · 希望更正我的更新后事件(MS Access) 6 年前 |
|
MStudz · 从VBA查询访问权限 6 年前 |
![]() |
Roland · 简单Case语句中的语法错误 6 年前 |
![]() |
JZeig1 · 如何以编程方式在组合框中选择值? 6 年前 |