标题:又遇上新问题了---update更新数值型字段
只看楼主
lgp740401
Rank: 1
等 级:新手上路
帖 子:52
专家分:5
注 册:2008-5-18
结帖率:91.67%
已结贴  问题点数:20 回复次数:9 
又遇上新问题了---update更新数值型字段
我想在vfp中用一个从sql上取下的表A去更新另一个从sql上取下的表B(多字段,有字符型,数值型)

1.先求出各字段的值,把数值型搞成字段型(用cast as),
If    Type("lc更新字段")='C' And !Empty(lc更新字段)
      zlc更新字段=''
      For i=1 To Getwordcount(lc更新字段,",")
            llc更新字段=Alltrim(Getwordnum(lc更新字段,i,","))
            ll更新值=Iif(Type("&llc更新字段")<>"C",Alltrim(Cast(&llc更新字段 As Char(254))),Alltrim(&llc更新字段))
            zlc更新字段=Iif(Empty(zlc更新字段),llc更新字段+"='"+ll更新值+"'",zlc更新字段+","+llc更新字段+"='"+ll更新值+"'")
      Endfor
ENDIF  &&&zlc更新字段="fcode='zzz14.0',thick='14.0',......
   lcmd="update 表a set "+zlc更新字段 &&&这样lcmd语句没提示错,全是字符型
   EXECSCRIPT(lcmd) &&&提示出错:类型错误,因thick是数值型
2. 用update 表a set (lc更新字段) select   lc更新字段   from 表b
提示语法错误?这sql访问倒是没问题,在vfp中用不上吗?
向各位大侠求解!!!
搜索更多相关主题的帖子: 更新 数值 字段 sql 提示 
2017-10-20 18:12
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:20 
VFP中命令没有下面这样写的,看下帮助文件中的用法
update 表a set (lc更新字段) select   lc更新字段   from 表b

坚守VFP最后的阵地
2017-10-20 18:43
lgp740401
Rank: 1
等 级:新手上路
帖 子:52
专家分:5
注 册:2008-5-18
得分:0 
回复 2楼 sdta
你遇到过这样的问题(更新本地表的数值、字符混合型多字段(至少12个以上)?
2017-10-20 18:50
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
以下是引用lgp740401在2017-10-20 18:50:03的发言:

你遇到过这样的问题(更新本地表的数值、字符混合型多字段(至少12个以上)?

至少12个以上 是什么意思

坚守VFP最后的阵地
2017-10-20 19:02
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
数值型数据转换为字符型数据的函数:
TRANSFORM()
STR()
PADL()

坚守VFP最后的阵地
2017-10-20 19:05
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
transform(thick)=="14.0"

坚守VFP最后的阵地
2017-10-20 19:07
lgp740401
Rank: 1
等 级:新手上路
帖 子:52
专家分:5
注 册:2008-5-18
得分:0 
以下是引用sdta在2017-10-20 19:02:38的发言:

 
至少12个以上 是什么意思
字段,意思好多字段
2017-10-20 19:13
lgp740401
Rank: 1
等 级:新手上路
帖 子:52
专家分:5
注 册:2008-5-18
得分:0 
以下是引用sdta在2017-10-20 19:07:15的发言:

transform(thick)=="14.0"
提示:语法错误!
      lcmd="update A set fcode='zzz14.0',bxcode='zzz14.0',transform(bxthick)='14.0',transform(bxwidth)='1240',transform(bxlongth)='2465',ylly='外购'  
      EXECSCRIPT(lcmd)    &&&&提示:语法错误![attach]91641[/attach]


[此贴子已经被作者于2017-10-20 19:39编辑过]

2017-10-20 19:30
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
lcmd="update A set fcode='zzz14.0',bxcode='zzz14.0',transform(bxthick)='14.0',transform(bxwidth)='1240',transform(bxlongth)='2465',ylly='外购'"
后面少了一个双引号

坚守VFP最后的阵地
2017-10-20 20:16
lgp740401
Rank: 1
等 级:新手上路
帖 子:52
专家分:5
注 册:2008-5-18
得分:0 
回复 9楼 sdta
嗯,打的时候少了,不是这问题,是字符型的全用'zzz14.0',数值的直接如:bxthick=14.0,一定不能加上''
lcmd="update A set fcode='zzz14.0',bxcode='zzz14.0',bxthick=14.0,bxwidth=1240,bxlongth=2465,ylly='外购'"
EXECSCRIPT(lcmd)

ok!!!,谢谢你的参与!!!

[此贴子已经被作者于2017-10-20 20:20编辑过]

2017-10-20 20:18



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




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

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