......
    qyMonthpzk.Open;
    qyMonthpzk.First;
    while Not qyMonthpzk.Eof do
    begin
      qyTempPzk.Append;
......
      qyTempPzk.FieldByName('zy').ASstring := qyMonthpzk.FieldByName('zy').ASstring;
{       qyTempPzk.Prior;
        Balance:=qyTempPzk.FieldByName('Balance').AsFloat;
        qyTempPzk.Next;
        Balance :=Balance+ qyMonthpzk.FieldByName('kmjf').AsFloat - qyMonthpzk.FieldByName('kmdf').AsFloat;
        qyTempPzk.Edit;
        qyTempPzk.FieldByName('Balance').AsFloat := ABS(Balance);
}
......
      end;
      qyTempPzk.Post;
      qyMonthpzk.Next;
......报错为:qyTempPzk: Dateset  not in edit or insert mode !!

解决方案 »

  1.   

    qyMonthpzk.Open;
        qyMonthpzk.First;
        while Not qyMonthpzk.Eof do
        begin
          qyTempPzk.Append;
    ......
          qyTempPzk.FieldByName('zy').ASstring := qyMonthpzk.FieldByName('zy').ASstring;
    {       qyTempPzk.Prior;
            Balance:=qyTempPzk.FieldByName('Balance').AsFloat;
            qyTempPzk.Next;
            Balance :=Balance+ qyMonthpzk.FieldByName('kmjf').AsFloat - qyMonthpzk.FieldByName('kmdf').AsFloat;
            qyTempPzk.Edit;
            qyTempPzk.FieldByName('Balance').AsFloat := ABS(Balance);
    }
    ......
          qyTempPzk.Post;
          qyMonthpzk.Next;
          end;
      

  2.   


        qyMonthpzk.Open;
        qyMonthpzk.First;
        while Not qyMonthpzk.Eof do
        begin
          qyTempPzk.Last;   //改这里试试。
          Balance:=qyTempPzk.FieldByName('Balance').AsFloat+qyMonthpzk.FieldByName('kmjf').AsFloat - qyMonthpzk.FieldByName('kmdf').AsFloat;
          qyTempPzk.Append;
    ......
          qyTempPzk.FieldByName('zy').ASstring := qyMonthpzk.FieldByName('zy').ASstring;
          qyTempPzk.FieldByName('Balance').AsFloat := ABS(Balance);......
          end;
          qyTempPzk.Post;
          qyMonthpzk.Next;
    ......
      

  3.   

    qyMonthpzk.Open;
        qyMonthpzk.First;
        while Not qyMonthpzk.Eof do
        begin
          qyTempPzk.Append;
          qyTempPzk.FieldByName('zy').ASstring := qyMonthpzk.FieldByName('zy').ASstring;
          if ( qyTempPzk.statue=dsedit ) or ( qyTempPzk.statue=dsInsert ) then
              qyTempPzk.Post;
          qyMonthpzk.Next;
          end;
      

  4.   

    qyTempPzk.Append;
    在这前面加个打开数据库的。
    qyTempPzk.close;
    qyTempPzk.open;
    ...
      

  5.   

    放在WHILE前面也行的,qyTempPzk这个都没有打开,当然会出错的。
      

  6.   

    qyTempPzk已经打开了,主要就是大括号里面的这段代码会出错。!
      

  7.   

    Append本身就是在表的末尾增加一条记录,所以觉得你的
    while Not qyMonthpzk.Eof do//没什么用你用的是Delphi什么版本,低版本对操作空的数据表是有错误的.建议用6.0以上
      

  8.   

    这样看看
    qyMonthpzk.Open;
        qyMonthpzk.First;
        while Not qyMonthpzk.Eof do
        begin
          qyTempPzk.Append;
          qyTempPzk.FieldByName('zy').ASstring := qyMonthpzk.FieldByName('zy').ASstring;
          qyTempPzk.FieldByName('Balance').AsFloat := 0.00;
          qyTempPzk.Post;
          qyTempPzk.Last;
          qyTempPzk.Prior;
          Balance:=qyTempPzk.FieldByName('Balance').AsFloat;
          qyTempPzk.Next;
          Balance :=Balance+ qyMonthpzk.FieldByName('kmjf').AsFloat - qyMonthpzk.FieldByName('kmdf').AsFloat;
          qyTempPzk.Edit;
          qyTempPzk.FieldByName('Balance').AsFloat := ABS(Balance);
          qyTempPzk.Post;
          qyMonthpzk.Next;      end;