标题:VFP+sql麻烦高手帮忙解决一下,谢谢!
只看楼主
degidt023023
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2021-6-30
结帖率:25%
 问题点数:0 回复次数:9 
VFP+sql麻烦高手帮忙解决一下,谢谢!




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个字就不报错,我也是醉了,本人水平有限,麻烦高手帮忙解决一下
搜索更多相关主题的帖子: 客户 机器 销售 thisform Value 
2022-05-24 10:31
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
应该不仅是客户名称超长造成,其他变量超长了也会报这个错
问题出在这个句子上
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)

这样试下看看
2022-05-24 10:43
degidt023023
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2021-6-30
得分:0 
以下是引用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)
2022-05-24 11:35
cjc1010
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:64
专家分:195
注 册:2006-4-16
得分:0 
改一下 客户公司名称 的字段数据类型试试

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

2022-05-24 11:44
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
values(?a1,'&a2','&a3','&a4','&a5','&a6','&a7','&a8','&a9','&a10',?a11,'&a12')"
a1,你直接参数
a2~a12,你用宏做什么,为什么不直接参数 ?a2
2022-05-24 11:53
degidt023023
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2021-6-30
得分:0 
以下是引用cjc1010在2022-5-24 11:44:03的发言:

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

谢谢你的提醒,不过我试过了,不行
2022-05-24 11:56
zhken
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:273
专家分:594
注 册:2012-9-21
得分:0 
用一小部分数据试试,或者检查数据里是否有包含特殊字符
2022-05-24 12:26
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
以下是引用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变量的内容,看是否有什么不合适的内容
也可以拼接全部字段,然后一个一个的去掉,直到不出错为止(或者反之,先拼接一个字段,然后是两个字段,...直到全部或出错)
2022-05-24 16:11
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:0 
还是尽量不要用中文做字段名和表名,这是我多年一点粗浅的经验.
等你实施以后,就知道了,后期毛病多.
如果只是编着玩玩,当我没说.
2022-05-24 23:20
星光悠蓝
Rank: 9Rank: 9Rank: 9
来 自:山水甲天下
等 级:贵宾
威 望:48
帖 子:459
专家分:1116
注 册:2010-1-11
得分:0 
复制到word,语句“:”后面没有回车换行。
2022-05-25 08:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509160-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.360081 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved