当前位置: 首页 > news >正文

ClientDateSet:Cannot perform this operation on a closed dataset

     一、问题表现

    Delphi 三层DataSnap,使用AlphaControls控件优化界面,一窗口编辑时,出现下列错误提示:       

     编译通过,该窗口中,重新显示数据,下图:

    

    相关代码:

    

procedure TShowOld_1_Frm.Button7Click(Sender: TObject);
var SQL,ID:string;k,L:integer;
beginGroupBox4.Caption:=Button7.Caption;DateTimetoString(ID,'yyyy-MM-dd',now-100);SQL:='select * from 老人基本信息 where (分支='+#39+sFCID+#39+') ';SQL:=SQL+'and (入院日期>='+#39+ID+#39+') order by 入院日期';DataModule1.ClientDataSet1.Active:=False;DataModule1.ClientDataSet1.DataRequest(SQL);DataModule1.ClientDataSet1.Active:=True;ClientDataSet1.Data:=DataModule1.ClientDataSet1.Data;DataModule1.ClientDataSet1.Active:=False;L:=ClientDataSet1.RecordCount;SetSource(DataSource1);DBGridEh1.Columns[0].Title.Alignment := taCenter;DBGridEh1.Columns[0].Alignment:=taCenter;DBGridEh1.Columns[1].Title.Alignment := taCenter;DBGridEh1.Columns[1].Alignment:=taCenter;DBGridEh1.Columns[0].Width:=36;DBGridEh1.Columns[1].Width:=80;
//  sStatusbar1.Panels.Items[0].text:='    数据库:  '+IntToStr(L)+' 人信息';
end;

     问题是,首次都能正常显示(OnShow中执行代码),再次执行代码时,出现下列提示:

    二、搜索思路

    1、由提示“ ClientDataSet无法在关闭的数据集上执行此操作”,ClientDataSet上作文章。打开数据集时,每次打开换个ClientDataSet,是可以解决问题,但是,这太复杂了,也违背编程的原则。放弃此办法。

     2、在引起DBCombobox,有OnChange的控件,找原因。方法见我的别一文章:《AlphaControls控件TsDBCombobox出错:访问违规》。

     3、逐个控件,进行查找,方法是屏蔽全部控件,逐个开放,检查是否出现错误。找到在 TsDBEdit控件时,使用OnChange,生成其它字段的数据,引起ClientDataSet不能进入Open状态。

      三、解决问题

      只能放弃使用OnChange事件。

      原因中使用控件AlphaControls,界面很好,但是重画窗口界面,比较复杂,要求不使用或少使用OnChange事件,引起不必要的麻烦。

      只能改变思路,加一按键实现“OnChange,生成其它字段的数据”。

  

http://www.lryc.cn/news/235381.html

相关文章:

  • python中列表的基础解释
  • 『力扣刷题本』:链表分割
  • FISCOBCOS入门(十)Truffle测试helloworld智能合约
  • Unity Text文本首行缩进两个字符的方法
  • TS的函数重载、类型合并、类型断言
  • JVM:字节码文件,类的生命周期,类加载器
  • 【IPC】消息队列
  • 内网穿透工具NPS(保姆级教程)
  • 最长公共子序列问题
  • 服务器数据恢复—热备盘同步中断导致Raid5数据丢失的数据恢复案例
  • 桥接模式-C++实现
  • PHP字符串函数的解析
  • 科研学习|研究方法——使用python强大的Statsmodel 执行假设检验和线性回归
  • 设计模式——责任链模式
  • nginx得if语句内proxy_pass不允许携带url部分,如何处理
  • CentOS7设置 redis 开机自启动
  • C++虚函数(定义,作用,原理,案例)
  • C#中.NET 6.0 控制台应用通过EF访问新建数据库
  • conda创建pytorch环境报错
  • 数据结构-插入排序实现
  • CGlib动态代理和JDK动态代理
  • 分类预测 | Matlab实现PSO-GRU-Attention粒子群算法优化门控循环单元融合注意力机制多特征分类预测
  • Python OpenCV 视频抽帧处理并保存
  • 英伟达AI布局的新动向:H200 GPU开启生成式AI的新纪元
  • Windows11 python3.12 安装pyqt6 pyqt6-tools
  • 反弹Shell
  • Guava RateLimiter的限流机制详解
  • 详解nginx的root与alias
  • 在HBuilderX中配置Vue Router的步骤
  • 通过接口抓取公众号信息并群发