寻求编号编制问题的解?(65分)

  • 主题发起人 主题发起人 ygq
  • 开始时间 开始时间
Y

ygq

Unregistered / Unconfirmed
GUEST, unregistred user!
表内一个“编号”字段,是字符型,
编号
01
011
012
02
021
0211
0212
假如我在对应01记录按了“增加”按钮后,我希望他自动将“编号”添加为03
在对应011记录按了“增加”按钮后,我希望他自动将“编号”添加为013
在对应0212记录按了“增加”按钮后,我希望他自动将“编号”添加为0213
就是自动找到最后一条相关记录,将 编号+1
怎么实现?
 
我不太懂 SQL 不过有个思路:
根据你的要求,假设对 ToAdd 记录按“增加”
则取出前两位,然后在后面加“*”:
s := copy(ToAdd, 1, 2) + '*';
然后用 like 模糊查询,对查询结果排序,
最后一条记录就是你要找的记录了
select * from youtable where '编号' like s order by '编号'
 
先把你要对应的记录的字段的最后一个字母提取出来,然后加一,然后在作为新增加的
记录的编号
 
select max(bh)
from table1
where table1.bh like substr(:parm,1,length(:parm)-1)

大致是种思路不知你打算如何实现?带参数SQL你可以先将LIKE后的内容写好。
 
你这个问题实际上平行编号的问题:
var iLength,iNum,i : Integer;
sTmp,sNo : String;
begin
sNo := FieldByName('sNo').AsString;//当前记录编号
iLength := Length(sNo);
iNum := Strtoint(sNo) + 1;
for i := 1 to Length(sNo)-Length(InttoStr(iNum)) do
sTmp := sTmp + '0'; //计算前缀0
sNo := sTmp + inttostr(iNum);//sNo就是你要的结果了

 
对sundart说:
你这个方法虽然可以实现加1的功能,但是它没有实现我提出的功能,就是在01,02,
03同时存在的情况下,我在01后面按了增加,它自动加成04,而不是02
 
还有更好的办法吗
 
建立主从表
Id1
id2 id1
id3 id2
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部