저기 소스를 올립니다... 간다한건데... 저장버튼을 눌리면...
에러메시지가 insert into 문 오류 라고 나오는데.... 틀린부분이 없는것 같아요..
그리고는 저장 버튼 코딩에 있는 DB_Refresh; 를 가리킵니다...
함 봐주세요.....
unit Main_Manage;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls;
type
TfrmMForm1 = class(TForm)
Panel1: TPanel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Bit1: TBitBtn;
Bit2: TBitBtn;
Bit3: TBitBtn;
Bit4: TBitBtn;
Bit5: TBitBtn;
DBGrid1: TDBGrid;
ADOQuery1: TADOQuery;
ADOTable1: TADOTable;
DataSource1: TDataSource;
procedure Bit5Click(Sender: TObject);
procedure FormClick(Sender: TObject);
procedure Bit4Click(Sender: TObject);
procedure Bit1Click(Sender: TObject);
procedure Bit3Click(Sender: TObject);
procedure Bit2Click(Sender: TObject);
procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure DBGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
DB_Insert : String;
procedure DB_Refresh;
procedure DB_Input;
procedure Cls_Edit;
procedure Dsp_Edit;
procedure Move_Cell;
{ Private declarations }
public
{ Public declarations }
end;
var
frmMForm1: TfrmMForm1;
implementation
{$R *.DFM}
procedure TfrmMForm1.DB_Refresh;
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('Select * From 고객카드');
adoquery1.SQL.Add('Order By 상호');
adoquery1.Open;
end;
procedure TfrmMForm1.DB_Input;
begin
adoquery1.Parameters.ParamValues['N1'] := Trim(Edit1.Text);
adoquery1.Parameters.ParamValues['N2'] := Trim(Edit2.Text);
adoquery1.Parameters.ParamValues['N3'] := Trim(Edit3.Text);
adoquery1.Parameters.ParamValues['N4'] := Trim(Edit4.Text);
adoquery1.Parameters.ParamValues['N5'] := Trim(Edit5.Text);
adoquery1.Parameters.ParamValues['N6'] := Trim(Edit6.Text);
adoquery1.Parameters.ParamValues['N7'] := Trim(Edit7.Text);
adoquery1.Parameters.ParamValues['N8'] := Trim(Edit8.Text);
end;
procedure TfrmMForm1.Cls_Edit;
begin
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
Edit4.Text := '';
Edit5.Text := '';
Edit6.Text := '';
Edit7.Text := '';
Edit8.Text := '';
end;
procedure TfrmMForm1.Dsp_Edit;
begin
Edit1.Text := adoquery1.FieldByName('상호').AsString;
Edit2.Text := adoquery1.FieldByName('대표자').AsString;
Edit3.Text := adoquery1.FieldByName('종목').AsString;
Edit4.Text := adoquery1.FieldByName('업태').AsString;
Edit5.Text := adoquery1.FieldByName('주소').AsString;
Edit6.Text := adoquery1.FieldByName('사업자 번호').AsString;
Edit7.Text := adoquery1.FieldByName('승인번호').AsString;
Edit8.Text := adoquery1.FieldByName('비고').AsString;
end;
procedure TfrmMForm1.Move_Cell;
begin
if bit1.Caption = '취소' then
begin
bit1.Caption := '추가';
bit2.Enabled := True;
bit4.Enabled := True;
DB_Insert := '불가능';
end;
Dsp_Edit;
end;
procedure TfrmMForm1.Bit5Click(Sender: TObject);
begin
close;
end;
procedure TfrmMForm1.FormClick(Sender: TObject);
begin
Cls_Edit;
Dsp_Edit;
DB_Insert := '불가능';
end;
procedure TfrmMForm1.Bit4Click(Sender: TObject);
var
Input_Str : String;
begin
Input_Str := InputBox('상호입력', '찾을 이름을 입력하세요','');
if Trim(Input_Str) <> '' then
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('Select * From 고객카드');
adoquery1.SQL.Add('Where 상호 Like :NAME1');
adoquery1.Parameters.ParamByName('NAME1').Value := '%' + Input_Str + '%';
adoquery1.Open;
end;
end;
procedure TfrmMForm1.Bit1Click(Sender: TObject);
begin
if bit1.Caption = '추가' then
begin
DB_Insert := '가능';
bit1.Caption := '취소';
bit2.Enabled := False;
bit4.Enabled := False;
Cls_Edit;
end
else
begin
DB_Insert := '불가능';
bit1.Caption := '추가';
bit2.Enabled := True;
bit4.Enabled := True;
DB_Refresh;
Dsp_Edit;
end;
Edit1.SetFocus;
end;
procedure TfrmMForm1.Bit3Click(Sender: TObject);
var
Select_no : Integer;
begin
if Trim(Edit1.Text) = '' then
begin
ShowMessage('상호를 입력하지 않으면 추가나 저장을 할 수 없습니다.');
Edit1.SetFocus;
Exit;
end;
if DB_Insert = '가능' then
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('Insert Into 고객카드');
adoquery1.SQL.Add('(상호, 대표자, 종목, 업태, 주소, 사업자 번호, 승인번호, 비고)');
adoquery1.SQL.Add('Values');
adoquery1.SQL.Add('( + :N1 + '', ');
adoquery1.SQL.Add(''' + :N2 + '', ');
adoquery1.SQL.Add(''' + :N3 + '', ');
adoquery1.SQL.Add(''' + :N4 + '', ');
adoquery1.SQL.Add(''' + :N5 + '', ');
adoquery1.SQL.Add(''' + :N6 + '', ');
adoquery1.SQL.Add(''' + :N7 + '', ');
adoquery1.SQL.Add(''' + :N8 + )');
DB_Input;
DB_Insert :='불가능';
bit1.Caption := '추가';
bit2.Enabled := True;
bit4.Enabled := True;
end
else
begin
Select_no := adoquery1.FieldByName('번호').AsInteger;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('Update 고객카드');
adoquery1.SQL.Add('Set 상호 = :N1, ');
adoquery1.SQL.Add('대표자 = :N2, ');
adoquery1.SQL.Add('종목 = :N3, ');
adoquery1.SQL.Add('업태 = :N4, ');
adoquery1.SQL.Add('주소 = :N5, ');
adoquery1.SQL.Add('사업자 번호 = :N6, ');
adoquery1.SQL.Add('승인번호 = :N7, ');
adoquery1.SQL.Add('비고 = :N8 ');
adoquery1.SQL.Add('Where 번호 = :N9');
DB_Input;
adoquery1.Parameters.ParamValues['N9'] := Select_no;
end;
adoquery1.ExecSQL;
***************************************************
DB_Refresh; 이부분입니다...
***************************************************
Edit1.SetFocus;
end;
procedure TfrmMForm1.Bit2Click(Sender: TObject);
var
ret_msg : Integer;
Select_no : Integer;
begin
if adoquery1.RecordCount <> 0 then
begin
ret_msg := MessageDlg('삭제하겠습니까?', mtWarning, [mbYes, mbNo], 0);
if ret_msg = mrYes then
begin
Select_no := adoquery1.FieldByName('번호').AsInteger;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('Delete From 고객카드');
adoquery1.SQL.Add('Where 번호 = :N1');
adoquery1.Parameters.ParamValues['N1'] := Select_no;
adoquery1.ExecSQL;
DB_Refresh;
Dsp_Edit;
end
else
Application.MessageBox('삭제가 취소되었습니다.','삭제취소',MB_OK);
end;
end;
procedure TfrmMForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
Move_Cell;
end;
procedure TfrmMForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key >=33) And (Key <= 40) then
Move_Cell;
end;
end.
adoquery1.SQL.Add('(상호, 대표자, 종목, 업태, 주소, 사업자 번호, 승인번호, 비고)');
adoquery1.SQL.Add('Values');
adoquery1.SQL.Add('( + :N1 + '', ');
adoquery1.SQL.Add(''' + :N2 + '', ');
adoquery1.SQL.Add(''' + :N3 + '', ');
adoquery1.SQL.Add(''' + :N4 + '', ');
adoquery1.SQL.Add(''' + :N5 + '', ');
adoquery1.SQL.Add(''' + :N6 + '', ');
adoquery1.SQL.Add(''' + :N7 + '', ');
adoquery1.SQL.Add(''' + :N8 + )');
제생각으러는 이부분이 틀린것 같네여... insert 문법이 틀린것 같아요..
adoquery1.SQL.Add('insert into 고객카드(상호,대표자,종목,...비고) values');
adoquery1.SQL.Add('(:N1,');
adoquery1.SQL.Add('(:N2,');
adoquery1.SQL.Add('(:N3,');
.
.
.
.
.
adoquery1.SQL.Add(':N8 )');
이렇게 하시고..밑에 파라미터를 잡아 주시던지..
n1~n8이 변수라면...
따옴표 쓰는게 틀렸어염..~~
adoquery1.SQL.Add('Values');
adoquery1.SQL.Add('(" ' + N1 + ' ", ');
adoquery1.SQL.Add(' " ' + N2 + ' ", ');
adoquery1.SQL.Add(' " ' + N3 + ' ", ');
adoquery1.SQL.Add(' " ' + N4 + ' ", ');
adoquery1.SQL.Add(' " ' + N5 + ' ", ');
adoquery1.SQL.Add(' " ' + N6 + ' ", ');
adoquery1.SQL.Add(' " ' + N7 + ' ", ');
adoquery1.SQL.Add(' " ' + N8 + ' " )');
이렇게 쌍따옴표를 쓰셔야 insert문에서 에러가 안날겁니다.~~
어쨋든 도움이 되셨으면 좋겠네염..