gpt4 book ai didi

mysql - MS Access with MySQL 使用 DAO 连接参数查询错误

转载 作者:行者123 更新时间:2023-11-30 21:32:31 26 4
gpt4 key购买 nike

所以我正在尝试按照 Parfait 的建议对我的表单进行参数化。这是因为我的表单在退出时保存并保护它们免受 SQL 注入(inject)。到目前为止,我在保存按钮的点击事件中有这段代码:

Dim db As DAO.Database
Dim qdef As DAO.QueryDef
Dim SQL As String

Set db = OpenDatabase("", False, False, Globales.ConnString)

SQL = "PARAMETERS nf_param VARCHAR(255), f_param DATETIME, l_param INT(11), s_param INT(11), fd_param VARCHAR(255), sf_param DOUBLE, eie_param DOUBLE, " _
& "im_param DOUBLE, ie_param DOUBLE, csaie_param DOUBLE, csaim_param DOUBLE, t_param DOUBLE, cs_param DOUBLE, cim_param DOUBLE, cie_param DOUBLE, " _
& "mp_param VARCHAR(255), imp_param INT(11), pd_param VARCHAR(255);" _
& " INSERT INTO tbl1facturas (Factura, Fecha, Localidad_ID, Suplidor_ID, Factura_PDF, Subtotal, Exento al IVU Estatal, IVU MUNICIPAL, IVU ESTATAL, CSA IVU ESTATAL, CSA IVU MUNICIPAL, " _
& "Total de Compra, Credito al Subtotal, Credito IVU Municipal, Credito IVU ESTATAL, Metodo de Pago, ID Metodo Pago, MetodoPago_PDF) " _
& " VALUES (nf_param, f_param, l_param, s_param, fd_param, sf_param, eie_param, im_param, ie_param, csaie_param, csaim_param, t_param, cs_param, cim_param, cie_param, mp_param, " _
& "imp_param, pd_param);"

Set qdef = db.CreateQueryDef("", SQL)

qdef!nf_param = Forms!frmEntradaFacturas!Text14
qdef!f_param = Forms!frmEntradaFacturas!Text16
qdef!l_param = Forms!frmEntradaFacturas!Text18
qdef!s_param = Forms!frmEntradaFacturas!Combo26
qdef!fd_param = Forms!frmEntradaFacturas!Text73
qdef!sf_param = Forms!frmEntradaFacturas!Text28
qdef!eie_param = Forms!frmEntradaFacturas!Text50
qdef!im_param = Forms!frmEntradaFacturas!Text42
qdef!ie_param = Forms!frmEntradaFacturas!Text46
qdef!csaie_param = Forms!frmEntradaFacturas!Text44
qdef!csaim_param = Forms!frmEntradaFacturas!Text40
qdef!t_param = Forms!frmEntradaFacturas!Text48
qdef!cs_param = Forms!frmEntradaFacturas!Text30
qdef!cim_param = Forms!frmEntradaFacturas!Text36
qdef!cie_param = Forms!frmEntradaFacturas!Text38
qdef!mp_param = Forms!frmEntradaFacturas!Text52
qdef!imp_param = Forms!frmEntradaFacturas!Text54
qdef!pd_param = Forms!frmEntradaFacturas!Text75

qdef.Execute dbFailOnError
Set qdef = Nothing

点击按钮时出现以下错误:

运行时错误“3139”:

PARAMETER 子句中的语法错误。

我查看了我的参数子句,但似乎没问题。已验证所有数据类型是否正确,如 mysql 表中所示。经过验证的标点符号似乎没问题。所以我不确定我在这里错过了什么。

欢迎大家帮忙!谢谢大家!

最佳答案

您正在构建 Access 查询,因此您需要使用 Access 数据类型,而不是 MySql 数据类型。

Access 没有 VARCHAR(255)INT(11),但有 TEXTINTEGER .

这是 Access SQL 数据类型的列表:
https://support.office.com/en-us/article/sql-data-types-9188f41d-6c0e-4733-9d20-d08916f50bd2

有很多同义词,例如 LONGDOUBLE

您可以简单地在 Access 中创建一个虚拟查询,打开参数窗口并定义一些具有各种数据类型的参数,然后切换到 SQL View 以查看名称。

关于mysql - MS Access with MySQL 使用 DAO 连接参数查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55465279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com