Gå til innhold

LØST: MS: Access. Hjelp til et problem


Gjest Slettet+19873487

Anbefalte innlegg

Gjest Slettet+19873487

Hei

 

Jeg har fått et problem som jeg ikke vet hvordan jeg skal løse. Håper noen her kan hjelpe meg med den.

 

Jeg har en tekst-fil som det står en del informasjon i. Jeg ville hatt denne informasjonen inn i en database i MS Access. Det skal nevnes at jeg ikke har drevet noe med MS Access eller databaser før, men de som vil ha informasjonen skal ha det i MS Access. Jeg har fått i oppgave å løse problemet, men ettersom jeg ikke har brukt MS Access før, så skulle jeg trengt litt hjelp.

 

Her er litt opplysninger:

 

Tekst-filen har ca 250 000 linjer.

Den er bygd opp med en header helt først, så kommer det 144 tall, så er det en ny header. (Om man kan kalle det for det.)

 

Den ser omtrent sånn ut:

 

HIE(JAN) V2.0 NOV06 60 .00N 95 .00E 5.00 12 12         (dette er linje 1)
-89                      (kaller disse tallene for HIE)
-98
-12
23
44
76

...mange HIE...

HIE(JAN) V2.0 NOV06 60 .00N 94 .00E 5.00 12 12         (dette er linje 146)

... mange HIE...

HIE(JAN) V2.0 NOV06 60 .00N 43 .00E 5.00 12 12         (dette er linje 1)

osv.

 

Jeg vil altså ha et eller annet som tar tegn 22-23 i headeren og skriver det til et felt som heter Latitude og tegn 31-32 til et felt som heter Longitude. Jeg vil også ha alle de andre tallene til å bli skrevet til et tredje felt.

 

Hvis man deler opp headeren:

HIE(JAN)         =  hvilken måned, i dette tilfellet januar
V2.0                = ikke av interesse
NOV06             = ikke av interesse
72 .00N            = Latitude, .00 betyr antall minutter i "cellen"
44 .00E            = Longitude, .00 betyr antall minutter i "cellen"
5.00                = Angir at det er 5 og 5 minutter. Så Latitude vil bli 72 .05, 72 .10 osv.
12                   = At det er 12 5-minuttere per latitude
12                   = At det er 12 5-minuttere per lonitude

 

En celle består da altså av 144 mindre ruter. 12x12 = 144

 

Håper det kunne gjøre det litt klarere. Målet er da å få en tabell som viser

 

ID (autonummer)  |   Latitude   |    Longitude   |    HIE
0                              72.00           44.00              -89
1                              72.00           44.05              -98
..
12                             72.05          45.00               12
...
24                             72.10          45.00               18
...
144                           72.55          45.55                20             

 

 

 

På forhånd takk for alle svar, håper det er noen der ute som kan hjelpe til. Enten ved en guide til hvordan jeg løser det, et lite program i c/c++/java eller en makro som sorterer det ut i en ny tekst-fil som kan brukes til importering til MS Access.

 

Bare spør om du trenger mer informasjon (kan hende jeg ikke svarer i helgen)

 

Ben

Endret av Slettet+19873487
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+19873487

Jeg har klart å komme frem til en løsning på problemet nå. Et lite program i C gjorde susen. En liten oversikt over hva som programmet gjør:

 

- Åpner filen

- En While som kjører så lenge den ikke er i slutten av filen.

- Leser headeren og gjør om det den leser til long ints.

Skjult tekst: (Marker innholdet i feltet for å se teksten):

Headeren:
HIE(JAN) V2.0 NOV06 60 .00N 95 .00E 5.00 12 12
                           
/* i while */
latD = strtol(&buffer[20], next, 10);
latM = strtol(&buffer[23], next, 10);
...

- Kjører en for-løkke i en annen for-løkke for å lese og skrive ut tallene i en kommaseparert fil.

- Stenger filen

 

Videre importerte jeg den kommaseparerte filen til MS Access i en ny tabell og problemet var løst.

Endret av Slettet+19873487
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...