현재 우편번호 검색하는 것을 짜고 있는데
텍스트박스에서 동을 입력하면 동에 일치되는 건이 여러건이 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.