注册 登录
编程论坛 VFP论坛

VFP+sql麻烦高手帮忙解决一下,谢谢!

degidt023023 发布于 2022-05-24 10:31, 1113 次点击
只有本站会员才能查看附件,请 登录


只有本站会员才能查看附件,请 登录


a1=thisform.text1.Value
a2=thisform.text2.Value
a3=ALLTRIM(thisform.text3.Value)
a4=
a5=
a6=
a7=ALLTRIM(thisform.text7.Value)
a8=alltrim(thisform.text8.Value)
a9=ALLTRIM(thisform.edit1.Value)
a10=ALLTRIM(thisform.text10.Value)
a11=thisform.text11.Value
a12=ALLTRIM(thisform.text12.Value)

sqlexec(nHandle,"select * from shengchanjihua ","生产计划")
SELECT 生产计划
GO bottom
SCATTER TO b
c1=b(1)
d=c1+1
c="VBT-SJ-"+ALLTRIM(STR(d))

sqlexec(nHandle,"insert into xiaoshoudingdan (序号,销售订单编号,机器型号,机器类型,机器吨数,机器工作模式,客户名称,客户国家,;
客户公司名称,销售员,销售日期,订单完成情况);
values(?a1,'&a2','&a3','&a4','&a5','&a6','&a7','&a8','&a9','&a10',?a11,'&a12')")

sqlexec(nHandle,"insert into shengchanjihua (序号,销售订单编号,生产计划编号,机器类型,机器吨数,机器工作模式,销售员,;
生产完成情况)values(?a1,'&a2','&c','&a4',?a5,'&a6','&a10','待生产')")

hytizj.pageframe1.page1.init
thisform.Release

只有本站会员才能查看附件,请 登录


问题是:客户公司名称,超过9个汉字就报错,8个字就不报错,我也是醉了,本人水平有限,麻烦高手帮忙解决一下
9 回复
#2
laowan0012022-05-24 10:43
应该不仅是客户名称超长造成,其他变量超长了也会报这个错
问题出在这个句子上
insert into xiaoshoudingdan (序号,销售订单编号,机器型号,机器类型,机器吨数,机器工作模式,客户名称,客户国家,;
客户公司名称,销售员,销售日期,订单完成情况);
values(?a1,'&a2','&a3','&a4','&a5','&a6','&a7','&a8','&a9','&a10',?a11,'&a12')"

用变量拼接这个SQL语句,如:
xsql = "insert into xiaoshoudingdan (序号,销售订单编号,机器型号,机器类型,机器吨数,机器工作模式,客户名称,客户国家,
客户公司名称,销售员,销售日期,订单完成情况) values("
xsql = xsql + "'&a1'"
xsql = xsql + ",'&a2',"
...
xsql = xsql + ",'&a12')"
sqlexec(nHandle,xsql)

这样试下看看
#3
degidt0230232022-05-24 11:35
以下是引用laowan001在2022-5-24 10:43:57的发言:

应该不仅是客户名称超长造成,其他变量超长了也会报这个错
问题出在这个句子上
insert into xiaoshoudingdan (序号,销售订单编号,机器型号,机器类型,机器吨数,机器工作模式,客户名称,客户国家,;
客户公司名称,销售员,销售日期,订单完成情况);
values(?a1,'&a2','&a3','&a4','&a5','&a6','&a7','&a8','&a9','&a10',?a11,'&a12')"

用变量拼接这个SQL语句,如:
xsql = "insert into xiaoshoudingdan (序号,销售订单编号,机器型号,机器类型,机器吨数,机器工作模式,客户名称,客户国家,
客户公司名称,销售员,销售日期,订单完成情况) values("
xsql = xsql + "'&a1'"
xsql = xsql + ",'&a2',"
...
xsql = xsql + ",'&a12')"
sqlexec(nHandle,xsql)

这样试下看看

感谢版主的回答,我最开始也是怀疑长度过长,我也想到了拼接的方法,结果还是一样,醉得很,我先把它拆解开,就行了,没办法,就用笨办法
sqlexec(nHandle,"insert into xiaoshoudingdan (序号,销售订单编号)values(?a1,'&a2')")
sqlexec(nHandle,"update xiaoshoudingdan set 机器型号='&a3' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 机器类型='&a4' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 机器吨数='&a5' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 机器工作模式='&a6' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 客户名称='&a7' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 客户国家='&a8' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 客户公司名称='&a9' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 销售员='&a10' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 销售日期=?a11 where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 订单完成情况='&a12' where 序号="+a1)
#4
cjc10102022-05-24 11:44
改一下 客户公司名称 的字段数据类型试试

[此贴子已经被作者于2022-5-24 11:47编辑过]

#5
mywisdom882022-05-24 11:53
values(?a1,'&a2','&a3','&a4','&a5','&a6','&a7','&a8','&a9','&a10',?a11,'&a12')"
a1,你直接参数
a2~a12,你用宏做什么,为什么不直接参数 ?a2
#6
degidt0230232022-05-24 11:56
以下是引用cjc1010在2022-5-24 11:44:03的发言:

改一下 客户公司名称 的字段数据类型试试

谢谢你的提醒,不过我试过了,不行
#7
zhken2022-05-24 12:26
用一小部分数据试试,或者检查数据里是否有包含特殊字符
#8
laowan0012022-05-24 16:11
以下是引用degidt023023在2022-5-24 11:35:59的发言:


感谢版主的回答,我最开始也是怀疑长度过长,我也想到了拼接的方法,结果还是一样,醉得很,我先把它拆解开,就行了,没办法,就用笨办法
sqlexec(nHandle,"insert into xiaoshoudingdan (序号,销售订单编号)values(?a1,'&a2')")
sqlexec(nHandle,"update xiaoshoudingdan set 机器型号='&a3' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 机器类型='&a4' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 机器吨数='&a5' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 机器工作模式='&a6' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 客户名称='&a7' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 客户国家='&a8' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 客户公司名称='&a9' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 销售员='&a10' where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 销售日期=?a11 where 序号="+a1)
sqlexec(nHandle,"update xiaoshoudingdan set 订单完成情况='&a12' where 序号="+a1)

不能够啊,我就是那样拼接的SQL字符串,然后执行,字段有几十个的,都没问题
建议你检查每个aN变量的内容,看是否有什么不合适的内容
也可以拼接全部字段,然后一个一个的去掉,直到不出错为止(或者反之,先拼接一个字段,然后是两个字段,...直到全部或出错)
#9
厨师王德榜2022-05-24 23:20
还是尽量不要用中文做字段名和表名,这是我多年一点粗浅的经验.
等你实施以后,就知道了,后期毛病多.
如果只是编着玩玩,当我没说.
#10
星光悠蓝2022-05-25 08:50
复制到word,语句“:”后面没有回车换行。
只有本站会员才能查看附件,请 登录
1