Q&A

  • 임시테이블에 DbGrid의 내용을 저장하는데 에러가...
<!--CodeS-->
  With Query1 do begin
    if HavingTbl('Temptbl') <> -1 then
      begin
      Close;
      SQL.Clear;
      SQL.Add('drop table Temptbl');
      ExecSQL;
      end;
      // if begin end

    Close;
    SQL.Clear;
    SQL.Add('Create table Temptbl(CustName Char(20),');
    SQL.Add('CustCode Char(05),');
    SQL.Add('CustAmt Double,');
    SQL.Add('CustCostAmt Double,');
    SQL.Add('CustBeforeDebt Double,');
    SQL.Add('CustTodayDebt Double)');
    ExecSQL;

    Close;
    SQL.Clear;
    SQL.Add('Select Sa_Cust,Sa_Amt,Sa_CostAmt ');
    SQL.Add('from Sa010sm ');
    SQL.Add('Where Sa_Year = :edtDate and Sa_Jpgbn like :JpCheck ');
    SQL.Add('Order by Sa_Cust ');
    ParamByName('edtDate').AsString := edtYear.Text + edtMonth.Text + edtDay.Text;
    ParamByName('jpCheck').AsString := '0';
    Open;    // 조회시에는 Open, 삭제,업데이트시에는 Exec

    While i < RecordCount-1 do
      begin
        if DbGrid1.Fields[0].Value <> TempString1 then
          begin
            TempString1 := DbGrid1.Fields[0].Value ;
            TempString2 := DbGrid1.Fields[1].Value ;
            TempString3 := DbGrid1.Fields[2].Value ;
            ShowMessage(Tempstring1 + ' ' + TempString3);
====>SQL.Add('Insert into TempTbl(CustCode,CustAmt,CustCostAmt) Values (TempString1,TempString2,TempString3)');
            ExecSQL;
            Query1.Next;
          end   //  if end
        else
          begin
            Query1.Next;
          end;  // if else end
        inc(i);
      end;

  end;        // With begin end
<!--CodeS-->

위의 임시테이블에 DbGrid의 내용을 Insert할려고 하는데
'Query1:Cannot perform this operation on a closed dataset' 이라고 메세지가 나오면서
빠지네요..
===>부분에서 어케 해야 할지...ㅠㅠ
좀 고수님들의 조언좀 부탁합니다..
else일때는 업데이트문을 쓸라고 비워 놓았구요..

insert문하고 execsql을 제외하면 showmessage로 확인해본결과 돌아가거든요..
임시테이블에 넣을려고 할때 에러가 나는거 같은데..
DB는 MS Access이고 델파이7입니다


델파이초보의 애타는 맘을 고수님들이 해결좀...^^




2  COMMENTS