起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: trickle

请问这个控制语句哪里有问题了**

[复制链接]
发表于 2008-6-19 11:08:24 | 显示全部楼层
choice在信息中是如何定义的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-19 11:09:11 | 显示全部楼层
type
  TXLXX = class(TInfo)
    DataSetXLXXSJJ: TSQLDataSet;
    DataSetQYLJSJJ: TSQLDataSet;
    DataSetQYLJSJJ2: TSQLDataSet;
    DataSetXLXXSJJ2: TSQLDataSet;
    FIELD_XLXXSJJ_XLZD: TInternalDataField;
    DataSetXZXLSJJ: TSQLDataSet;
    FIELD_XZXLSJJ_XLZ: TCalcField;
    procedure DataSetXLXXSJJCalcFields(DataSet: TDataSet);
    procedure FIELD_XZXLSJJ_XLZCalcField(Field: TBizField; var Value: Variant);
    procedure DataSetQYLJSJJ2BeforePost(DataSet: TDataSet);
    procedure DataSetQYLJSJJ2AfterPost(DataSet: TDataSet);
  private
    {private declarations}
  public
    {public declarations}
    choice: Integer;//--------------------------------------------定义
  end;

implementation
。。。。。
回复 支持 反对

使用道具 举报

发表于 2008-6-19 11:13:21 | 显示全部楼层
定义没有问题,引用也没有问题。
1.检查一下InfoBroker1.Info引用信息是否正确
2. 重新保存,编译
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-19 11:20:41 | 显示全部楼层
检查了一遍,没有问题
运行结果还是不对

3.jpg

9.09 KB, 下载次数: 168

回复 支持 反对

使用道具 举报

发表于 2008-6-19 11:21:56 | 显示全部楼层
你要看整句才行,如:XLXX.TXLXX(InfoBroker1.Info).choice
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-19 11:25:19 | 显示全部楼层
看整句的话,结果是0,如图
是不是被赋了值这里看不到阿,还是怎么的?我觉得应该没有问题啊

4.jpg

9.33 KB, 下载次数: 160

回复 支持 反对

使用道具 举报

发表于 2008-6-19 11:26:29 | 显示全部楼层
你执行到end 再看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-19 14:35:33 | 显示全部楼层
嗯,刚才测了,执行到end就是应该的choice=1或者choice=2了
但是还是没能解决问题,我在信息层的代码,只有当choice=1的时候才运行sql的update操作。
procedure TXLXX.DataSetQYLJSJJ2BeforePost(DataSet: TDataSet);
begin
  if(choice=1)
  then
  begin
  choice:= 0;
  DataSetQYLJSJJ2.Connection.ExecuteSQL('update QYLJB set XH=XH + 1 where QYLJB.XLID='''+DataSetXZXLSJJ.FieldByName('XLID').AsString+''' AND XH >= ' + DataSetQYLJSJJ2.FieldByName('XH').AsString);
  end
end;

procedure TXLXX.DataSetQYLJSJJ2AfterPost(DataSet: TDataSet);
begin
//保存记录后,刷新
  DataSetQYLJSJJ2.ApplyUpdates;
  DataSetQYLJSJJ2.Refresh;
end;
运行的时候,如果只按照代码所写,在新增节点后保存,功能非常正常。
但是如果做了其他操作,例如删除等,就报错。
但是按照我写的控制,做其他操作以后,choice根本就不是1,所以beforePost里面的代码不会运行阿,请问这是为什么阿
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-19 14:44:29 | 显示全部楼层
DataSetQYLJSJJ2.ApplyUpdates;
还有,这句具体是做什么的,运行的时候总是在这句上出问题
删除后点保存时弹出的对话框显示如图

5.jpg

16.53 KB, 下载次数: 161

回复 支持 反对

使用道具 举报

发表于 2008-6-19 15:19:53 | 显示全部楼层
DataSetQYLJSJJ2.ApplyUpdates;  
提交当前数据到数据库。 本意是配合ExecuteSQL来使用的,使前台和后台的序号保持一致。
如果这样有问题的话,楼主可想其它方法来做控制,
现在有更新序号的Sql,也可以得到控制Add,就看你怎么用了。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-20 21:02 , Processed in 0.038365 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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