因此,我试图按照Parfait的建议对表单进行参数化。这是因为我的表单会在退出时进行保存,并保护它们免受SQL注入。到目前为止,我的保存按钮的on click事件中包含以下代码:
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子句中的语法错误。
我看了看我的Parameter子句,但看起来还可以。验证所有数据类型是否正确,如mysql表中所示。经过验证的标点似乎还可以。所以我不确定我在这里缺少什么。
欢迎所有帮助!谢谢你!
答案 0 :(得分:0)
您正在构建Access查询,因此您需要使用Access数据类型,而不是MySql数据类型。
访问权限没有VARCHAR(255)
或INT(11)
,但没有TEXT
或INTEGER
。
以下是Access SQL数据类型的列表:
https://support.office.com/en-us/article/sql-data-types-9188f41d-6c0e-4733-9d20-d08916f50bd2
有许多同义词,例如LONG
或DOUBLE
。
您只需在Access中创建一个虚拟查询,打开参数窗口并定义具有各种数据类型的一些参数,然后切换到SQL视图以查看名称。