更新表后,dbgrid 中数据即时更新问题

windy454 2010-04-14 01:51:57
一个窗体,其中我建了 adoconnection adoquery adotable datasource dbgrid dbnavigator 还有一个button
access数据库表中有 单价 数量 金额 等字段
主要想实现当我向dbgrid 中加入新物品的单价 和数量后金额自动生成,保存进数据库 并且即时显示在dbgrid 中
button 的代码 adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('update fy set hjje=sl*dj,zfje=hjje*zfbl');
adoquery1.ExecSQL;
可是现在我的程序是 点我输入完新的单价和数量后,点一下button,金额不出现,当我把程序关闭一次重新打开后金额就有了。有谁知道是怎么回事吗?最好能告诉我怎么能实现我上面所提到 的功能。
俺是菜鸟 ,还请大家多多帮忙。
...全文
110 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gsli 2010-04-14
  • 打赏
  • 举报
回复
也有类似的疑问,帮顶,UP
niujinguang 2010-04-14
  • 打赏
  • 举报
回复
报adoquery1: cannot perform this opration on a closed dadaset.

看一下你的AdoConnection 打开了吗?或者adoquery1的connection属性是不是指到了AdoConnection 了。
windy454 2010-04-14
  • 打赏
  • 举报
回复
adoquery1: cannot perform this opration on a closed dadaset.
风之谷 2010-04-14
  • 打赏
  • 举报
回复


adoquery.filedbyname('hjje').ascurrency

人家只是打错字了,应该是FieldByName 你还真是新手
windy454 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bdmh 的回复:]
引用 4 楼 windy454 的回复:
引用 2 楼 bdmh 的回复:
如果你只是录入一条数据的话,没必要用update,直接用
adoquery.edit;
adoquery.filedbyname('hjje').ascurrency := adoquery.filedbyname('sl').ascurrency*adoquery.filedbyname('dj').ascurr……
[/Quote]
undeclared identifier filedbyname
missing opretion or semicolon
bdmh 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 windy454 的回复:]
引用 2 楼 bdmh 的回复:
如果你只是录入一条数据的话,没必要用update,直接用
adoquery.edit;
adoquery.filedbyname('hjje').ascurrency := adoquery.filedbyname('sl').ascurrency*adoquery.filedbyname('dj').ascurrency;
adoquery.Post;
……
[/Quote]
包什么错,自己仔细看看,放到你环境中好好调试调试
windy454 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
如果你只是录入一条数据的话,没必要用update,直接用
adoquery.edit;
adoquery.filedbyname('hjje').ascurrency := adoquery.filedbyname('sl').ascurrency*adoquery.filedbyname('dj').ascurrency;
adoquery.Post;
[/Quote]

一直报错 编译不过去
windy454 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 windy454 的回复:]
一个窗体,其中我建了 adoconnection adoquery adotable datasource dbgrid dbnavigator 还有一个button
access数据库表中有 单价 数量 金额 等字段
主要想实现当我向dbgrid 中加入新物品的单价 和数量后金额自动生成,保存进数据库 并且即时显示在dbgrid 中
button 的代码 adoquery1.Close……
[/Quote]
能说具体点吗?告诉我怎么能实现功能,最好把需要的代码或控件都告诉我。
bdmh 2010-04-14
  • 打赏
  • 举报
回复
如果你只是录入一条数据的话,没必要用update,直接用
adoquery.edit;
adoquery.filedbyname('hjje').ascurrency := adoquery.filedbyname('sl').ascurrency*adoquery.filedbyname('dj').ascurrency;
adoquery.Post;
风之谷 2010-04-14
  • 打赏
  • 举报
回复
用sql更新数据 并不能立刻反应到数据感知控件上,

你需要刷新数据集 或者重新打开数据集
数据数据关联输入拼音自动过滤控件,内含 Caption 属性编辑器。 只在 Delphi7 下测试通过,曾试图移植到 Delphi2009,但是 ChineseSpell.pas 单元出错,哪位高人修改后,请给我传一份,感激不尽。 (抱歉,关键部分没有源代码,但绝没有设置使用期限什么的) 本组件为方便最终用户输入数据而设计。在所有的数据库应用软件,都必然有输入数据库表关联字段数据的情况,而且是频繁的出现。比如:在企业ERP系统,录入入库单时需要选择或输入已录入系统的某种货物,这时就需要解决如何使用户方便的录入这种货物。一般这种情况有两种解决办法,一种是用下拉列表框提供输入的选择,这种方法有很大的缺点:需要用户点击鼠标,弹出下拉框选择输入,比较麻烦;另外如果数据较多,用户选择数据的时间要超过了输入的时间,反而降低了输入速度;用户也不能通过多列数据信息来参照选择。还有一个更大的缺点是程序员编程非常烦琐,需要代码将数据数据一一列入列表框,并且还需要附加关键字段数据,用代码处理选择的关键字段值。另一种是用一个按钮来调用另一个窗体,用另一个窗体来列出供选择输入的数据,用户选择了数据后返回。这种方法虽然可解决数据显示单一的问题,但是缺点也很明显,即程序员编程烦琐,用户输入也不方便,如果应用软件多次需要输入关联数据,那么这些显示关联数据的窗体也会很多,大大增加了软件的复杂度,不利于维护和升级。这两种常规的解决办法如果处理不好,还会使用户频繁的在键盘和鼠标之间切换操作,非常麻烦,根本没有人性化可言。 而这个DataHint组件有众多优点: 1)即时显示:在需要时自动显示,在不需要时自动关闭,完全不用人工干预。 2)多列数据显示:支持多列数据显示,程序员甚至可以设置每一列的颜色和字体,以及整个数据显示框的外观,从而美化组件的外观。 3)即时拼音过滤:组件内部可以根据程序员的设置自动生成字段的拼音计算字段。普通用户都熟悉拼音,只要输入数据的汉语简拼或全拼,即时自动过滤出符合的记录,避免了不相干数据的干扰。用户还可以在过滤数据的基础上进一步通过键盘或鼠标选择余下的数据。它还不仅仅支持拼音过滤,程序员可以设置所有的字段都支持过滤,那么如果有序号类的字段,用户只需输入数字序号就可以直接过滤出选择数据,过滤出数据后只要按会车键就可以确认输入,大大简化了用户的操作。 4)统一键盘操作:整个输入过程完全不需要鼠标的辅助,用键盘就可以快速方便的完成操作。焦点进入、离开编辑框组件自动显示和关闭,不需要用户操作,输入关键字符自动过滤数据,敲会车键确认输入,按上下箭头键,进一步选择数据,完全不需要鼠标的参与。如果数据不多,用户也完全可以只用鼠标完成操作。 5)编辑控件与本组件分离:编辑控件与本组件是合作关系,这种关系的优点是两个对象的生存期互不相干。因此可以使用一个本组件对象,完成多个编辑框的输入。 6)编程方便:本组件设计功能强大,几乎将所有的编写代码的工作都转移到了对象监视器的操作。程序员只要编辑SQL属性就可以自动将数据数据提取到本组件。组件提供了一个设计字段的组件编辑器,设计列的属性编辑器,这两个编辑器是程序员非常熟悉的字段编辑器和DBGrid列编辑器。其字段编辑器经过修改和加强,使得程序员可以设置过滤字段和拼音字段。程序员不需要写任何代码。

2,496

社区成员

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

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