델파이 이틀째공부하고 프로젝트 작성하는 왕초보입니다.
명령어도 다 모르고 아래처럼 코딩하고 나니까 실행시에 db엔진 어쩌구 저쩌구 오류가 나더라고요. 그래서 insert오류인지 아니면 bd alias부분이 오류인지...
BDE Administrator에서 db경로 작성하고 수정을 했는데 그게 잘못된건지 좀 봐주시겠습까.. 제발부탁드려요 ㅜ.ㅜ
그리고 LAN상에서 작업을 하려고 하는데 alias 설정 방법도 좀 알려주시면 고맙겠습니다.
제가 초보니까 주석좀 자세히 붙여 주시면 더 감사드리고요.
꼭좀 부탁드려요.
unit B_02Form;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls, ComCtrls;
type
TB02Form = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
BtnSave: TBitBtn;
BtnDel: TBitBtn;
BtnExit: TBitBtn;
Label1: TLabel;
Label2: TLabel;
EdCode: TEdit;
EdName: TEdit;
DBGrid1: TDBGrid;
DsSm: TDataSource;
QrSm: TQuery;
QrSmCode: TStringField;
QrSmName: TStringField;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BtnSaveClick(Sender: TObject);
private
procedure ComponentClear;
{ Private declarations }
public
{ Public declarations }
end;
var
B02Form: TB02Form;
implementation
{$R *.DFM}
procedure TB02Form.ComponentClear;
var wCc:word;
begin
//전체 Component중에서 Edit와 CheckBox초기화
for wCc := 1 to ComponentCount - 1 do
if Components[wCc] is TEdit then
TEdit(Components[wCc]).Text := ''
else if Components[wCc] is TCheckBox then
TCheckBox(Components[wCc]).Checked := False;
//저장,삭제버턴 비활성화
// btnSave.Enabled := False;
btnDel.Enabled := False;
end;
procedure TB02Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
QrSm.Close;
Action := caFree;
end;
procedure TB02Form.FormCreate(Sender: TObject);
begin
ComponentClear;
ActiveControl := EdCode; //Cursor 위치제어
// 지금까지 등록된 모든 Item 내용을 보여준다.
// 기업에서 자료가 많을경우에는 화면이 나타나는데 시간이 많이 걸릴수가 있다.
QrSm.Close;
QrSm.Sql.Clear;
QrSm.Sql.Add('Select * From CustSm');
Try
QrSm.Open;
Except
Application.MessageBox('반코드 Table에 오류 발생!!!','오류',mb_ok+mb_IconInformation);
QrSm.Close;
end;
end;
procedure TB02Form.FormShow(Sender: TObject);
begin
Left := 0; Top := 0;
end;
procedure TB02Form.BtnSaveClick(Sender: TObject);
var Q1:TQuery;
sSql:String;
begin
Q1 := TQuery.Create(Self);
Q1.DataBaseName := 'CustSm';
Q1.Sql.Clear;
sSql := 'Insert into CustSm (Code,Name) '+
' Values (:PCode,:PName) ';
Q1.Sql.Add(sSql);
Q1.ParamByName('PCode').asstring := Trim(EdCode.Text);
Q1.ParamByName('PName').asstring := Trim(EdName.Text);
// Q1.Sql.Add(sSql);
Q1.ExecSql;
close;
// SQL.Clear;
// Q1.Sql.Add(sSql);
// open;
end;
end.
insert 하는 다른 방법을 알고 있어서 이렇게 글을 올립니다.
procedure TB02Form.BtnSaveClick(Sender : TObject);
var
Q1 : TQuery;
begin
Q1 := TQuery.Create(Self);
with Q1 do
try
DatabaseName := database1.DatabaseName;
SQL.Text := Format('insert into Custsm (Code, Name) Values (%S, %S)'
,[EdCode.Text, EdName.Text]);
try Execsql;
except ShowMessage('Custsm 에서 오류 발생'); end;
Finally Free; end;
end;
위와 같이 하면 insert 해야할 필드가 많아도 ..... ^^
참고 하시기 바랍니당....
고수님덜의 질책 부탁합니당..
그럼 전 이만...
후다닥~~~~~~~~~~~~~~~~~~~~~~~~~~콰당~~~~~~~~~^^;;
왕초보민정 wrote:
> 델파이 이틀째공부하고 프로젝트 작성하는 왕초보입니다.
> 명령어도 다 모르고 아래처럼 코딩하고 나니까 실행시에 db엔진 어쩌구 저쩌구 오류가 나더라고요. 그래서 insert오류인지 아니면 bd alias부분이 오류인지...
> BDE Administrator에서 db경로 작성하고 수정을 했는데 그게 잘못된건지 좀 봐주시겠습까.. 제발부탁드려요 ㅜ.ㅜ
> 그리고 LAN상에서 작업을 하려고 하는데 alias 설정 방법도 좀 알려주시면 고맙겠습니다.
> 제가 초보니까 주석좀 자세히 붙여 주시면 더 감사드리고요.
> 꼭좀 부탁드려요.
>
> unit B_02Form;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> Db, DBTables, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls, ComCtrls;
>
> type
> TB02Form = class(TForm)
> PageControl1: TPageControl;
> TabSheet1: TTabSheet;
> Panel1: TPanel;
> Panel2: TPanel;
> Panel3: TPanel;
> BtnSave: TBitBtn;
> BtnDel: TBitBtn;
> BtnExit: TBitBtn;
> Label1: TLabel;
> Label2: TLabel;
> EdCode: TEdit;
> EdName: TEdit;
> DBGrid1: TDBGrid;
> DsSm: TDataSource;
> QrSm: TQuery;
> QrSmCode: TStringField;
> QrSmName: TStringField;
> procedure FormClose(Sender: TObject; var Action: TCloseAction);
> procedure FormCreate(Sender: TObject);
> procedure FormShow(Sender: TObject);
> procedure BtnSaveClick(Sender: TObject);
> private
> procedure ComponentClear;
> { Private declarations }
> public
> { Public declarations }
> end;
>
> var
> B02Form: TB02Form;
>
> implementation
>
> {$R *.DFM}
> procedure TB02Form.ComponentClear;
> var wCc:word;
> begin
> //전체 Component중에서 Edit와 CheckBox초기화
> for wCc := 1 to ComponentCount - 1 do
> if Components[wCc] is TEdit then
> TEdit(Components[wCc]).Text := ''
> else if Components[wCc] is TCheckBox then
> TCheckBox(Components[wCc]).Checked := False;
> //저장,삭제버턴 비활성화
> // btnSave.Enabled := False;
> btnDel.Enabled := False;
> end;
>
> procedure TB02Form.FormClose(Sender: TObject; var Action: TCloseAction);
> begin
> QrSm.Close;
> Action := caFree;
> end;
>
> procedure TB02Form.FormCreate(Sender: TObject);
> begin
> ComponentClear;
> ActiveControl := EdCode; //Cursor 위치제어
>
> // 지금까지 등록된 모든 Item 내용을 보여준다.
> // 기업에서 자료가 많을경우에는 화면이 나타나는데 시간이 많이 걸릴수가 있다.
> QrSm.Close;
> QrSm.Sql.Clear;
> QrSm.Sql.Add('Select * From CustSm');
> Try
> QrSm.Open;
> Except
> Application.MessageBox('반코드 Table에 오류 발생!!!','오류',mb_ok+mb_IconInformation);
> QrSm.Close;
> end;
> end;
> procedure TB02Form.FormShow(Sender: TObject);
> begin
> Left := 0; Top := 0;
> end;
>
> procedure TB02Form.BtnSaveClick(Sender: TObject);
> var Q1:TQuery;
> sSql:String;
> begin
> Q1 := TQuery.Create(Self);
> Q1.DataBaseName := 'CustSm';
> Q1.Sql.Clear;
> sSql := 'Insert into CustSm (Code,Name) '+
> ' Values (:PCode,:PName) ';
> Q1.Sql.Add(sSql);
> Q1.ParamByName('PCode').asstring := Trim(EdCode.Text);
> Q1.ParamByName('PName').asstring := Trim(EdName.Text);
> // Q1.Sql.Add(sSql);
> Q1.ExecSql;
> close;
> // SQL.Clear;
> // Q1.Sql.Add(sSql);
> // open;
>
> end;
>
> end.