| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1360 人关注过本帖
标题:一个很怪的VFP小程序
只看楼主 加入收藏
wsjzabc
Rank: 1
等 级:新手上路
帖 子:151
专家分:0
注 册:2005-8-6
收藏
 问题点数:0 回复次数:5 
一个很怪的VFP小程序
各位仁兄:
我在编写一个"增加"控件的小程序时,发现如下一个怪怪的小问题:由于数据表mckb以前输入的编号是1,2,3...我仍旧想沿用这种编号顺序,于是编了程序:
SELECT mckb &&选择工作区
OldRecord=RECNO()
GO BOTTOM &&到末记录
LOCAL BH &&声明本地变量来保存编号
BH=alltrim(mckb.number)
APPEND BLANK &&添加新的记录
BH=VAL(BH)+1 &&连结新的字符串,记录编号自动加1

THISFORM.txtnumber.value=BH
thisform.formmode="cadd"
thisform.modemody()
THISFORM.REFRESH()
但是,运行时总是出错.而如果采用前面加上"BH00.."的形式的程序的话,就没有什么错误了:
SELECT mckb &&选择工作区
OldRecord=RECNO()
GO BOTTOM &&到末记录
LOCAL BH &&声明本地变量来保存编号
BH=alltrim(mckb.number)
APPEND BLANK &&添加新的记录
BH=VAL(BH)+1 &&连结新的字符串,记录编号自动加1
IF BH>999
BH=STR(BH,4)
BH="BH"+BH
ELSE
IF BH>99
BH=STR(BH,3)
BH="BH0"+BH
ELSE
IF BH>9
BH=STR(BH,2)
BH="BH00"+BH
ELSE
BH=STR(BH,1)
BH="BH000"+BH
ENDIF
ENDIF
ENDIF
THISFORM.txtnumber.value=BH
thisform.formmode="cadd"
thisform.modemody()
THISFORM.REFRESH()

各位仁兄,若感兴趣的话,可以考虑考虑啊!

搜索更多相关主题的帖子: VFP mckb 变量 
2006-02-27 10:48
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
收藏
得分:0 

很怪吗?一点不怪!问题出在BH=VAL(BH)+1上。
从BH=alltrim(mckb.number)来看,BH是字符型变量,而VAL(BH)则是数值型,明白了吧。
另建议:设定好编号字段长度后,所有编号都应该采取相同长度,长度不足的应加前导零,如“00001、00002、00234”等


两人行已有我师……
2006-02-27 12:21
wsjzabc
Rank: 1
等 级:新手上路
帖 子:151
专家分:0
注 册:2005-8-6
收藏
得分:0 

首先表示感谢啊.

(1)对你的说明我是这样理解的:把 BH 转换成字符串型后再赋给 TEXT 的 VALUE 值,如下:
SELECT mckb &&选择工作区
OldRecord=RECNO()
GO BOTTOM &&到末记录
LOCAL BH &&声明本地变量来保存编号
BH=alltrim(mckb.number)
APPEND BLANK &&添加新的记录
BH=VAL(BH)+1 &&连结新的字符串,记录编号自动加1
BH=STR(BH)
THISFORM.txtnumber.value=BH
thisform.formmode="cadd"
thisform.modemody()
THISFORM.REFRESH()
但是运行后,THISFORM.txtnumber.value的值仍然不会自动加一.可能是我理解有误吧.
(2)由于我以前录入数据时是按1,2,3...录入的,而且数据很多且分散(不易修改).没有在编号前加000....我只是想让编号自动加一,然后显示在 THISFORM 表单中的 txtnumber 里.
你看怎么办呢? 谢谢!


2006-02-27 16:07
wsjzabc
Rank: 1
等 级:新手上路
帖 子:151
专家分:0
注 册:2005-8-6
收藏
得分:0 
大家有时间过来考虑考虑

2006-03-01 11:58
rices
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-2-28
收藏
得分:0 
你的编号是几位?
STR(BH)是10位,如BH=1,前有9个空格
如只有5位,用STR(BH,5)试试
2006-03-02 12:51
wsjzabc
Rank: 1
等 级:新手上路
帖 子:151
专家分:0
注 册:2005-8-6
收藏
得分:0 
str()的功能还真没有注意呢.RICES说的起了大作用了,特别感谢啊

2006-03-02 16:04
快速回复:一个很怪的VFP小程序
数据加载中...
 
   



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

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