我用query将数据得出在dbgrid中显示出来,我想在直接在dbgrid中修改数据值,该如何将修改后的值传回给数据库?
解决方案 »
- 扔了一批Delphi书籍,上来散分纪念
- Tadodataset控件可以用来给表里insert一条记录吗???在线急等,高手进...
- 在Delphi7.0裡#10,#9等等都分別表示什麼意思?誰能幫我整理一下給我,謝謝!
- 不改变排版的情况下如何word替换文字?(不是简单的替换功能)
- 哪位大虾,作过类似股票软件上面的趋势(回归)线????高分悬赏!!!!!
- 如何用语句禁止使用word软件?
- 这句SQL有错误吗?
- 我想在ie的右键菜单中增加一项,执行一个脚本对ie中选择的文本进行处理,如flashget目录中的jc_link.htm,该怎么取得文本,好像不能直接
- 一个小问题:数据库表的字段是英文的,怎样在Grid里显示中文字段名?
- SetWindowPos函数使用后,窗体上的按钮不能用
- 请问如何视窗体加入背景图像
- 在美国,在5分钟内能回答出这道题的人,平均年薪在20万美金
query.edit;
````````
```
`````
query.post;
第一种是修改完毕以后立即传送到数据路当中
采用"天煞孤星"的方法。但是这种方法只是适用于select 语句对一个表查询的情况。如果select语句从多个表格中选取了数据。你还要使用updatequery控件生成对相应表格进行修改的语句。以便在
post以后执行相应的语句。updatequery只能对query查询中的一个数据表格进行更改。如果要对所有的数据表格进行更改。你就要求使用其它的技术。当然也可以用下面的第二种方式。
第二种采用缓存的方式修改
你把query的cachedupdate属性置为true那么,你修改的内容在post以后还没有进入数据库,只是在本地内存里面暂存。如果你的query只是针对一个表格进行查询,那么修改完所有的记录之后,你就可以用query.applyupdate将数据写入数据库了。如果你的查询是从多个表格中选出的。你就需要
在修改完所有的记录之后使用Query.UpdateStatus检查你哪一条纪录修改了,然后,动态生成语句
修改数据库中的数据表。由于不同的列是从不同的数据表格中选出的,你在这里可以生成多条语句对多个表格进行修改了。但是在关系数据库中不建议进行关联修改,这样做很危险,尤其数据库中采用了强制主外键连接的时候,建议不要多报同时修改。