起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 161|回复: 7

【搞定】先Select-Open 再 Append应该插入两条数据,但是只插入一条数据**

[复制链接]
发表于 2007-8-15 10:07:47 | 显示全部楼层 |阅读模式
with LaobaoFFQuery do
       begin
         CommandText:='select * from LBPFFB where FFBJ=1 and ZTBZ=0';
         Open;
         while not Eof do
         begin
             {(1)对每条记录,从中查出一些字段,来做为下面Append的值}
              v1:=LaobaoFFQuery.FieldByName('SCFFRQ').AsDateTime; // 上次发放日期
             。。。。
             {(2)添加数据记录}
              Append; //添加数据
              FieldByName('GUID').AsString := JSCommon.CreateGUIDStr;
              FieldByName('ZG').AsString:=ZG;
             。。。。

               Next;
          end; //  while not Eof do
            ApplyUpdates;  //LaobaoFFQuery.ApplyUpdate
          end;//   with LaobaoFFQuery do   begin
            finally
              LaobaoFFQuery.Free;
           end;  //Try

以上的问题是:本来查询语句应该查询出两条数据,同时向数据库中插入两条数据,现在只插入了一条。怎么回事啊?
回复

使用道具 举报

发表于 2007-8-15 10:15:56 | 显示全部楼层
append 后要执行post,即在next前post一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-15 10:30:55 | 显示全部楼层
是不是因为,比如查询2条记录,在循环第一次时候,我没有post,而append后,TQuery指针指向了第3条,也就是我刚刚插入的那条记录。然后next就是第4条了,而原想它应该定位到第2条的。你说说是不是这样?说说为什么得先Post一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-15 10:41:47 | 显示全部楼层
try
        with LaobaoFFQuery do
       begin
         CommandText:='select * from LBPFFB where FFBJ=1 and ZTBZ=0';
         Open;
         while not Eof do
         begin
              v1:=LaobaoFFQuery.FieldByName('SCFFRQ').AsDateTime; // 上次发放日期

             if(FieldByName('ZTRQ').IsNull) then
              v2:=0.0
             else
              v2:=FieldByName('ZTRQ').AsDateTime; //暂停日期

             if (FieldByName('QYRQ').IsNull) then
              v3:=0.0
             else
              v3:=FieldByName('QYRQ').AsDateTime;  //启用日期

           。。。
              GZ:=FieldByName('GZ').AsString;
               Append; //添加数据
        FieldByName('GUID').AsString := JSCommon.CreateGUIDStr;
                                     。。。
              FieldByName('GZ').AsString:= GZ ;
              Post;
             Next;

            end; //  while not Eof do
             end;//   with LaobaoFFQuery do   begin
           LaobaoFFQuery.ApplyUpdates;
            finally
              LaobaoFFQuery.Free;
                   end;  //Try
      end;//procedure
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-15 10:42:19 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-15 10:53:58 | 显示全部楼层
现在还是1条记录
回复 支持 反对

使用道具 举报

发表于 2007-8-15 11:32:28 | 显示全部楼层
请问你原先用啥开发的?

你这样的操作不能在一个数据集上,在一个数据集循环,又要新增数据,
你应该用两个数据集来做,一个数据集来做循环,然后像另一个数据集来插入数据。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-15 14:40:11 | 显示全部楼层
呵呵,好的!ok
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-13 19:50 , Processed in 0.038710 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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