| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4155 人关注过本帖
标题:请叫一个表单Value值属性的问题
只看楼主 加入收藏
a519569003
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-3-14
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
请叫一个表单Value值属性的问题
lf=thisform.
Do Case
Case Vartype(&lf)=‘C’
 lsztj1=‘“‘+ALLT(Thisform.container2.text1.value)+’”’
Case Vartype(&lf)=‘D’
 lsztj1='CTOD(“‘+ALLT(Thisform.container2.text1.value)+’”)
Othercase
 lsztj1=ALLT(Thisform.Container2.Text1.value)

求解:第一二个CASE 里面“‘+ALLT(Thisform.container2.text1.value)+’”这个是什么为什么在第三个case里面就没有了呢
还有 Vartype(&lf)=‘C’ 为什么要用宏替换呀
麻烦大神解答一下好吗!!!
2016-03-14 11:21
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:4 
Vartype(thisform.)
2016-03-14 11:29
a519569003
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-3-14
收藏
得分:0 
回复 2楼 吹水佬
书上写宏替换替换字符型变量,但这个本来就是字符变量呀
2016-03-14 12:09
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用a519569003在2016-3-14 12:09:54的发言:

书上写宏替换替换字符型变量,但这个本来就是字符变量呀

&lf语句 展开就是 thisform.语句
能不用 & 最好还是不用
2016-03-14 14:01
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:4 
使用宏是变量名,不使用宏是变量值!!

2016-03-14 16:10
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:4 
1. 对于本例来说,使用 type() 要比 vartype() 简练,无需使用宏替换。如下所示:

lf=thisform.
Do Case
Case type(lf)='C'
 lsztj1= '"'+ALLT(Thisform.container2.text1.value)+'"'
Case type(lf)='D'
 lsztj1='CTOD("'+ALLT(Thisform.container2.text1.value)+'"')
Otherwise
 lsztj1=ALLT(Thisform.Container2.Text1.value)
Endcase

2. 你提供的代码有书写错误:是 Otherwise 不是 othercase。你的代码也不够完整。从上面的代码分析:lsztj1 应该保存的是查询条件中的字段值表达式,查询时采用如下形式:locate for 字段 = &lsztj1。因此,otherwise 中的 .Value 两边也必须加定界符,如下:
……
Otherwise
 lsztj1='"'+ALLT(Thisform.Container2.Text1.value)+'"'

如果查询时采用如下形式:locate for 字段 = lsztj1,则第一个Case和Otherwise中的 .Value 两边不能加定界符。当然,对于第二个Case中有 CTOD,这种情况下必须使用 loca for 字段=&lsztj1

泉城飞狐
2016-03-14 16:20
whinda
Rank: 6Rank: 6
等 级:贵宾
威 望:13
帖 子:253
专家分:418
注 册:2012-2-4
收藏
得分:4 
????thisform.
combo不是容器对象,....combo.1.value应是写错了,combo1.value
1.假设thisform.
那么lf="ABC"
则&lf展开后是表示变量ABC而不是thisform.,也不是字串"ABC",而是指一个叫ABC的变量。

第一个Case Vartype(&lf)=‘C’,展开后是: case vartype(ABC)="C",如果你没有定义一个叫ABC的可用变量,Vartype(ABC)="U"是成立的,Vartype(ABC)="C"会是.F.,它不同于Vartype(thisform.)="C"可能是成立的(如果combo的imputmask=!,或者初始化了combo.value=0之类的,会是"N")


程序书写中有很多错误哦。do case.....endcase也不配对呀。
2016-03-14 21:22
a519569003
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-3-14
收藏
得分:0 
回复 6楼 liuxingang28
谢谢大神,我还有个问题,就是定界符一般只看到过一对 这里“”''有两对了呀  而且+ +是什么意思呢
2016-03-15 11:25
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:4 
“”''有两对是指哪?
2016-03-15 12:36
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:4 
以下是引用a519569003在2016-3-15 11:25:32的发言:

谢谢大神,我还有个问题,就是定界符一般只看到过一对 这里“”''有两对了呀  而且+ +是什么意思呢

比如,
a1=10
a2="10"
a3=allt(str(a1))+"/"+a2
?a3  &&显示是 10/10
但如果你用宏
?&a3 &&此时,显示的结果是 1,因为 10/10是数值
但如果
a3="'"+allt(str(a1))+"/"+a2+"'" &&给这个字符前后加上单引号
?a3  &&显示是 10/10
?&a3 &&此时,显示的结果是 10/10,因为 10/10是字符
就说出现你说的,怎么是 "'"+......+"'"
2016-03-15 13:36
快速回复:请叫一个表单Value值属性的问题
数据加载中...
 
   



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

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