关于自动(自动编号)的问题(50分)

  • 主题发起人 主题发起人 LINZONGM
  • 开始时间 开始时间
L

LINZONGM

Unregistered / Unconfirmed
GUEST, unregistred user!
用PARADOX做数据表,怎么样让编号字段数值自动加上去?比如前一个字段是20000,那新的
字段要20001怎么办?教教我吧!各位大侠!
 
PARADOX有一个+型,不过我没用过,你用Database Desktop试试
我一般是建一个MAX表其中的项目各个表的最大,然后自己处理加1。
 
有一个 +(Autoincrement)类型可以完成你的功能
 
hnzgf 的方法可行
 
修改数据库的字段属性,改为自动
 
我的意思是不用+
 
那你是什么意思?
 
我的意思是不用DELPHI自带的+,自己编程实现。比如说从文件读取或是其他的
 
是的。我同意上面这位仁兄的观点。
delphi中自带的+(Autoincrement)类型有个缺点就是他记录这个表中所有出现过的记录数。
就是说,如果这条记录现在已经被删除了,但是还是把他记录上!
例如:
原来表中有100条记录,现在全部删掉,在添加100条。那么新添加的记录不是从“1”
开始记录而是从“101”开始记录!
 
在TABLE控件的ONINSERT事件中写:
FIELDBYNAME(‘INDEX’)。ASINTEGER:=MAXINDEX+1;
MAXINDEX中保存索引的最大植,可以写一个方法获得,注意调用的
时候数据库的状态
 
那你就在保存数据时先找出最大的值,然后加1就行了,如果是oracle的话可以做个
触发器
 
可以这样设置一个NewKey的库,里面保存编号记录。
例如:初值为1
当生成第一条记录时,先读取Newkey编号为1,保存后(after post)修改Newkey:=Newkey+1。
当生成第二条记录时,先读取Newkey编号为2,保存后(after post)修改Newkey:=Newkey+1。
如此类推。
 
lzliang:
照你那么说要再建一个库?那具体要怎么做才行呢?我是个初学者请说清楚一点或是给
写出源码,让我看看好吗,请大家多多指教!
 
以下是在SQLServer7中,PARADOX把(UPDLOCK) 去掉试试,用事务好像要设
Database.TransIsolation=tiDirtyRead;

function GetMaxXH(xhbs: String) :Integer;
var
XHQuery: TQuery;
Maxxh: Integer;
begin
try
DataModule2.Database1.StartTransaction;
try
XHQuery:=TQuery.Create(nil);
XHQuery.DatabaseName:=DataModule2.Database1.DatabaseName;
XHQuery.SQL.Clear;
XHQuery.SQL.Add('select xhmax from maxxh (UPDLOCK) where xhid='+
#39+xhbs+#39); // 取出Max序号并置更新锁
OpenQuery(XHQuery);
Maxxh:=XHQuery.FieldByName('xhmax').AsInteger;
if Maxxh>0 then begin // 序号从1开始
XHQuery.SQL.Clear;
XHQuery.SQL.Add('update maxxh set xhmax=xhmax+1 where xhid='+
#39+xhbs+#39); // 序号加1
RunQuery(XHQuery);
Result:=Maxxh;
end else
Result:=-1;
finally
XHQuery.Close;
XHQuery.Free;
end;
DataModule2.Database1.Commit;
except
DataModule2.Database1.Rollback;
Raise;
end;
end;
 
我现在可能没时间去试了,我晚上要出差了!要等一个半月后在说了!谢谢!等我消息吧
 
有趣!不知是你急还是我急?
 
在BEFOREPOST中写代码
 
当然是我急,那还用说吗?可是我真的是没时间了!不可能要我把电脑带在身边!
我那样写是为了斑竹不把我的问题给强制结束!请大家原谅!:)doud:这样解释应该合你的
意了吧!
yaya8163:你能把你的方法的源码写出来吗?谢谢了!
 

Similar threads

回复
0
查看
1K
不得闲
回复
0
查看
829
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部