急救!!!!!!!!!!!11

dmyang 2003-08-23 11:17:12
我想在一张表中读取一个字段的最后一项的值,用下面的代码为什么不行啊?
Table_power.Open;
Table_power.Last;
powerno:=Table_power.fieldbyname('Id').asinteger;
Table_power.Close;

给出的错误信息是access violatioan
...全文
15 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Spqk005 2003-08-23
  • 打赏
  • 举报
回复
对啊
取最大值如楼上所说就很方便了
dickeybird888 2003-08-23
  • 打赏
  • 举报
回复
Select Max(ID) from table
不就可以了吗,
thp 2003-08-23
  • 打赏
  • 举报
回复
Select ID from table Where ID=(Select MAX(ID) from table)
xiaoyuer0851 2003-08-23
  • 打赏
  • 举报
回复
楼主,你能够说清楚点吗?
可能是这几天不舒服,怎么都没有看懂你说的意思……

是不是取一条记录最后一列的值呢 ?
如果是的话呢 ?
有俩个方法:
1。如果知道那一列的 字段号,那么可以通过fieldname 来取;
2。或者可以通过 fields[i]来取,
i 是通过计算fieldcount来计算出的
dmyang 2003-08-23
  • 打赏
  • 举报
回复
也不行,表里有'id’并且是主码,表原来是空的,在这段代码前面有一段代码向表里插入了记录。id是按顺序生成,用的值是powerno:=powerno+1; 所以想读出最后一个id的值,但是用如下代码给出的错误信息是access violation, 提示说错误出在table_power.open一行;
我改为
try
begin
Table_power.Open;
Table_power.Last;

powerno:=Table_power.fieldbyname('Id').asinteger;
Table_power.Close;
end;
except
powerno:=15;// 表里最后一个是15,所以这里用人为设定一下,仅用来试一试//

结果还是不行,同样是access violation
z_hongbao 2003-08-23
  • 打赏
  • 举报
回复
是否没有'ID'?
jxc163 2003-08-23
  • 打赏
  • 举报
回复
Table_power.Last;
Table_Power.prior;
Powerno:=Table_power.FieldbyName('Id').asinteger;

这样可以吗?
nhdj 2003-08-23
  • 打赏
  • 举报
回复
同意:gardenyang(太阳雨) ,如果用table确实有错,就用他的方法吧
gardenyang 2003-08-23
  • 打赏
  • 举报
回复
powerno忘记定义了?也有可能,要么没有id这个字段,要不就是前面这种情况。
还有一种情况就是你这个table_power中的字段已经写成静态的了,而里面没有id,所以表的数据库定义中有id,而访问回来之后没了这个字段
gardenyang 2003-08-23
  • 打赏
  • 举报
回复
错了,上面的execsql应该是open;
后面最好在end;前面加上free;
close;
free;
end;
gardenyang 2003-08-23
  • 打赏
  • 举报
回复
with TQuery.create do
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还是上面这样比较好

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧