Q&A

  • 우편번호검색하는 프로그램을 어찌 해야할지 모르겠어요.부탁드립니다^^
신상명세를 입력하는 중에 우편번호를 알고 동주소까지 자동으로 입력하는 프로그램을 짜려 합니다.

1.우편번호를 모를때는 다른 폼을 띄어 검색을 한 뒤 그 폼에서 확인을 누르면 본 폼에 주소가 적히고 나머지 주소 에디트에 포커스가 맞혀지도록합니다.



2.우편번호를 알 경우에는 우편번호를 치고 엔터를 침과 동시에 주소가 자동으로 적히고 포커스가 나머지 주소 에디트에 맞혀지도록 하고 싶습니다.



여러번 시도해 봤지만 성공할 길이 없군요.

error가 나도 해결할 길을 찾을 수가 없어서요...

어찌해야 할지~



방법을 자세히 알고 싶은데여~

많은 도움 부탁드립니다.

고수님들의 좋은 방법을 알고 싶어요^^



3  COMMENTS
  • Profile
    아폴론 2001.05.22 02:24
    purelkh(초보입니당) wrote:

    > 신상명세를 입력하는 중에 우편번호를 알고 동주소까지 자동으로 입력하는 프로그램을 짜려 합니다.

    > 1.우편번호를 모를때는 다른 폼을 띄어 검색을 한 뒤 그 폼에서 확인을 누르면 본 폼에 주소가 적히고 나머지 주소 에디트에 포커스가 맞혀지도록합니다.

    >

    > 2.우편번호를 알 경우에는 우편번호를 치고 엔터를 침과 동시에 주소가 자동으로 적히고 포커스가 나머지 주소 에디트에 맞혀지도록 하고 싶습니다.

    >

    > 여러번 시도해 봤지만 성공할 길이 없군요.

    > error가 나도 해결할 길을 찾을 수가 없어서요...

    > 어찌해야 할지~

    >

    > 방법을 자세히 알고 싶은데여~

    > 많은 도움 부탁드립니다.

    > 고수님들의 좋은 방법을 알고 싶어요^^



    우편번호를 모를경우(EditBox에 동명을 입력하고 버튼클릭시) 등

    이벤트는 알아서....



    with SQLzip do begin

    close;

    sql.clear;

    sql.add('select zip_no, zip_sido, zip_gungu, zip_dong from zipdb');

    sql.add('where zip_dong = :p_dong');

    parambyname('p_dong').asstring := edit1.text;

    open;

    edit2.text := fieldbyname('zip_no').asstring;

    edit3.text := fieldbyname('zip_sido').asstring + ''fieldbyname('zip_gungu').asstring

    + ''fieldbyname('zip_dong ').asstring;

    edit3.selstart := length(edit3.text) + 1;

    end;

  • Profile
    purelkh(초보입니당) 2001.05.22 03:10
    아폴론 wrote:

    > 우편번호를 모를경우(EditBox에 동명을 입력하고 버튼클릭시) 등

    > 이벤트는 알아서....

    >

    > with SQLzip do begin

    > close;

    > sql.clear;

    > sql.add('select zip_no, zip_sido, zip_gungu, zip_dong from zipdb');

    > sql.add('where zip_dong = :p_dong');

    > parambyname('p_dong').asstring := edit1.text;

    > open;

    > edit2.text := fieldbyname('zip_no').asstring;

    > edit3.text := fieldbyname('zip_sido').asstring + ''fieldbyname('zip_gungu').asstring

    > + ''fieldbyname('zip_dong ').asstring;

    > edit3.selstart := length(edit3.text) + 1;

    > end;



    넘 감사합니다.^^.

    근데 제가 기제하지 않은 내용이 있다는 걸 이제서야 알았슴다.

    그것도 가장 중요한 것을...



    우편번호검색을 한 폼에서만 사용하는 것이 나니라

    여러 폼에서 부르기때문에 직접적으로 한 폼의 edit으로 넣을 수가 없는 상황입니다.



    이런 문제점을 해결할 방법은 없을런지~



    답해 주셔서 정말 감사합니다.

    조금만 더 신경써주셔서,,,저의 답답함을 완전히 풀어주시면...

    참 염치도 없네요^^







  • Profile
    아폴론 2001.05.22 19:29


    우편번호가 필요한 폼이 1개이상 이라고 한다면

    폼1, 폼2 라고 할때 우편번호를 알고있는 경우와 모르고 있는경우....

    그럼먼저 우편번호검색폼을 하나 만들고 폼 Name을 정합니다.



    아래구문은 폼1 또는 폼2에서의 구문



    if key = vk_Return then begin

    if ac_zipno.text = '' then begin //우편번호가 없을시(모를경우)

    Searchzip := Tsearchzip.Create(self);

    searchzip.caption := '우편번호 조회프로그램';

    try

    searchzip.ShowModal;

    finally

    ac_zipno.text := searchzip.edit1.text;

    ac_addr1.text := searchzip.edit2.text;

    searchzip.free;

    end;

    end else //우편번호란에 무언가 입력되었을 시

    begin

    with DataMd.SQLzip do begin

    close;

    sql.clear;

    sql.add('select zip_no, zip_sido, zip_gungu, zip_dong from zipdb');

    sql.add('where zip_no = :p_zipno');

    parambyname('p_zipno').asstring := ac_zipno.text;

    open;

    if recordcount > 0 then begin

    edit2.text := fieldbyname('zip_sido').asstring + '' +

    fieldbyname('zip_gungu').asstring + '' +

    fieldbyname('zip_dong ').asstring;

    end else

    begin

    showmessage('우편번호를 확인하십시요.!');

    ac_zipno.SetFocus;

    Exit;

    end;

    end;

    end;

    edit.selstart := length(ac_edit.text) + 1;

    end;





    아래 구문은 우편번호 조회 폼을 뛰우고 에디트밗스에 동명을 입력하고 조회하고자

    하는 이벤트시.

    uses절에 폼1사용하겠다는 정의를 해주어야 겠죠



    with SQLzip do begin

    close;

    sql.clear;

    sql.add('select zip_no, zip_sido, zip_gungu, zip_dong from zipdb');

    sql.add('where zip_dong = :p_dong');

    parambyname('p_dong').asstring := edit3.text;

    open;

    end;

    //위 open에서 관련 주소가 나타나면 거기서 한 주소를 선택하고 마우스 클릭시

    이벤트에..

    edit1.text := SQLzip.fieldbyname('zip_no').asstring;

    edit2.text := SQLzip.fieldbyname('zip_sido').asstring + '' +

    SQLzip.fieldbyname('zip_gungu').asstring + '' +

    SQLzip.fieldbyname('zip_dong ').asstring;



    close; //조회폼 닫기



    폭잡한것 같은데 저는 요런식으로 합니다.

    로직이 정의 되면 간단합니다.

    폼1에서 또는 폼2에서 우편번호와 주소를 입력받을 EditBox이름을 같게 합니다.

    그런후 우편번호에 어떤 문자가 있으면 그 번호에 달린 주소를 찾고

    없으면 조회폼을 뛰우고 조회 합니다.

    초회폼에 에디트박스 2개(또는변수)를 비지블 폴스로 하고...



    에궁 도움이 되실려나?.. 웹프로그램이 영 진척이 안되네...쩝...