Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 在access数据库中插入以零开头的值_Ms Access_Vba - Fatal编程技术网

Ms access 在access数据库中插入以零开头的值

Ms access 在access数据库中插入以零开头的值,ms-access,vba,Ms Access,Vba,我有一个名为Product_Idtype string的字段,它的长度为7,以0开头。但是,当通过VBA插入文本类型的表字段时,不会插入零 这是插入查询: dbs.Execute "INSERT INTO tablename (PROD_NBR)VALUES (" & prodID & ");" 我想我已经修复了这个错误-您需要用单引号声明该值 PROD_NBR为字符串类型,表中的字段为文本类型,则插入变量应在单引号内、双引号内以及两个符号之间声明(&S): dbs.Exe

我有一个名为Product_Idtype string的字段,它的长度为7,以0开头。但是,当通过VBA插入文本类型的表字段时,不会插入零

这是插入查询:

dbs.Execute "INSERT INTO tablename (PROD_NBR)VALUES (" & prodID & ");"  

我想我已经修复了这个错误-您需要用单引号声明该值

PROD_NBR为字符串类型,表中的字段为文本类型,则插入变量应在单引号内、双引号内以及两个符号之间声明(&S):

dbs.Execute "INSERT INTO tablename (PROD_NBR)VALUES ('" & prodID & "');" 

响应@Cherry的回答,下面的方法没有参数化查询(也称为prepared语句)那么繁琐。prodID可以安全地包含引号和其他特殊字符

    With dbs.OpenRecordset("tablename")
        .AddNew
        .Fields("PROD_NBR") = prodID
        .Update
    End With
关于问题的零开头部分,您是否希望PROD_NBR始终为7个字符,并用前导0填充?然后将prodID替换为:


你能发布一些代码…让自己对SQL注入敞开大门吗attacks@LittleBobbyTables,您有何建议?根据您创建prodID变量的方式,请参见此处:简单的方法是检查prodID是否不包含特殊字符和/或遵循特定格式。如果你能负担得起,事先准备好的报表是很好的。
    Right("0000000" & prodID, 7)