Q&A

  • DBGrid에 입력시 오류발생 한번봐주세요?
DBGrid에 입력시 오류가 발생하는데 도저히 못찾겠내요

고수님들 한번 봐주세요



//급여상여작업

procedure Tgunsang1_n.BitBtn5Click(Sender: TObject);

begin

With DM4.Query2 do begin

if ComboBox1.Text='급여' then

begin

Close;

SQL.Clear;

SQL.Add('Insert into "급여상여작업" (Jakyer,Jakmonth,Gubun)');

SQL.Add(' value("'+SpinEdit1.Text+'","'+SpinEdit2.Text+'","'+ComboBox1.Text+'")');

ExecSQL;

end

else begin

Close;

SQL.Clear;

SQL.Add('Insert into "급여상여작업" (Jakyer,Jakmonth,Gubun,Jiday,Bopercent)');

SQL.Add(' value("'+SpinEdit1.Text+'","'+SpinEdit2.Text+'","'+ComboBox1.Text+'"');

SQL.Add(',"'+Edit1.Text+'","'+Edit2.Text+'")');

ExecSQL;

end;

2  COMMENTS
  • Profile
    조덕진 2001.01.17 23:42
    김범수 wrote:

    > DBGrid에 입력시 오류가 발생하는데 도저히 못찾겠내요

    > 고수님들 한번 봐주세요

    >

    > //급여상여작업

    > procedure Tgunsang1_n.BitBtn5Click(Sender: TObject);

    > begin

    > With DM4.Query2 do begin

    > if ComboBox1.Text='급여' then

    > begin

    > Close;

    > SQL.Clear;

    > SQL.Add('Insert into "급여상여작업" (Jakyer,Jakmonth,Gubun)');

    > SQL.Add(' value("'+SpinEdit1.Text+'","'+SpinEdit2.Text+'","'+ComboBox1.Text+'")');

    > ExecSQL;

    > end

    > else begin

    > Close;

    > SQL.Clear;

    > SQL.Add('Insert into "급여상여작업" (Jakyer,Jakmonth,Gubun,Jiday,Bopercent)');

    > SQL.Add(' value("'+SpinEdit1.Text+'","'+SpinEdit2.Text+'","'+ComboBox1.Text+'"');

    > SQL.Add(',"'+Edit1.Text+'","'+Edit2.Text+'")');

    > ExecSQL;

    > end;



    안녕하세요. 델초보 조덕진입니다.

    파라미터 쿼리를 사용하시는 것이 좋을 것 같은데요.



    if ComboBox1.Text = '급여' then

    begin

    :

    SQL.Add(' values(:pData1, :pData2, :pData3)');

    ParamByName('pData1').AsString := SpinEdit1.Text;

    ParamByName('pData2').AsString := SpinEdit2.Text;

    ParamByName('pData3').AsString := ComboBox1.Text;

    ExecSQL;

    end

    else

    begin

    :

    SQL.Add('values(:pData1, :pData2, :pData3, :pData4, :pData5)');

    ParamByName('pData1').AsString := SpinEdit1.Text;

    ParamByName('pData2').AsString := SpinEdit2.Text;

    ParamByName('pData3').AsString := ComboBox1.Text;

    ParamByName('pData4').AsString := Edit1.Text;

    ParamByName('pData5').AsString := Edit2.Text;

    ExecSQL;

    end;



    저 같은 경우엔 거의 파라미터를 사용하죠. SQL문장 자체도 보기에 쉽고, 파라미터의

    추가나 삭제도 편하고. 제가 봤을땐 쿼리를 한문장으로 처리해도 될 것 같은데요.



    Close;

    SQL.Clear();

    SQL.Add('Insert into "급여상여작업" (Jakyer,Jakmonth,Gubun,Jiday,Bopercent)');

    SQL.Add(' value (:pData1, :pData2, :pData3, :pData4, :pData5)');

    ParamByName('pData1').AsString := SpinEdit1.Text;

    ParamByName('pData2').AsString := SpinEdit2.Text;

    ParamByName('pData3').AsString := ComboBox1.Text;

    if ComboBox1.Text = '급여' then

    begin

    ParamByName('pData4').AsString := ''; // Null 값을 사용해도

    ParamByName('pData5').AsString := ''; // 될 것 같구요.

    end

    else

    begin

    ParamByName('pData4').AsString := Edit1.Text;

    ParamByName('pData5').AsString := Edit2.Text;

    end;

    ExecSQL;



    코딩이 맞는지 모르겠네요. 하여간 제 생각으로는 쿼리문에 직접 자료값을 사용하는

    것보다 파라미터를 사용하는 것이 좋을것 같아 적어봤습니다.



    그럼... 즐코되세요...

  • Profile
    김범수 2001.01.18 05:08
    조덕진 wrote:

    > 김범수 wrote:



    너무 감사합니다.

    파라미터는 저가 알지 못했는 것인데, 알려주세서 감사..