关于编号的问题的问题,请高手们帮忙!(80分)

  • 主题发起人 delphiere
  • 开始时间
D

delphiere

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟在关于编号这里碰到了两个大问题!
第一,当我向表中添加一条新记录的时候,怎么判断次记录的编号是重复的呢?我这样写为什么不行?
对了,除了下面这样写,还有别的方法吗?
if table1.locate('name',dbedit1.text,[]) then
showmessage('编号重复')

第二,怎么自动生成JH20021013这样编号的问题。我想在添加记录的时候自动生成这样的编号,
编号规则是按JH+年+月+日来记的。这个该如何做呢?最好有代码。谢谢了各位大侠,小弟真的
是不大会呀~
 
首先解决了第二个问题,第一个问题就不存在了。

在你每添加一条新记录之前自动对新记录进行编号,这样就不会存在编号重复的问题。
你的第二个可以这样写
var
bh,s1,s2,s3:string;
begin
s1:=formatDate('yyyy',date);
s2:=formatDate('mm',date);
s3:=formatDate('dd',date);
bh:='JH'+s1+s2+s3;
end;
 
if table1.locate('name',dbedit1.text,[]) then
showmessage('编号重复')

you can not use locate here,because when you move cursor ,system will post your
record,so you must write another procedue to the check unique key ,Remember do not
use the table1.locate....
 
大侠,那么第一个问题怎么解决呢?不用locate那怎么办?
TO:del520。我的第一个问题是另外一个窗体的,那个窗体不需要那样的编号!
该怎么查找重复的记录呢?谢谢,既然不能用locate定位,那该如何办?
 
如果表建立了主索引,可以在添加时捕捉异常。

showmessage(formatdatetime('"JH"yyyynndd',now));
 
1、用另一个query,查找这个编号,如果query.isempty=true,则没有相同记录,否则有。
用E文的那位不是说不用locate,而说不要用Table1.loacte,你可以用table2.locate。
2、
var y,m,d:word

procedre .....
begin
DecodeDate(Date);
table1.fieldbyname('bh').AsString:='JH'+IntTostr(Y)+IntToStr(M)+IntToStr(D)+....;
......
end;

方法就是这样,怎么组合你看着办。
 
第二位说得也是正确的,在Append之前用table1.locate,就是把你那段代码放在Append之
前.
 
多人接受答案了。
 
顶部