NisseMannH4X Skrevet 21. mai 2006 Del Skrevet 21. mai 2006 Trenger en liste med alle norges postnummer og stedene de tilhører. Skal ha heldagsprøve i vb i morra.P Skal bruke de til et program der mans kal registrer kunder. Istedefor å skrive inn begge deler tenkte jeg at man kan skrive inn post nummer og så blir stedsnavnet funnet i en liste og skrevet ut. Hadde vært fint hvis noen hadde en liste og kanksje en kodensutt til hvordan jeg skal gjøre dette.. På forhånd takk Lenke til kommentar
enden Skrevet 21. mai 2006 Del Skrevet 21. mai 2006 Husker jeg ikke helt feil så ligger det ute på posten.no, men jeg finner det ikke i slengen Lenke til kommentar
NisseMannH4X Skrevet 21. mai 2006 Forfatter Del Skrevet 21. mai 2006 Har nå funnet en liste og den ser sånn ut: 1006 OSLO1007 OSLO 1008 OSLO 1009 OSLO 1010 OSLO 1011 OSLO 1020 OSLO 1030 OSLO 1040 OSLO 1050 OSLO 1051 OSLO 1052 OSLO 1053 OSLO 1054 OSLO Men hvordan skal jeg kunne bruke denne? Jeg har ikke så mye peiling på vb, men må vel se noe noe lignende dette ut hvis jeg skal kunne hente det ut: Dim postnr(A) As IntegerDim poststed As String A = A + 1 1000(1) = "OSLO" 1001(2) = "OSLO" Men hvordna skal jeg kunne gjøre om 10000 linjer slik jeg ønsker det? Lenke til kommentar
aadnk Skrevet 21. mai 2006 Del Skrevet 21. mai 2006 Du bør nok legge alle disse postnumrene i en ekstern fil som du laster inn dynamisk i programmet, og ikke «hard-code» informasjonen - dvs. skrive alle linjene direkte inn i programkoden. For å laste inn en fil med det oppsettet (hvor fant du filen forresten?), kan du muligens benytte denne koden: ' En array med alle poststedene/postnummerenePrivate ZipCodes() As String ' Laster inn en fil som en array segmentert etter angitt atskillesestegn Public Function LoadFileArray(sFile As String, Delimiter As String) As Variant Dim Free As Long, sBuffer As String ' Hent et ledig filnummer Free = FreeFile ' Åpne fil binarisk Open sFile For Binary As #Free ' Alloker temporær streng sBuffer = Space(LOF(Free)) ' Last inn hele filen etter strengens størrelse Get #Free, , sBuffer ' Lukk fil Close #Free ' Returner fil som array LoadFileArray = Split(sBuffer, Delimiter) End Function ' Laster inn arrayen etter en angitt fil Public Sub LoadZIPCodes(refArray() As String, sFile As String) Dim aLines() As String, Tell As Long, lngNumber As Long ' Den enkleste måten blir vel å allokere en array med alle mulige postnumre ReDim ZipCodes(1000 To 9999) ' Først, la oss laste inn hele filen som en streng-array aLines = LoadFileArray(sFile, vbNewLine) ' Dernest, del opp hver linje slik at vi kan ekstraktere postnummer og poststed For Tell = LBound(aLines) To UBound(aLines) ' Først, finn postnummeret lngNumber = Mid(aLines(Tell), 1, 4) ' Denne er enkel. Postnummeret er de fire første karakterer i hver linje. ' Deretter, sett hvilken by/kommune dette postnummeret tilhører ZipCodes(lngNumber) = Mid(aLines(Tell), FindLetter(5, aLines(Tell))) Next End Sub ' Søk etter en bokstav i en streng. Returnerer posisjonen til bokstaven om funnet. Public Function FindLetter(ByVal Start As Long, Text As String) As Long Dim Tell As Long, curChar As String ' Let gjennom hele strengen For Tell = Start To Len(Text) ' Hent karakteren på denne posisjonen curChar = Mid(Text, Tell, 1) ' Se om denne karakteren er en bokstav If LCase(curChar) <> UCase(curChar) Then ' Returner posisjonen til denne karakteren FindLetter = Tell ' Vi er ferdige med søkingen Exit Function End If Next ' Dessverre, ingen bokstav funnet. FindLetter = -1 End Function For å laste inn denne arrayen, bruker du følgende kode (sett den i Form_Load): LoadZIPCodes ZipCodes, "C:\Database.txt" Deretter er det ikke verre enn å kalle følgende linje for å hente ut et poststed etter postnummer: MsgBox ZipCodes(1006) Kanskje er det bedre å bruke en Access-database? Lenke til kommentar
NisseMannH4X Skrevet 21. mai 2006 Forfatter Del Skrevet 21. mai 2006 Takk for bra svar:) Får type mismatch på: lngNumber = Mid(aLines(Tell), 1, 4) ' Denne er enkel. Postnummeret er de fire første karakterer i hver linje. Lenke til kommentar
aadnk Skrevet 21. mai 2006 Del Skrevet 21. mai 2006 Kan du linke til hvor du fant databasen? Lenke til kommentar
aadnk Skrevet 21. mai 2006 Del Skrevet 21. mai 2006 (endret) Hm, jeg har undersøkt saken litt mer nøye, og det er nok mulig du må erstatte ReDim-linjen med følgende: ReDim ZipCodes(9999) I tillegg har jeg inkludert en databasefil som burde fungere. Postnumre.zip Endret 21. mai 2006 av aadnk Lenke til kommentar
NisseMannH4X Skrevet 23. mai 2006 Forfatter Del Skrevet 23. mai 2006 Funker som bare det! Lenke til kommentar
vikingen1 Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 Nå er dette kanskje ikke så veldig til hjelp men her ligger det linker til alle postnummere. Denne filen er spesielt godt egnet for databaser og applikasjoner som benytter postnummer. Filnavn : tilbud5 Der ligger også oversikt over postnummere med bruksområde, oversikt over endringer og oversikt over alle nye postnummere. Den oversikten jeg linket til er ikke helt lik den du har lagt ut aadnk Lenke til kommentar
aadnk Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 Nei, men jeg brukte faktisk informasjonen i filen du linket til. Jeg lagde nemlig et skript for å konvertere databasen til samme format som NisseMannH4X gav eksempel til. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå