标题:如何将超过254字符内容更新至sql中
只看楼主
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
得分:0 
应该是语法问题,变量名之间好像不要加单引号:
SQLEXEC(connhandle, "Update some_table_withmemo SET field_text = ?lcText")

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2016-08-30 13:48
ttlover7613
Rank: 2
等 级:论坛游民
威 望:2
帖 子:48
专家分:85
注 册:2016-8-29
得分:0 
回复 10楼 sdta
用VFP命令更新到SQL数据库的表里,不就是用SQLEXEC(handle,“Update 表 set 字段='XX值'”)命令吗
关键是“XX值”长度不能超过254字符,不是SQL语句。是不是太大太长的备注字段不能更新或者插入到SQL的表里呀

[此贴子已经被作者于2016-8-30 14:24编辑过]

2016-08-30 14:22
ttlover7613
Rank: 2
等 级:论坛游民
威 望:2
帖 子:48
专家分:85
注 册:2016-8-29
得分:0 
回复 11楼 红星二锅头
语法没问题,用了少于254的字符测试通过,超过就会报错。
2016-08-30 14:44
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
得分:0 
VFP 命令行的长度为8K,字符串长度为:255。如果字符串长度超过了255,可以多个字符串的拼接,或者 Text/EndText,比如:
TEXT to Pjg noShow
胆固醇  CHOL  4.41    3.10-5.70  mmol/L  ;甘油三酯  TG  0.79     0.34-1.70  mmol/L  ;低密度脂蛋白  LDL  0.89     <3.12  mmol/L  ;高密度脂蛋白  HDL  1.47     1.0-2.50  mmol/L  ;载脂蛋白A1  APOA1  1.20     1.00-1.60  g/l  ;载脂蛋白B  APOB  0.70     0.6-1.1  g/l"  ;空腹血糖  GLU  4.66  3.9-5.6  mmol/l  ;
ENDTEXT
? Len(Pjg)
SQLEXEC(h2,"update health_data set Inspect_content=?Pjg")
注意,是:?Pjg吗,不是:'&Pjg'

或者
TEXT to Pjg noShow
update health_data set Inspect_content=[胆固醇  CHOL  4.41    3.10-5.70  mmol/L]
ENDTEXT

SQLEXEC(h2, Pjg)

建议还是多查查语法问题!!!

只能这样子了。

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2016-08-30 14:50
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:4 
以下是引用红星二锅头在2016-8-30 14:50:08的发言:

VFP 命令行的长度为8K,字符串长度为:255。如果字符串长度超过了255,可以多个字符串的拼接,或者 Text/EndText,比如:
TEXT to Pjg noShow
胆固醇  CHOL  4.41    3.10-5.70  mmol/L  ;甘油三酯  TG  0.79     0.34-1.70  mmol/L  ;低密度脂蛋白  LDL  0.89     <3.12  mmol/L  ;高密度脂蛋白  HDL  1.47     1.0-2.50  mmol/L  ;载脂蛋白A1  APOA1  1.20     1.00-1.60  g/l  ;载脂蛋白B  APOB  0.70     0.6-1.1  g/l"  ;空腹血糖  GLU  4.66  3.9-5.6  mmol/l  ;
ENDTEXT
? Len(Pjg)
SQLEXEC(h2,"update health_data set Inspect_content=?Pjg")
注意,是:?Pjg吗,不是:'&Pjg'

或者
TEXT to Pjg noShow
update health_data set Inspect_content=[胆固醇  CHOL  4.41    3.10-5.70  mmol/L]
ENDTEXT

SQLEXEC(h2, Pjg)

建议还是多查查语法问题!!!

只能这样子了。

用11楼的方法,用变量,不要用值。。
SQLEXEC(connhandle, "Update some_table_withmemo SET field_text = ?lcText")

2016-08-30 14:54
ttlover7613
Rank: 2
等 级:论坛游民
威 望:2
帖 子:48
专家分:85
注 册:2016-8-29
得分:0 
回复 14楼 红星二锅头
谢谢,用了text   endtext命令成功把数据写上去了。
2016-08-30 14:59
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
如:上传1个图片到SQL2000服务器去
img=getfile() &&选择图片
imgStr=filetostr(img) &&把图片转为字符串
id="001"
sqlexec(connhandle, "insert into 表名(id,img) values(?id,?imgStr)")
一般几M大的文件,都能正常上传到服务器
2016-08-30 15:03
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用ttlover7613在2016-8-30 14:59:05的发言:

谢谢,用了text   endtext命令成功把数据写上去了。

用 text ..... endtext,还有个好处就是这个东西 <<变量>>,如
cWhere=''
bh=allt(thisform.text1.value)
xm=allt(thisform.text2.value)
...
if !empty(bh)
   cWhere=iif(empty(cWhere),'bh=?bh',cWhere+' and bh=?bh')
endif
if !empty(xm)
   cWhere=iif(empty(cWhere),'xm=?xm',cWhere+' and xm=?xm')
endif
if !empty(cWhere)
   cWhere='where '+cWhere
endif

TEXT TO sqlStr TEXTMERGE NOSHOW PRETEXT 4
update 表名称 set bh=?bh ,xb=?xb
<<cWhere>>
endtext

sqlexec(handle,sqlStr)

**上面是动态拼接查询条件语句,
***<<cWhere>> ,好像比 &管用。。。


[此贴子已经被作者于2016-8-30 15:21编辑过]

2016-08-30 15:17
ttlover7613
Rank: 2
等 级:论坛游民
威 望:2
帖 子:48
专家分:85
注 册:2016-8-29
得分:0 
回复 15楼 mywisdom88
text  这里是变量怎么定义  endtext
2016-08-30 15:23
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
得分:0 
用“值”比用“变量”的运算速度要快,因为变量还要解析,特别是变量特别多、特别复杂、有宏替换的时候、有循环的环境下,特别明显。

当然,具体情况具体分析,不是一概而论的。

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2016-08-30 15:24



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




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

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