| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 636 人关注过本帖
标题:有一事不明请教各位高手?
只看楼主 加入收藏
smart921
Rank: 1
等 级:新手上路
帖 子:107
专家分:9
注 册:2010-8-8
结帖率:86.96%
收藏
已结贴  问题点数:10 回复次数:14 
有一事不明请教各位高手?
我作了个表单,其中有条命令是:
repl all ydsj with ctod(substr(alltrim(thisform.Text5.value),6,2)+"/"+right(alltrim(thisform.Text5.value),2)+"/"+left(alltrim(thisform.Text5.value),4))
表单单独运行时是正确的。但编译后在程序中运行,结果ydsj值是空的,不知何故?请高手不吝赐教。
搜索更多相关主题的帖子: 表单 
2012-03-13 22:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以后凡是遇到这种问题,在这行前面加一句MESSAGEBOX(ThisForm.Text5.Value),运行看看那是什么。

授人以渔,不授人以鱼。
2012-03-13 22:59
smart921
Rank: 1
等 级:新手上路
帖 子:107
专家分:9
注 册:2010-8-8
收藏
得分:0 
回复 楼主 smart921
显示没有错,比如2012.03.13。单独运行ydsj为03/13/12,程序运行后为  /  /   .
2012-03-13 23:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
并且我建议你不要把后面那串东西写在replace all的后面,拖慢速度不说,还不好调试,先把它赋值给一个变量,再replace就好了,这样要检查那个东西是否正确都好做。为什么会拖慢速度呢?这样的语句每次循环迭代都要到ThisForm.Text5控件中求取.Value三次,三次事小,但这样到控件中取值是远程地址运算,但如果事先赋值给一个内存变量,这个变量就等于常数,replace all时就不需要再动态求值,数据库越大,效果差异越显著。因此你不要以为这样一行写完就显得很高明。

授人以渔,不授人以鱼。
2012-03-13 23:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
回复 3楼 smart921
后者不是错了么?你看看代码中取的年份位数是几位?实际是几位?那是字符串呀,两次显示的字符串都不一样,不错才怪。

授人以渔,不授人以鱼。
2012-03-13 23:07
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:4 
也许跟日期显示格式设置有关。

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2012-03-13 23:14
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9819
专家分:27071
注 册:2012-2-5
收藏
得分:4 
set century 命令
SET DATE 命令
请楼主看下这两个命令的使用方法
或者在“工具”标题“选项”中的“区域”页框中,设置日期格式。

[ 本帖最后由 sdta 于 2012-3-13 23:21 编辑 ]

坚守VFP最后的阵地
2012-03-13 23:18
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
建议表单设置Text5文本框的时候,赋予初值Date(),后面的事情就好办了:repl all ydsj with thisform.Text5.value

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2012-03-13 23:19
smart921
Rank: 1
等 级:新手上路
帖 子:107
专家分:9
注 册:2010-8-8
收藏
得分:0 
回复 5楼 TonyDeng
首先十分感谢你的帮助。恕我愚钝,我代码中年份取4位,单独运行得出的结果是日期型的,显示为03/13/12,没有错啊!但在程序中运行后,ydsj这个日期型字段的值是空的显示为  /  /   .
2012-03-13 23:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
现在只看实际显示的结果,你的代码从Text5.Value的第6位开始取2位、最右边取2位、再取最左边的4位,你根据显示的Text5.Value字符串自己取一取看那是什么?

[ 本帖最后由 TonyDeng 于 2012-3-13 23:25 编辑 ]

授人以渔,不授人以鱼。
2012-03-13 23:24
快速回复:有一事不明请教各位高手?
数据加载中...
 
   



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

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