数据库Identity字段数值取回的问题 (5分)

L

linx

Unregistered / Unconfirmed
GUEST, unregistred user!
其中一段
Query1.SQL.Add('Insert Into Table FieldList ValueList');
Query1.SQL.Add('Select @@Identity');
Query1.Open;
ID := Query1.Fields[0].AsInteger;
出现错误信息:列表索引越界
但是已经在数据库中插入数据。
应该是没有Query1.Fields[0]的缘故,但是我要取Identity字段数值,怎么办。
 
在线等候
 
一个Query的执行过程只能有一个SQL语句:
Query1.SQL.Clear;
Query1.SQL.Add('Insert Into Table FieldList ValueList');
Query1.ExecSQL;
Query1.SQL.Clear;
Query1.SQL.Add('Select @@Identity');
Query1.Open;
ID := Query1.Fields[0].AsInteger;
出现错误信息:列表索引越界
但是已经在数据库中插入数据。
应该是没有Query1.Fields[0]的缘故,但是我要取Identity字段数值,怎么办。

因为SQL语句中有了Insert语句, 又加了一个Select语句,执行完第一个语句(Insert语句就不会再执行第二个语句),而第一个语句是不会返回数据的,所以Fields中没有数据,当然Fields就会出错了!
 
我是搞错了,我原来是用
Query1.SQL.Add('Insert Into Table FieldList ValueList');
Query1.SQL.Add('Select @@Identity');
Query1.ExecSQL;
ID := Query1.Fields[0].AsInteger;的出错
Query1.SQL.Add('Insert Into Table FieldList ValueList');
Query1.SQL.Add('Select @@Identity');
Query1.Open;
ID := Query1.Fields[0].AsInteger;
可以插入数据,也能返回id,我也觉得挺奇怪的,insert用open也行?!

 
顶部