Q&A

  • DBGRID에서 특정 row를 선택했는데 맨위row만 선택됨 . 도와주세요
현재 우편번호 검색하는 것을 짜고 있는데

텍스트박스에서 동을 입력하면 동에 일치되는 건이 여러건이 DBGrid에 나옵니다.

그 중에 특정 row를 선택하면 특정row가 선택되지 않고 맨위row만 선택됩니다.

여러 고수님 알려주세요.꼭 꼭!!!!1

자세하게 .......





uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Grids, DBGrids, StdCtrls, Buttons, ExtCtrls, Db, DBTables;



type

TFormZip = class(TForm)

Panel1: TPanel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

DBGrid1: TDBGrid;

DataPost: TDataSource;

QueryPost: TQuery;

Edit1: TEdit;

Label1: TLabel;

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure DBGrid1DblClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure DBGrid1CellClick(Column: TColumn);

private

{ Private declarations }

public

{ Public declarations }

GGetAddr : string;

GPost :string;

GAddr :string;

a1,a2 :variant;

end;



var

FormZip: TFormZip;



implementation



uses Master,DBConnt,work;



{$R *.DFM}



//취소버튼

procedure TFormZip.BitBtn2Click(Sender: TObject);

begin

close;

end;



===> 우편번호 검색 부르는 폼

procedure TFormMaster.EtAddrKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

var

strSQL : string;



begin

if length(etaddr.text) = 0 then

begin

meZip.Text := '';

exit;

end;





if key = 13 then begin

if trim(EtADDR.TEXT) <> '' then

begin

try

formZip := TFormZip.Create(Application);

with QueryZip do

begin

try

close;



SQL.Clear;



strSql := 'SELECT 우편번호,동명,주소 ' +

' FROM 우편번호 ' +

'WHERE 동명 like ''%' + trim(EtADDR.text) + '%''';



SQL.Add(StrSQL);



OPEN;



if recordCount >= 1 then

formZip.showModal;



MEZip.text := trim(FieldByName('우편번호').AsString);

EtAddr.text := trim(FieldByName('주소').AsString);



finally

close;

end;

end;



except

exit;

end;

end;

end;



end;





===> 우편번호 검색 폼

//선택버튼임

procedure TFormZip.BitBtn1Click(Sender: TObject);

begin

GPost := Trim(QueryPost.FieldByName('우편번호').AsString);

GAddr := Trim(QueryPost.FieldByName('주소').AsString);



Close;

end;



procedure TFormZip.DBGrid1DblClick(Sender: TObject);

begin

BitBtn1Click(Sender);

end;



procedure TFormZip.FormShow(Sender: TObject);

var

strSQL: String;

begin

with QueryPost do

begin

try

Close;



SQL.Clear;



strSQL := 'SELECT 우편번호,동명,주소 ' +

' FROM 우편번호 ' +

'WHERE 동명 like + ''%' + trim(FormMaster.EtAddr.text) + '%''';



SQL.Add(strSQL);



Open;





except

MessageDlg('조회에러 !', mtWarning, [mbOk], 0);

exit;

end;

end;



end;



procedure TFormZip.FormClose(Sender: TObject; var Action: TCloseAction);

begin

close;

end;



procedure TFormZip.DBGrid1CellClick(Column: TColumn);

begin

if QueryPost.Locate('우편번호;주소;', VarArrayOf([a1, a2]), [loCaseInsensitive]) then

begin

// 레코드를 찾았을 경우..

GPost := Trim(QueryPost.FieldByName('우편번호').AsString);

GAddr := Trim(QueryPost.FieldByName('주소').AsString);

end

else begin

// 레코드를 찾지 못했을 경우..

exit;

end;



end;



end.

0  COMMENTS