English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

http://specterglobe.myweb.hinet.net/zip32_9405.rar
郵遞區號 縣市   市區   路段   範圍
10079  台北市  中正區  三元街  單全
10068  台北市  中正區  大埔街  單 17號以上
10051  台北市  中正區  中山南路 單 3號以下

上面是從『中華郵政全球資訊網』下載的5碼郵遞區號查詢表(Excel格式)
設計一程式,Text1輸入地址後,秀出查出的5碼郵遞區號...
當然...秀出的答案越少越精準是這個題目的難點!
另外要克服的,如:數字全、半形、中文數字等轉換問題...
原始資料格式不限,要轉換成Mdb資料庫檔、Txt純文字檔均可!

2006-08-03 19:13:00 · 7 個解答 · 發問者 幽靈 5 in 電腦與網際網路 程式設計

johnber大呀,我是不太懂轉成unicode是如何 ?
但依題意,在比對資料時...
原始資料的輸入是沒有限定規則的哦~如
15號
15號
十五號
一五號
一十五號
二百○四號
二百零四號
二0四號
當然這是次要的啦!!我也在稍早前把這個問題解決了(感謝月島大提供思考方向)
剩下的判別及分析「範圍」欄位,才是小弟能力所不及的...
希望高手指引方向...

2006-08-06 21:01:33 · update #1

7 個解答

這個程式並非最好,因為只判斷縣市(全部比對)、市區(全部比對)、路段(部份比對)、範圍(未做比對),而且此程式是直接讀取 Excel 檔,所以在速度方面並非很理想。在表單中佈置三個元件:Address(TextBox), Search(CommandButton), List(ListBox),程式碼如下:Option ExplicitPrivate Sub List_Click()    Address.Text = List.TextEnd SubPrivate Sub Search_Click()    Dim myConn As Connection    Dim myRs As Recordset    Dim i As Integer    Dim myStr As String    Dim secation As Integer    Dim mySQL As String        On Error Resume Next        List.Clear    DoEvents    Set myConn = New Connection    Set myRs = New Recordset    myConn.CursorLocation = adUseClient    myConn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0; Data Source=I:\zip32_9405.xls; Extended Properties=Excel 8.0;"    For secation = 5 To 2 Step -1        mySQL = "Select * From [Sheet1$] Where Instr('" + Address.Text + "', 縣市) > 0 And Instr('" + Address.Text + "', Mid(路段, 1, " & secation & ")) > 0"        If InStr(Address.Text, "新竹市") = 0 And InStr(Address.Text, "嘉義市") = 0 Then            mySQL = mySQL + " And Instr('" + Address.Text + "', 市區) > 0"        End If        myRs.Open mySQL, myConn, adOpenStatic, adLockOptimistic        If Err.Number = 0 Then            While Not myRs.EOF                myStr = ""                For i = 0 To myRs.Fields.Count - 1                    myStr = myStr & myRs.Fields(i) & " "                Next                List.AddItem myStr                myRs.MoveNext            Wend        End If        myRs.Close        If List.ListCount > 0 Then Exit For    Next    myConn.Close    If List.ListCount = 0 Then List.AddItem "查無資料"End Sub

2006-08-14 11:54:34 補充:
專案>設定引用項目>將 Microsoft ActiveX Data Objects 2.0 Library 勾選即可。

2006-08-12 09:09:29 · answer #1 · answered by 世賢 7 · 0 0

Private Sub Form_Load()

Dim i As String
Dim a(2) As String
Dim e(2) As String

e(0) = "10079"
e(1) = "10068"
e(2) = "10051"
a(0) = "台北市  中正區  三元街  單全"
a(1) = "台北市  中正區  大埔街  單 17號以上"
a(2) = "台北市  中正區  中山南路 單 3號以下"

i = InputBox("地址?")

Dim w As Byte

For w = 0 To 2
If i = a(w) Then
MsgBox e(w)
Exit Sub
End If
Next w

MsgBox "無資料"

End Sub

2006-08-06 16:26:28 · answer #2 · answered by x32768 5 · 0 0

我曾在 Delphi 做過, 方法是先將地址字串轉為 unicode(在 Delphi 是 WideString), 然後再與郵局資料庫依序比對-縣市,鄉鎮區,路名,到此都簡單.

2006-08-05 16:34:19 補充:
重點在路之後,郵局資料庫有幾個規則,如全,單,雙...全找出來,然後逐字比對 巷,弄,門牌,落在哪個區間;轉成 unicode 目的在於將所有字轉為相同字元長度,就不用判斷其為全形或半形了,不過我不知VB有無 unicode 型別...

2006-08-05 12:29:17 · answer #3 · answered by 疼目職人 2 · 0 0

挺有意思的題目,在沒有限制使用者輸入方式的條件下去查詢資料..嗯!很有挑戰性,我也來想想XD,..月大我浮出來了!!

2006-08-04 10:33:38 · answer #4 · answered by W.J.S. 7 · 0 0

不是出考題啦! XD 算討論題吧...
小的目前雖然有幾種想法,但還是想聽聽各位大大的意見...

5碼郵遞區號表,上面有貼連結呀!可直接下載...
http://specterglobe.myweb.hinet.net/zip32_9405.rar
或者到中華郵政全球資訊網也載得到!
http://www.post.gov.tw/post/internet/down/index.jsp?ID=190108

2006-08-04 08:28:40 · answer #5 · answered by 幽靈 5 · 0 0

看起來好像是挑戰知識+vb版出沒者的題目嗎??
蠻有趣的題目~~
寫難一點 應該會扯到模糊和類神經
寫簡單一點的話....就是依照它的規律
寫出一系列的判斷法去區別開符合資料
我也來想一下作法好了XD

題外話.....
5碼郵遞區號查詢表 <~這東西哪邊找得到...沒有實體檔沒辦法作判斷啊XD

2006-08-04 07:30:18 · answer #6 · answered by ? 5 · 0 0

這是... 出考題嗎?

2006-08-04 06:17:20 · answer #7 · answered by 樂財 5 · 0 0

fedest.com, questions and answers