起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 383|回复: 10

【搞定】DataGrid如何刷新数据?**

[复制链接]
发表于 2007-5-31 11:59:08 | 显示全部楼层 |阅读模式
我早上做了一个商品信息,如下图,我通它调出来的窗体"新增商品"在数据表里增加了一条记录,反回时商品信息里的DataGrid里的数据没有变,而表里的数据变了,如何刷新DataGrid,使DataGrid显示的数据与数据库里的数据一样?

Cuo1.jpg

41.61 KB, 下载次数: 189

回复

使用道具 举报

 楼主| 发表于 2007-5-31 12:00:46 | 显示全部楼层
就是通过这个他调出来的这个窗体给给数据库里添加记录.

cuo2.jpg

45.57 KB, 下载次数: 188

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-31 12:02:13 | 显示全部楼层
上面窗体的确定按钮里的事件代码:
procedure TXZSP.Button1Click(Sender: TObject);
var
   lsqldataset:TSQLDataSet;
   str_SPQM,str_SPBH,str_JM,str_PYM,str_XH,str_GG,str_CD,str_DW,str_FZDW,str_DWGX,
   str_CBMS,str_TM,str_BZ,str_QJM:string;              //字符串
   int_YSSJ1,int_YSSJ2,int_YSSJ3,int_LSJ:string;      //整g型
//   Date_YXQ:TDateTime;                                 //日期字段
   SPXX_InsertSQL,KCXX_InsertSQL:string;
begin
     //字符串内型
     str_SPQM := Self.Edit_SPQM.Text.Trim();     //库存
     str_SPBH := Self.Edit_SPBH.Text.Trim();     //库存
     str_JM := Self.Edit_JM.Text.Trim();
     str_PYM := Self.Edit_PYM.Text.Trim();
     str_XH := Self.Edit_XH.Text.Trim();         //库存
     str_GG := Self.Edit_GG.Text.Trim();         //库存
     str_CD := Self.Edit_CD.Text.Trim();         //库存
     str_DW := Self.Edit_DW.Text.Trim();         //库存
     str_FZDW := Self.Edit_PZDW.Text.Trim();
     str_DWGX := Self.Edit_DWGX.Text.Trim();     //库存
     str_CBMS := Self.ComboBox1.Text.Trim();
     str_TM := Self.Edit_TM.Text.Trim();         //库存
     str_BZ := Self.Com1.Text.Trim();            //库存
     str_QJM := Self.Edit_QJM.Text.Trim();
     //数字类型
     int_YSSJ1 := self.Edit_YSSJ1.Text.Trim();
     int_YSSJ2 := self.Edit_YSSJ2.Text.Trim();
     int_YSSJ3 := self.Edit_YSSJ3.Text.Trim();
     int_LSJ := self.Edit_LSJ.Text.Trim();
     //日期
//     Date_YXQ := Self.DateTimePicker1.Date;


     SPXX_InsertSQL:='insert into SPXX(SPXX_SPQM,SPXX_SPBH,SPXX_JM,SPXX_PYM,SPXX_XH,SPXX_GG,SPXX_CD,'
     + 'SPXX_DW,SPXX_FZDW,SPXX_DWGX,SPXX_CBMS,SPXX_YSSJ1,SPXX_YSSJ2,SPXX_YSSJ3,SPXX_LSJ,SPXX_YXQ,'
     + 'SPXX_TM,SPXX_BZ,SPXX_QJM) values(''' + str_SPQM + ''',''' + str_SPBH + ''',''' +
     str_JM + ''',''' + str_PYM + ''',''' + str_XH + ''',''' + str_GG + ''',''' +
     str_CD + ''',''' + str_DW + ''',''' + str_FZDW + ''',''' + str_DWGX + ''',''' +
     str_CBMS + ''',' + int_YSSJ1 + ',' + int_YSSJ2 + ',' + int_YSSJ3 + ',' + int_LSJ
      + ',:YXQ,''' + str_TM + ''',''' + str_BZ + ''',''' + str_QJM + ''')';


     lsqldataset:=TSQLDataSet.Create(Self);
     lsqldataset.Database.URL:='Biz:\JXC_GJP_\SJK.Database';

     with lsqldataset do
     begin
          Close;
                sql.Text:=SPXX_InsertSQL;
                Params.ParamByName('YXQ').AsDate := Self.DateTimePicker1.Date;
          Execute;
     end;

     ModalResult :=Business.Forms.Controls.mrOK;
end;
回复 支持 反对

使用道具 举报

发表于 2007-5-31 14:11:14 | 显示全部楼层
你1、2楼对应的是同一个数据集吗?如果不是,那么是来自同一张表,

如果是一个数据集,那么那么应该是一起变化的,
如果是两个数据集来自同一张表,在执行Execute后,取刷1楼对应的数据集

对了,感觉怪怪的,2楼用是啥表现的,是用DataEdit和Datalabel,如果是,直接用执行.DataSet.ApplyUpdates 就可以了,为啥还要写insert语句呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-31 15:00:23 | 显示全部楼层
二楼是被调出来的窗体,新建一个数据集插入一张表一条内容,一楼是另一个集数据集防问的,而一楼的数据集是先防问后二楼再插入,所以插入后,二楼显示的内容还是一样.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-31 15:02:11 | 显示全部楼层
那我使用DataSet.ApplyUpdates 看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-31 15:06:59 | 显示全部楼层
一楼的数据集只取了表的一部分字段,而二楼插入数据是表的每个字段都能插入数据,能用DataSet.ApplyUpdates 吗,告诉我DataSet.ApplyUpdates 具体是怎么用的?如果不能用,告诉我刷里DataGrid显示的数据吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-31 15:15:51 | 显示全部楼层
如果是两个数据集来自同一张表,在执行Execute后,取刷1楼对应的数据集

如何取刷1楼对应的数据集
回复 支持 反对

使用道具 举报

发表于 2007-5-31 15:19:21 | 显示全部楼层
ApplyUpdates  这个动作等价于insert ... +Execute
就是向数据库提交数据,跟取多少个字段没有关系。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-31 15:21:10 | 显示全部楼层
如果是两个数据集来自同一张表,在执行Execute后,取刷1楼对应的数据集

如何取刷1楼对应的数据集
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-11 06:10 , Processed in 0.043817 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表