怎样直接在DBGrid中改数据? (50分)

  • 主题发起人 主题发起人 wangtt
  • 开始时间 开始时间
W

wangtt

Unregistered / Unconfirmed
GUEST, unregistred user!
DBGrid1的DataSet是Query1,SQL语句如果是下面这种形式的,查询的结果将是只读的,没法直接在DBGrid1中修改库存数量。《速达进销存软件》的货品编辑画面中的方法挺方便的,但是不知它的这个功能是怎么实现的?从速达软件里拷贝了一个画面,怎么贴进来?还有没有更方便的方法呢?
[分仓库数据]表结构:仓库代号、货品代号、库存数量;
[货品管理]表结构:货品代号、货品名称;
[仓库]表结构:仓库代号、仓库名称;

SQLString:='select a.*,b.*,c.* from 分仓库数据 a,货品管理 b,仓库 c where a.货品代码=b.货品代码 and a.仓库代号=c.仓库代号';
Query1.SQL.Clear;
Query1.SQL.Add(SQLString);
Query1.Open;
 
不用DBGrid绑定,用StringGrid吧
取得数据后,手动添加到StringGrid里,
数据修改后再用 SQL 提交到数据库
 
在DBGRID控件中可以直接修数据
只是在关闭本界面时要执行一下:adoquery1.post;语句否则会出错的.
 
query的requeslive属性设置为真不可以吗?
 
将 'select a.*,b.*,c.* from 分仓库数据 a,货品管理 b,仓库 ' 放到视图里
再用query就可以修改了

或是使用关联字段也可以修改
 
用Ado是可以修改的,Bde好像不行耶
 
给它加个updatesql,然后再把queryupdateobject设为这个updatesql
然后双击updatesql,再点击Generate SQL,再OK!
不过,不过,多表更新还是用ADO好!
 
dbgrid中需要修改的话,需要将Option属性设置为包含可编辑的属性,然后再进行修改
对修改数据的更新,设置对应的Query的Cache Update属性为True,并增加对应的UpdateSQL
控件,在控件中对数据的更新编写对应的SQL语句(可自动,也可以手工修改),对于多表
更新数据,最好手工修改
更新后要调用数据集的ApplyUpdates将修改数据更新的数据库中
 
没有用过ado,看来得学学了。
谢谢!
 

Similar threads

D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
D
回复
0
查看
785
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部