VB6 구 프로그램에서 주소검색을 수동으로 우체국 DB 를 다운받아서 업데이트 해서 쓰는 환경이었다.
매번 우체국에서 자주 업데이트를 해야 하는 난감한 상황.
웹에는 이미 다음 우편번호 검색 API 를 사용 중이어서
이놈을 어떻게 하면 쓸수 있을까 고민해 보았다.
1. 부모폼.
Form1
Private Sub Text1_DblClick()
Set daumZipSearch.addr4 = Text1
daumZipSearch.Show ' form2 를 연다.
End Sub
Public addr4 As TextBox '검색 동 /도로명 /빌딩명 받는 부분...
Private Sub Command1_Click() ' 결과를 부모폼에 반영..
Dim zipcode3 As String
Dim addr3 As String
Dim sndPri3 As String
' asp 문서에서 값을 받아옴..
zipcode3 = WebBrowser1.Document.getElementsByName("zipcode")(0).value
addr3 = WebBrowser1.Document.getElementsByName("addr1")(0).value
sndPri3 = WebBrowser1.Document.getElementsByName("sndPri")(0).value
frmMebOrd.txtRcvZip = zipcode3
frmMebOrd.txtRcvAdr1 = addr3
frmMebOrd.txtDosun = sndPri3
Me.Hide
End Sub
Private Sub Form_Load() '웹 API 페이지 호출 ..
Me.hwnd = True
Me.Width = 5325
Me.Height = 5400
Me.Caption = "Mini browser"
With WebBrowser1
.Visible = True
' .Width = 0
' .Height = 0
.Top = 600
.Left = 240
End With
WebBrowser1.Navigate "http://xxx.xxx.com/api/daumapi.asp?q=" & addr4.Text ' 검색어 전달...
End Sub
3. html, asp API 문서 ..
<!--autoload=false 파라미터를 이용하여 자동으로 로딩되는 것을 막습니다.-->
<script src="http://dmaps.daum.net/map_js_init/postcode.v2.js?autoload=true"></script>
<script>
//load함수를 이용하여 core스크립트의 로딩이 완료된 후, 우편번호 서비스를 실행합니다.
daum.postcode.load(function(){
new daum.Postcode({
oncomplete: function(data) {
// 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분입니다.
// 예제를 참고하여 다양한 활용법을 확인해 보세요.
// 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
// 도로명 주소의 노출 규칙에 따라 주소를 조합한다.
// 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
var fullRoadAddr = data.roadAddress; // 도로명 주소 변수
var extraRoadAddr = ''; // 도로명 조합형 주소 변수
// 법정동명이 있을 경우 추가한다. (법정리는 제외)
// 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다.
if(data.bname !== '' && /[동|로|가]$/g.test(data.bname)){
extraRoadAddr += data.bname;
}
// 건물명이 있고, 공동주택일 경우 추가한다.
if(data.buildingName !== '' && data.apartment === 'Y'){
extraRoadAddr += (extraRoadAddr !== '' ? ', ' + data.buildingName : data.buildingName);
}
// 도로명, 지번 조합형 주소가 있을 경우, 괄호까지 추가한 최종 문자열을 만든다.
if(extraRoadAddr !== ''){
extraRoadAddr = ' (' + extraRoadAddr + ')';
}
// 도로명, 지번 주소의 유무에 따라 해당 조합형 주소를 추가한다.
if(fullRoadAddr !== ''){
fullRoadAddr += extraRoadAddr;
}
// 우편번호와 주소 정보를 해당 필드에 넣는다.
document.getElementById('zipcode').value = data.zonecode; //5자리 새우편번호 사용
document.getElementById('addr1').value = fullRoadAddr;
}
}).open({
popupName: 'postcodePopup',
q: '<%=request("q")%>'}
);
});
</script>
<input type='text' name='zipcode' id="zipcode">
<input type='text' name='addr1' id="addr1">
순서는..
1. 1번폼에서
2. 2번폼 호출 --> 웹페이지 로딩 --> 다음 주소검색 호출 -->검색 선택 --> 폼에 값 저장.. --> 반영 클릭.
3. 1번폼에서 값 전달 받음.
'Developer > VB6' 카테고리의 다른 글
다른 폼 로드, 폼 매개변수 넘기기 (0) | 2016.07.26 |
---|