初次用delphi+access,请教3个问题(自动编号/dbgrid求和/新建编辑)

anyyan 2003-10-20 06:33:27
主任下达的任务,没办法,装了在学校学的delphi5.0,连个access自己试着做。。

碰到几个问题,向大家请教:)

1、数据库中第一个“序号”字段设的自动编号,怎样实现删除某条记录(如#14),让其后面的自动往前移?(以便能从最后一条记录的序号直观的看出记录总数)

2、数据库中有一“面积”字段,通过一定条件查询,显示在DBGrid中,怎样求这些特定的记录的面积和?
numLabel.Caption:='共有'+inttostr(Query.recordcount)+'条记录';
这个是得到查到的记录数;
想类似的得到面积和,dbgrid或query有相应的属性/方法吗?

3、最后一个问题,当新建一条记录后,此记录显示在上面的dbgrid中,却不能对其进行修改/删除,提示“无法为更新行集定位,一些值可能已在最后读取后改变”,只有重新启动程序后才能对此记录操作。。。不知什么问题?

渴望帮助,谢谢大家!
...全文
211 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dh9450 2003-10-21
  • 打赏
  • 举报
回复
就是加一个临时的 总计字段嘛 每次打开数据集的时候自己计算 DBGRID加个固定列指向他 不过你要写SQL 也是不错的方法
xiaoyuer0851 2003-10-21
  • 打赏
  • 举报
回复
呵呵,第一个问题其实没有多大的实际意义;如果非要做的话呢 ?
建议你不要使用累计字段属性,而是 自己编程实现;
2.其实你可以参考计算字段,那样的话只需要写一 段代码就可以了
3.从安全性方面考虑,建议不要在dbgrid 中进行修改 、编辑
但是删除应该可以的哦,选中后点击删除就可以了哦
做一个actionlist 就可以了
tanqth 2003-10-21
  • 打赏
  • 举报
回复
up,早日成功
anyyan 2003-10-21
  • 打赏
  • 举报
回复
谢谢诸位的热心解答!调试ing……

打算这样来:
1、序号没什么用,去掉算了


2、
query.sql.clear;
query.sql.add('select sum(面积) as 面积和 from table where ...');
open;
query.fieldbyname('面积和').value

谢谢指点:)
但是我现有dbgrid的内容就是query查询来的,一clear原来内容就没有了。。。再用一个query1?

TO:dh9450(谁有我菜)
计算字段?
dbgrid中显示不显示无所谓,
总归最后要做到的是:根据一定条件将查询汇总到的数据显示在dbgrid中,打印出来,并在最后一行给个记录总数/面积和/等的统计数据


3、
TO:47522341(睡到8:30)
晕~~我一直post的,哈哈,谢谢,我再看看:)
pingo888 2003-10-21
  • 打赏
  • 举报
回复
1,自动累加的字段是不能修改的 无法实现,除非你不要设自动增,而是用一个整数字段,用程序控制来实现。

2。
with query do
begin
Close;
sql.text:='select sum(面积) as 面积和 from yourtable where 你的条件 ';
open;
end;
area:=query.fieldbyname('面积和').asfloat;area为面积变量就是你要得面积的和.

3.数据集刷新问题。
47522341 2003-10-20
  • 打赏
  • 举报
回复
1、直接改变自动累加字段的值是不行的;楼主不是想看出记录条数吗;
select count(*) from yourtable;就行了;没必要非改变自动累加字段的值;
2、select count(面积) from yourtable where ......
3、insert记录是不用post的;
lovefox_zoe 2003-10-20
  • 打赏
  • 举报
回复
这样做的虽然手工活多了一点,如果你非要这样实现,可以用SQL语句,对这些手工的活用SQL语句实现。
lovefox_zoe 2003-10-20
  • 打赏
  • 举报
回复
1、自动累加的字段是不可以改变的,但是也可以做,就是有点技巧

(1)删除记录后,把这个自动累加的字段的数据类型改为int,然后,再改回自动累加类型。这时,就会对所有的数据进行重新编号了。

缺点:改动后,如果和这个自动编号字段有关联的表数据,可能会出错。
dh9450 2003-10-20
  • 打赏
  • 举报
回复
第二个问题用计算字段更方便点 你要显示在DBGRID嘛
第三个 应该是数据集刷新的问题 不行试试赖招 关了再打开
access好象不支持触发器
angle097113 2003-10-20
  • 打赏
  • 举报
回复
1,自动累加的字段是不能修改的 改变不了

2,
query.Close;
query.sql.clear;
query.sql.add('select sum(面积) as 面积和 from table where ...');
open;
query.fieldbyname('面积和').value就是你要得面积的和
3,
老问题了 可能有默认值 也可能触发器的原因 又很多的这个帖子 所搜一下吧 就不写了

2,496

社区成员

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

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