起步软件技术论坛-X3

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

【搞定】插入多条记录,用applyUpdates后,自动填充字段能否自动填充?**

[复制链接]
发表于 2007-8-13 15:59:12 | 显示全部楼层 |阅读模式
我向表中用循环连续插入记录,循环外使用applyUpdates.程序运行后表中的自动填充字段不能填充。
(1)这种情况,自动填充字段能否自动填充?
回复

使用道具 举报

发表于 2007-8-13 16:04:25 | 显示全部楼层
把代码贴出来看看
如果用的是标准数据集不应该这样的,除非数据集没有选中需要自动填充的字段,或者在表上定义了,又在信息层的数据集的字段编辑器中取消了
回复 支持 反对

使用道具 举报

发表于 2007-8-13 16:04:27 | 显示全部楼层
把代码贴出来看看
如果用的是标准数据集不应该这样的,除非数据集没有选中需要自动填充的字段,或者在表上定义了,又在信息层的数据集的字段编辑器中取消了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-13 17:14:14 | 显示全部楼层
DataSetLBPFFSJJ.FieldByName('GUID').AsString := JSCommon.CreateGUIDStr; //我加入这段代码后,好了。
但是对于该问题来说,我要知道为什么会这样?
(1)你所说的问题不存在(没有选中需要自动填充的字段;字段编辑器中取消了)
(2)难道在多条语句
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-13 17:18:33 | 显示全部楼层
procedure TLBPFFXX.InitFFAddNewWorkTypeLBP
{??????????这个过程于下面的过程操作同一张表,方法相同,却能正常运行}
(shiyongqixian:integer;LaoBaoPinGUID,WorkType:string);
       var    ZhigongDataSet:TSQLDataSet;

    begin
          {1:根据WorkType 在职工数据集中查询工种=WorkType的职工GUID
           2:循环上一步的数据集每一行
             2.1:对每个职工都在发放表中插入一条"计划"记录  顺便将 LaoBaoPinGUID
                 作为字段插入
           3:end
          }
              //DataSetLBPFFSJJ.Create(nil);
              //DataSetLBPFFSJJ.SQL.Text:='SELECT * FROM LBPFFB';
              DataSetLBPFFSJJ.Close;
              DataSetLBPFFSJJ.SQLFilter:='1=0';
              DataSetLBPFFSJJ.Filtered:=true;
              DataSetLBPFFSJJ.Open;
          ZhigongDataSet:=TSQLDataSet.Create(self);
          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('GUID').AsString := JSCommon.CreateGUIDStr;//没有这句正常运行
              DataSetLBPFFSJJ.FieldByName('ZG').AsString:=FieldByName('GUID').AsString;
              DataSetLBPFFSJJ.FieldByName('LBP').AsString:=LaoBaoPinGUID;
                      。。。。
              Next;
            end;//while
            DataSetLBPFFSJJ.ApplyUpdates;
            finally
               DataSetLBPFFSJJ.Free;
               ZhigongDataSet.Free;
            end;
          end;
    end;
    { 新增员工初始化}
    static procedure TLBPFFXX.InitFFAddNewEmp(EmployeeID,WorkType:string);
      var    WorkTypeLaobaoQuery,DataSetLBPFFSJJ:TQuery;
       lbp:string;
       yxsyqx:integer;

    begin
           {
          1,根据员工的工作种类  ,查找工种老保品所有劳保品的guid ,以及使用期限
          2,循环GUID,在发放表中用EmployeeID,和guid填充,并设置状态信息.

        }

        WorkTypeLaobaoQuery:=TQuery.Create(nil);
         DataSetLBPFFSJJ:=TQuery.Create(nil);
        with WorkTypeLaobaoQuery do
         begin
             try
              ConnectionString:='DATABASEURL=Biz:\LBPFF\AQSJK.Database';
              CommandText:='select *  from BMLBPGL where BM='''+WorkType+'''';
              Open;
               with  DataSetLBPFFSJJ do
                 begin
                 ConnectionString:='DATABASEURL=Biz:\LBPFF\AQSJK.Database';
              CommandText:='select *  from LBPFFB where 1=0';
                  Open;
                 end;
              while not Eof do
              begin
                lbp:= FieldByName('LBP').AsString;
                yxsyqx:= FieldByName('YXSYQX').AsInteger;
              with  DataSetLBPFFSJJ do
               begin
                DataSetLBPFFSJJ.Append;
           //   DataSetLBPFFSJJ.FieldByName('GUID').AsString := JSCommon.CreateGUIDStr;//现在没有这句就出错,与上面操作的是同一个表,同一字段
              DataSetLBPFFSJJ.FieldByName('ZG').AsString:=EmployeeID;
                                                。。。
                    Next;
              end; //while
              DataSetLBPFFSJJ.ApplyUpdates;
            finally
              Free;
              DataSetLBPFFSJJ.Free;
            end;  //Try
回复 支持 反对

使用道具 举报

发表于 2007-8-13 17:46:54 | 显示全部楼层
知道了,你用的是Query,这样就直接跟数据库交换了,所以自动填充的属性就失效了,其实不仅仅自动填充,像查找属性,等等在数据字典层定义的属性都是不起作用的,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-14 09:21:25 | 显示全部楼层
ao,那TSQLDataSet保持了,我所对数据库的各种属性设置是吧!
回复 支持 反对

使用道具 举报

发表于 2007-8-14 12:07:41 | 显示全部楼层
对,TSQLDataSet、TPivotDataSet、TDecisionDataSet 都能应用数据字典层的定义,不过TDecisionDataSet  不支持回写,其他两个可以
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-14 14:32:28 | 显示全部楼层
ok!
回复 支持 反对

使用道具 举报

发表于 2007-8-14 14:40:57 | 显示全部楼层
结贴
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-13 22:38 , Processed in 0.040244 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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