起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 151|回复: 9

[搞定]数据回滚是出错,但是功能达到了**

[复制链接]
发表于 2007-11-8 10:54:17 | 显示全部楼层 |阅读模式
如图:

c.jpg

10.9 KB, 下载次数: 97

回复

使用道具 举报

发表于 2007-11-8 13:22:47 | 显示全部楼层
设置断点,看看错误代码停到哪里了
回复 支持 反对

使用道具 举报

发表于 2007-11-13 09:06:27 | 显示全部楼层
??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-13 09:40:09 | 显示全部楼层
我加了这短代码就没有问题了
DataSource_xbdm.DataSet.Append;
回复 支持 反对

使用道具 举报

发表于 2007-11-13 10:11:38 | 显示全部楼层
加了4楼就没有问题了?你是怎么回滚数据的,是代码吗?都帖出来看看,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-13 10:15:05 | 显示全部楼层
是写代码啊.代码如下
DataSource_xbdm.DataSet.Cancel;
               DataSource_xbdm.DataSet.Append;
               datasetbzsjj1.Active:=false;
               datasetbzsjj1.Database.URL:='Biz:\RLZYGLXT\RLZYGLXTSJK.Database';
               DataSetBZSJJ1.SQL.Text := 'select Top '+SysUtils.IntToStr(PageCount)+' * From xbdm where ID not in (select Top '+PageBegin+' ID From xbdm order by zdxdm) order by zdxdm ';
               datasetbzsjj1.Active:=true;
回复 支持 反对

使用道具 举报

发表于 2007-11-13 13:58:52 | 显示全部楼层
好像是DataGrid一个缺陷,目前可以先用append 一下数据集来解决

另外,我看了一下你的代码,如果在数据量比较大的情况下,性能肯定会有影响的,像这样的代码
Query2.CommandText := 'select * From xbdm where jbdm='''+id+'''';
Query2.Open;
c:= Query2.RecordCount;
修改为
Query2.CommandText := 'select count(jbdm) From xbdm where jbdm='''+id+'''';
Query2.Open;
c:= Query2.RecordCount;


还有
zdxdm:=datasetbzsjj1.FieldByName['xz'].DataSet.FieldByName['ZDXDM'].AsString;
jbdm:=datasetbzsjj1.FieldByName['xz'].DataSet.FieldByName['JBDM'].AsString;
zdxjb:=datasetbzsjj1.FieldByName['xz'].DataSet.FieldByName['zdxjb'].AsString;
修改为
zdxdm:=datasetbzsjj1.FieldByName['ZDXDM'].AsString;
jbdm:=datasetbzsjj1.FieldByName['JBDM'].AsString;
zdxjb:=datasetbzsjj1.FieldByName['zdxjb'].AsString;
其他也有类似这样的代码,你修改一下吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-13 14:42:10 | 显示全部楼层
好的
结帐
回复 支持 反对

使用道具 举报

发表于 2007-11-13 15:58:15 | 显示全部楼层
ok
回复 支持 反对

使用道具 举报

发表于 2007-11-20 10:37:03 | 显示全部楼层
楼主,该问题不是缺陷,如果在对DataGrid的数据进行修改数据源的时候,建议先断开,然后再设置上,参考代码如下
begin
    DataGrid1.DataSource := nil;
    try
       page:=page+1;
       PageCount:=SysUtils.StrToInt(Edit_PageCount.Text);
       PageBegin:=SysUtils.IntToStr((page-1)*PageCount);
       //填充datagrid
        DataSource_xbdm.DataSet.Cancel;
        // DataSource_xbdm.DataSet.Append;
         datasetbzsjj1.Active:=false;                 datasetbzsjj1.Database.URL:='Biz:\RLZYGLXT\RLZYGLXTSJK.Database';
         DataSetBZSJJ1.SQL.Text := 'select Top '+SysUtils.IntToStr(PageCount)+' * From xbdm where ID not in (select Top '+PageBegin+' ID From xbdm order by zdxdm) order by zdxdm ';
          datasetbzsjj1.Active:=true;
          hqzx(SysUtils.IntToStr(page));
       finally
         DataGrid1.DataSource := DataSource_xbdm;
       end;
end;
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-30 16:58 , Processed in 0.044101 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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