Q&A

  • DbGrid내용을 임시테이블로 인서트시 매개변수가 적다고....ㅠㅠ
<!--CodeS-->
procedure TfrmIlbo.btnPreviewClick(Sender: TObject);
var
  TempString1,TempString2 : string;
  TempValue1, TempValue2, TempValue3, TempValue4 : Double;
  i, j : integer;
begin
  i := 0;
  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 <> TempString2 then
          begin
            TempString2 := DbGrid1.Fields[0].Value ;
            SQL.Clear;
==>     SQL.Add('Insert into TempTbl ');
==>     SQL.Add('(CustCode,CustAmt,CustCostAmt) ');
==>     SQL.Add('Values (TempString2,:TempValue1,:TempValue2) ');
==>     ParamByName(TempValue1).AsFloat := StrToFloat(DbGrid1.Fields[1].Value);
==>     ParamByName(TempValue2).AsFloat := StrToFloat(DbGrid1.Fields[2].Value);
            ExecSQL;
            Next;
          end
        else
          begin
            Next;
          end;
        inc(i);
      end;    // While end

  end;        // With end

  frmIlboPrint.QrIlboPrint.Preview;
end;      // Procedure end
<!--CodeE-->

답변을 받았는데 하나를 해결하니 또 다른 문제에..봉착...ㅠㅠ

Sql Explorer에서는 3개의 값만으로 나머지 값을 비우고도 들어가서
위와 같이 Insert into를 하였습니다

매개변수가 적다고 나오네요..

질답란을 살펴보았는데 형이 틀리거나 아니면 필드가 틀리다고 하시는데
임시테이블에 형들하고 밑에 변수형들하고 소스대로 맞게 한듯 한데..(?)
제가 지식이 부족해서링..

클리퍼로 했을때는 좀 맘이 편해서 그런가 다 보이는것 같더니
델파이로 오니까 알던것도 헷갈리네요...ㅠㅠ



2  COMMENTS
  • Profile
    이영주 2006.06.07 11:41
    매개변수가 3개인데 TempString2 는 아래에 없군요. TempString2-> :TempString2


    오! 클리퍼! 오래전에 다루었던 것인데 지금도 가능한가요?
  • Profile
    초봉델파이어 2006.06.07 12:13

    두개는 매개변수로 돌려줘보고 하나는 위에서 Tempstring2에다가 값을 받아놨거던요..
    이리 저리 해보다가 귀차니즘 발동해서링...ㅠㅠ

    <!--CodeS-->
                Table1.Open;
                Table1.Insert;
                Table1.FieldByName('CustCode').AsString := DbGrid1.Fields[0].Value ;
                Table1.FieldByName('CustAmt').AsFloat := StrToFloat(DbGrid1.Fields[1].Value);
                Table1.FieldByName('CustCostAmt').AsFloat := StrToFloat(DbGrid1.Fields[2].Value);
    <!--CodeE-->

    이렇게 돌려버렸습니당.. 답변에 감사합니다..
    클리퍼를 파이브윈으로 해서 윈도우로 변경좀 하다가...
    지금은 ^^ XP에서는 돌리기 까다롭더라구요...
    파이브윈이 까다로운게 아니라 클리퍼가용ㅇ....