BDE 없이 ZEOS콤포넌트를 깔아서 쓰고 있는데요.. ZUPDATESQL을 이용해서 UPDATE를
할려고 하는데요 ZDBGRID에 데이타를 집어넣고 화살표를 아래 방향으로 내리면 기본
콤포넌트에서는 INSERT가 됐었는데 ZEOS를 쓰면 그리드 상의 맨 위에 있는 데이타가
PARAM값으로 들어 가더라구요. DELETE는 제대로 되는데 BEFOREPOST에서의 NEWFIELD에
자꾸 그리드 상의 맨 위의 데이타가 들어갑니다.
소스좀 봐 주시고 아시는 분 있으면 연락좀 바랍니다.
즐거운 하루 되세요....
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ZTransact, ZOraSqlTr, ZUpdateSql, ZQuery, ZOraSqlQuery, ZConnect,
ZOraSqlCon, StdCtrls, Grids, DBGrids, ComCtrls, ZGrid;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button8: TButton;
Button3: TButton;
Edit4: TEdit;
Button10: TButton;
Button11: TButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
TabSheet2: TTabSheet;
Label2: TLabel;
DBG_Hotel: TDBGrid;
Button4: TButton;
Button6: TButton;
Button7: TButton;
Button9: TButton;
Edit2: TEdit;
Edit3: TEdit;
Button5: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Ds_Tour: TZOraSqlDatabase;
Qry_Hotel: TZOraSqlQuery;
Up_Hotel: TZUpdateSql;
ZOraTransact: TZOraSqlTransact;
Ds_Hotel: TDataSource;
Up_State: TZUpdateSql;
Ds_State: TDataSource;
Query1: TZOraSqlQuery;
Query2: TZOraSqlQuery;
Qry_HotelSTATECODE: TStringField;
Qry_HotelHOTELCODE: TStringField;
Qry_HotelENGNAME: TStringField;
Qry_HotelKORNAME: TStringField;
Qry_HotelURL: TStringField;
Qry_State: TZOraSqlQuery;
Qry_StateSTATECODE: TStringField;
Qry_StateENGNAME: TStringField;
Qry_StateKORNAME: TStringField;
DBG_State: TZDBGrid;
procedure Button9Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Qry_StateBeforeDelete(DataSet: TDataSet);
procedure Qry_StateBeforePost(DataSet: TDataSet);
procedure Qry_HotelBeforeDelete(DataSet: TDataSet);
procedure Qry_HotelBeforePost(DataSet: TDataSet);
procedure Button5Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
HtSteCode : String;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button9Click(Sender: TObject);
begin
Qry_Hotel.Active := False;
Qry_Hotel.ParamByName('StateCode').asString := Edit2.Text;
Qry_Hotel.Active := True;
Qry_State.Active := False;
Qry_State.ParamByName('StateCode').asString := Edit2.Text;
Qry_State.Active := True;
Edit3.Text := Qry_State.FieldByName('KorName').asString;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Qry_State.Active := False;
Qry_State.ParamByName('StateCode').asString := Edit1.Text;
Qry_State.Active := True;
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
if RadioButton3.Checked = True then
begin
Qry_State.Active := False;
Qry_State.SQL.Clear;
Qry_State.SQL.Add('SELECT STATECODE, ENGNAME, KORNAME ' +
'FROM STATE ' +
'WHERE STATECODE LIKE '''+Edit1.Text+''' || ''%'' ' +
'Order By EngName ');
Qry_State.Active := True;
end
else if RadioButton4.Checked = True then
begin
Qry_State.Active := False;
Qry_State.SQL.Clear;
Qry_State.SQL.Add('SELECT STATECODE, ENGNAME, KORNAME ' +
'FROM STATE ' +
'WHERE STATECODE LIKE '''+Edit1.Text+''' || ''%'' ' +
'Order By KorName ');
Qry_State.Active := True;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Qry_State.Insert;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Qry_State.Delete;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Qry_StateBeforeDelete(DataSet: TDataSet);
begin
Up_State.Apply(ukDelete);
end;
procedure TForm1.Qry_StateBeforePost(DataSet: TDataSet);
begin
Try
if Ds_State.State = dsInsert then
begin
Up_State.Apply(ukInsert);
end
else if Ds_State.State = dsEdit then
Up_State.Apply(ukModify);
Except
MessageDlg('저장이 취소되었습니다.',mtError, [mbOK], 0);
Button2Click(self);
End;
end;
procedure TForm1.Qry_HotelBeforeDelete(DataSet: TDataSet);
begin
Up_Hotel.Apply(ukDelete);
end;
procedure TForm1.Qry_HotelBeforePost(DataSet: TDataSet);
begin
Try
if Ds_hotel.State = dsInsert then begin
Qry_HotelSTATECODE.AsString := edit2.Text;
with Query1 do begin
Active := False;
ParamByName('statecode').asString := UpperCase(Qry_Hotel.FieldByName('StateCode').asString);
HtSteCode := UpperCase(Qry_Hotel.FieldByName('StateCode').asString);
Active := True;
Qry_HotelHOTELCODE.AsString := FieldByName('HOTELMax').asString;
end;
Up_Hotel.Apply(ukInsert)
end
else if Ds_hotel.State = dsEdit then
Up_Hotel.Apply(ukModify);
Except
MessageDlg('저장이 취소되었습니다.',mtError, [mbOK], 0);
Button6Click(self);
End;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if RadioButton1.Checked = True then
begin
Qry_Hotel.Active := False;
Qry_Hotel.SQL.Clear;
Qry_Hotel.SQL.Add('SELECT STATECODE, HOTELCODE, ENGNAME, KORNAME, URL ' +
'FROM HOTEL ' +
'WHERE STATECODE = '''+Edit2.Text+''' ' +
'Order By EngName ');
Qry_Hotel.Active := True;
end
else if RadioButton2.Checked = True then
begin
Qry_Hotel.Active := False;
Qry_Hotel.SQL.Clear;
Qry_Hotel.SQL.Add('SELECT STATECODE, HOTELCODE, ENGNAME, KORNAME, URL ' +
'FROM HOTEL ' +
'WHERE STATECODE = '''+Edit2.Text+''' ' +
'Order By KorName ');
Qry_Hotel.Active := True;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Qry_Hotel.Insert;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Qry_Hotel.Delete;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := Cafree;
if Qry_State.Active then Qry_State.Active := False;
if Qry_Hotel.Active then Qry_Hotel.Active := False;
end;
end.