给狐狸们出个小题:表记录及函数操作
给狐狸们出个小题:表记录及函数操作
怎样标记任意给定记录范围的字段和检查任意给定记录范围的缺号并给出缺号提示?
如上图设计一个表单。假设数据源表中有两个字段:序号(N),标记(C)。
1.怎样标记任意给定记录范围的字段?
(是指:给给定范围的记录的“标记”字段内容填上“是”或者“否”的内容)。
2.并检查任意记录范围是否缺号或者超出范围,并给出缺号提示?
3.再提高一点要求:就是标记后的“标记”字段内容要=原值+新值 ,新值要回车显示。
比如给定这样一个范围:1,5,10-100,500
请狐狸们动动脑,高手们不要见笑啊!!!!! 不连续记录的提取
[解决办法]
Set Talk Off
Set Safety Off
Set EngineBehavior 70
Close Databases All
*
[解决办法]
* 校验缺单,假设 1002/1005/1009 缺单
Create Table MyTable (序号 N(4,0), 标记 C(10))
Insert Into MyTable (序号, 标记) Values (1001, "")
Insert Into MyTable (序号, 标记) Values (1011, "")
Insert Into MyTable (序号, 标记) Values (1003, "")
Insert Into MyTable (序号, 标记) Values (1004, "")
Insert Into MyTable (序号, 标记) Values (1006, "")
Insert Into MyTable (序号, 标记) Values (1007, "")
Insert Into MyTable (序号, 标记) Values (1010, "")
Insert Into MyTable (序号, 标记) Values (1008, "")
Select 序号 + 1 From MyTable ;
Where ;
序号 < (Select Max(序号) From MyTable ) ;
And ;
序号 + 1 Not In (Select 序号 From MyTable )
Select Query
Go Top
*
[解决办法]
*
If Eof()
=Messagebox('无缺单!', "提示", 0 + 48)
Else
DupRec = Alltrim(Str(Reccount()))
TxtMsg = ''
Scan
TxtMsg = TxtMsg + Chr(13) + '序号 : ' + Alltrim(Str(Exp_1))
Endscan
=Messagebox('有: ' + DupRec + ' 条缺单!' + Chr(13) + TxtMsg, "提示", 0 + 48)
Go Top
Endif
[解决办法]
你需要的只是构造一个条件表达式
可以写作
s = '1,3,5,7-15'
s = strt(s, ',', CHR(13))
l = MEMLINES(s)
r = ''
FOR i=1 to l
r = r + IIF(LEN(r) = 0, '', ' or ')
t = MLINE(s, i)
IF '-' $ t then
r = r + '(序号>=' + strt(t, '-', ' and 序号<=') + ')'
ELSE
r = r + '序号=' + strt(t, ',', ' or 序号=')
ENDIF
NEXT
?r
输出
序号=1 or 序号=3 or 序号=5 or (序号>=7 and 序号<=15)
有了这个条件表达式,查询就没有问题了