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;
> 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;
코딩이 맞는지 모르겠네요. 하여간 제 생각으로는 쿼리문에 직접 자료값을 사용하는
것보다 파라미터를 사용하는 것이 좋을것 같아 적어봤습니다.
그럼... 즐코되세요...