起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 298|回复: 22

【搞定】一个信息代码使用另一个信息中的代码?**

[复制链接]
发表于 2007-8-9 11:37:21 | 显示全部楼层 |阅读模式
我在一个信息中编写了一个过程,在另一个信息中,通过‘引入’该信息后,我如何使用这个过程  :信息 TmyInfo 过程:myPro
回复

使用道具 举报

发表于 2007-8-9 14:27:54 | 显示全部楼层
信息里引用信息,好奇怪的需求。应该是楼主没构思好结构。

如果那个过程是static的,可以直接用TmyInfo .过程用
如果不是的话,没有信息的实例(比如信息代理控件)就不能访问那个过程。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-9 14:44:10 | 显示全部楼层
我就是在信息的某个数据集的AfterApplyUpdate里,写对另一个信息中的一个过程的调用
  (信息)GZLBPXX.Create(nil);
         GZLBPXX.InitFFAddNewWorkTypeLBP(LaobaoGUID,WorkType);
   现在它告诉我:没有声明标识符InitFFAddNewWorkTypeLBP
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-9 14:49:10 | 显示全部楼层
新增工种劳保品对劳保品发放进行初始化}
     procedure TLBPFFXX.InitFFAddNewWorkTypeLBP(LaoBaoPinGUID,WorkType:string);
       var    ZhigongDataSet:TSQLDataSet;

    begin
          {1:根据WorkType 在职工数据集中查询工种=WorkType的职工GUID
           2:循环上一步的数据集每一行
             2.1:对每个职工都在发放表中插入一条"计划"记录  顺便将 LaoBaoPinGUID
                 作为字段插入
           3:end
          }
          ZhigongDataSet:=TSQLDataSet.Create(nil);
          ZhigongDataSet.Database.URL:='Biz:\LBPFF\AQSJK.Database';
          with ZhigongDataSet do
          begin
            SQL.Text:='SELECT * FROM YGXXB where GZ='+WorkType;
            Open;
           try
            while not Eof do
            begin
              DataSetLBPFFSJJ.Append;
              DataSetLBPFFSJJ.FieldByName('ZG').AsString:=FieldByName('GUID').AsString;
              DataSetLBPFFSJJ.FieldByName('LBP').AsString:=LaoBaoPinGUID;
              DataSetLBPFFSJJ.FieldByName('SCQFSL').AsInteger:= 0 ;
              DataSetLBPFFSJJ.FieldByName('JHSL').AsInteger:= 0;
              DataSetLBPFFSJJ.FieldByName('SFSL').AsInteger:=0 ;
              DataSetLBPFFSJJ.FieldByName('BCQFSL').AsInteger:= 0 ;
              DataSetLBPFFSJJ.FieldByName('ZDJHRQ').AsString:= SysUtils.FormatDateTime('YYYY-MM-DD',SysUtils.Now);
              DataSetLBPFFSJJ.FieldByName('FFBJ').AsInteger:=1 ;
              DataSetLBPFFSJJ.FieldByName('JHBJ').AsInteger:=0 ;
              DataSetLBPFFSJJ.FieldByName('CSHBJ').AsInteger:=1  ;
              DataSetLBPFFSJJ.FieldByName('SCFFRQ').AsString:=  SysUtils.FormatDateTime('YYYY-MM-DD',SysUtils.Now);//GetLastFFData()计算上次发放日期
              DataSetLBPFFSJJ.FieldByName('BCSJFFRQ').AsString:= SysUtils.FormatDateTime('YYYY-MM-DD',SysUtils.Now);  //GetLastFFData()计算上次发放日期
              DataSetLBPFFSJJ.FieldByName('EWFFBZ').AsInteger:= 0 ;
              DataSetLBPFFSJJ.FieldByName('ZTBZ').AsInteger:=   0  ;

              Next;
            end;//while
             DataSetLBPFFSJJ.ApplyUpdates;
            finally
               DataSetLBPFFSJJ.Free;
            end;
          end;
    end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-9 14:53:58 | 显示全部楼层
我这样写,是因为不用手工打开TLBPFFXX信息中的DataSetLBPFFSJJ了,省事。另外问问我又用append来插入,之前的数据集设置的sql会查出所有的数据来,是不是用insert更好
回复 支持 反对

使用道具 举报

发表于 2007-8-9 15:04:03 | 显示全部楼层
你在TLBPFFXX信息中拷贝一个DataSetLBPFFSJJ控件不就行了?
5楼,你的sqlfitler加一个1=0 就可以用append来插入了,那个条件只会返回空数据集
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-9 15:13:47 | 显示全部楼层
DataSetLBPFFSJJ.SQLFilter:='1=0';
              DataSetLBPFFSJJ.Filtered:=true;
这样写吧?!
另外:(1)拷贝一个DataSetLBPFFSJJ控件不明白。(2)上面 3楼的问题,为什么出错?
回复 支持 反对

使用道具 举报

发表于 2007-8-9 15:40:38 | 显示全部楼层
楼主,你在实现啥? 是在一个信息下的数据集提交的时候同时处理另一个信息下的数据集,是这样吗?如果是,那么这两个数据集是同时成功,同时失败吗?
如果不是,请说说你的需求,在信息上,怎么要处理另一个信息下的数据集,这样我们好结合平台给出比较好的实现方法,主要是怕走偏了,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-9 15:46:09 | 显示全部楼层
::( 我在向一个数据集中数据提交的时候,需要向另一个表中插入记录,就像是触发器似的。)
我是这么想的:被插入数据的表,在另一个信息中。资料上不是说,对数据的操做要放在信息层么?(当然可以放在资源集中)所有,我打算把对数据集的操作放在信息中,并在其他地方来调用。 在这里就是在另一个数据集的AfterApplyUpdate的时候来调用的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-9 15:47:16 | 显示全部楼层
是在一个信息下的数据集提交的时候同时处理另一个信息下的数据集,是这样的,就是这个艺术
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-13 17:39 , Processed in 0.038890 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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