我想在一张表中读取一个字段的最后一项的值,用下面的代码为什么不行啊?
Table_power.Open;
Table_power.Last;
powerno:=Table_power.fieldbyname('Id').asinteger;
Table_power.Close;给出的错误信息是access violatioan
Table_power.Open;
Table_power.Last;
powerno:=Table_power.fieldbyname('Id').asinteger;
Table_power.Close;给出的错误信息是access violatioan
Table_Power.prior;
Powerno:=Table_power.FieldbyName('Id').asinteger;这样可以吗?
我改为
try
begin
Table_power.Open;
Table_power.Last; powerno:=Table_power.fieldbyname('Id').asinteger;
Table_power.Close;
end;
except
powerno:=15;// 表里最后一个是15,所以这里用人为设定一下,仅用来试一试//结果还是不行,同样是access violation
可能是这几天不舒服,怎么都没有看懂你说的意思……是不是取一条记录最后一列的值呢 ?
如果是的话呢 ?
有俩个方法:
1。如果知道那一列的 字段号,那么可以通过fieldname 来取;
2。或者可以通过 fields[i]来取,
i 是通过计算fieldcount来计算出的
不就可以了吗,
begin
databasename:=Table_power.databasename;
sql.clear;
sql.add('select max(id) from '+table_power.tablename');
execsql;
Powerno:=fields[0].asinteger;
close;
end;
感觉你这个程序最大的可能还是id这个字段不存在,不过如果你想获取最大的id还是上面这样比较好
后面最好在end;前面加上free;
close;
free;
end;
还有一种情况就是你这个table_power中的字段已经写成静态的了,而里面没有id,所以表的数据库定义中有id,而访问回来之后没了这个字段