调试问题:‘当前提供者不支持“索引”功能必须的界面。’处理停止。
状态停止在最后一句:whdata.cdsKcmx.First;以下是代码:
procedure Tfrm_kftj.InsertData;                                                  //      02
var S : string;
    t , amt: integer;
    F : TField;
begin
  FContinue := true;
  whdata.cdstemp.Close;                                                           //       03
  whdata.cdsTemp.CommandText := SQLString;
  Application.ProcessMessages;
  whdata.cdsTemp.Open;
  Application.ProcessMessages;
  whdata.cdsKcmx.Append;
    s := whdata.cdsTemp.FieldByName('PROD_NO').AsString;
  whdata.cdsKcmx.FieldByName('PROD_NO').AsString := S;  FillSpInfo;        //调用                                                                //  03
  t := 0;
  while not whdata.cdstemp.Eof do
  begin
    if s<>whdata.cdsTemp.FieldByName('PROD_NO').AsString then
    begin
      whdata.cdsKcmx.FieldByName('Amt').AsInteger := t;
      t := 0;
      whdata.cdsKcmx.Append;
      s := whdata.cdsTemp.FieldByName('PROD_NO').AsString;
      whdata.cdsKcmx.FieldByName('PROD_NO').AsString := S;
      FillSpInfo;              //调用
    end;
    if whdata.cdsTemp.FieldByName('STORE_UNIT').Value <> '' then
      whdata.cdsKcmx.FieldByName('STORE_UNIT').Value := whdata.cdsTemp.FieldByName('STORE_UNIT').Value;
    amt := whdata.cdsTemp.FieldByName('Amt').AsInteger;
    F := whdata.cdsKcmx.FieldByName('KC'+Trim(whdata.cdsTemp.FieldByName('WHOUSE_NO').AsString));
    if Not Assigned(F) then F:= whdata.cdsKcmx.FieldByName('KC_OTHER');
    F.Visible := true;
    F.AsInteger := amt;
    t := t + amt;
    whdata.cdsTemp.Next;
    if whdata.cdsTemp.RecNo Mod 1000 = 999 then
    begin
      Panel2.Caption := Format('%d ',[whdata.cdsKcmx.RecordCount]);
      Application.ProcessMessages;
      if Not FContinue then Break;
    end;
  end;
  whdata.cdsKcmx.FieldByName('Amt').AsInteger := t;
  Panel2.Caption := '';
  whdata.cdsKcmx.IndexName := 'SORT_OLDTYPE';
  whdata.cdsKcmx.First;
end;

解决方案 »

  1.   

    procedure Tfrm_kftj.InsertData;    //      02
     var S : string;
     t , amt: integer;
     F : TField;
    begin
      FContinue := true;
    whdata.cdstemp.Close; //03                                            whdata.cdsTemp.CommandText := SQLString;
      Application.ProcessMessages;
      whdata.cdsTemp.Open;
      Application.ProcessMessages;
      whdata.cdsKcmx.Append;
      s := whdata.cdsTemp.FieldByName('PROD_NO').AsString;
      whdata.cdsKcmx.FieldByName('PROD_NO').AsString := S;
      FillSpInfo;        //调用                                                                //  03
      t := 0;
      while not whdata.cdstemp.Eof do
      begin
        if s<>whdata.cdsTemp.FieldByName('PROD_NO').AsString then
        begin
          whdata.cdsKcmx.FieldByName('Amt').AsInteger := t;
          t := 0;
          whdata.cdsKcmx.Append;
          s := whdata.cdsTemp.FieldByName('PROD_NO').AsString;
          whdata.cdsKcmx.FieldByName('PROD_NO').AsString := S;
          FillSpInfo;              //调用
        end;
        if whdata.cdsTemp.FieldByName('STORE_UNIT').Value <> '' then
          whdata.cdsKcmx.FieldByName('STORE_UNIT').Value := whdata.cdsTemp.FieldByName('STORE_UNIT').Value;
        amt := whdata.cdsTemp.FieldByName('Amt').AsInteger;
        F := whdata.cdsKcmx.FieldByName('KC'+Trim(whdata.cdsTemp.FieldByName('WHOUSE_NO').AsString));
        if Not Assigned(F) then F:= whdata.cdsKcmx.FieldByName('KC_OTHER');
        F.Visible := true;
        F.AsInteger := amt;
        t := t + amt;
        whdata.cdsTemp.Next;
        if whdata.cdsTemp.RecNo Mod 1000 = 999 then
        begin
          Panel2.Caption := Format('%d ',[whdata.cdsKcmx.RecordCount]);
          Application.ProcessMessages;
          if Not FContinue then Break;
        end;
      end;
      whdata.cdsKcmx.FieldByName('Amt').AsInteger := t;
      Panel2.Caption := '';
      whdata.cdsKcmx.IndexName := 'SORT_OLDTYPE';
      whdata.cdsKcmx.First;
    end;
    你這東東,不詳細說明說明人家怎麼看呀