Avatar billede jib01 Nybegynder
18. marts 2004 - 14:00 Der er 11 kommentarer og
3 løsninger

Import af tal via importspec. til tabel, mister decimalerne

Ved import at txt-fil (ASCII) med importspecifikation, hvor tallet er defineret (i specifikationen) som langt heltal (ej muligt at def. som decimal), viser databasen ikke decimalerne. Importeret tal 123,45 vises som 12345,00 i database, hvor felt er defineret som decimal med standard format med 2 decimaler og automatisk "antal decimaler".
Jeg har US-ASCII som format på importfilen og i importspecifikationen.
Hvordan får jeg importeret tallet, så det er lagret og vises som 123,45?
Avatar billede mugs Novice
18. marts 2004 - 14:52 #1
Du skriver:
Importeret tal 123,45 vises som 12345,00

D.v.s at du ikke mister decimalerne. Det er blot kommaet der står forkert. Når du skriver "vises som", mener du så formatet og er data korrekt lagret?
Avatar billede jib01 Nybegynder
18. marts 2004 - 14:56 #2
Enig, jeg mister ikke decimaler. Jeg er usikker på om access har lagret dem med decimaler eller om de bare vises forkert. Mistænker dog at de er lagret uden decimaler ved importen.
Avatar billede jib01 Nybegynder
18. marts 2004 - 15:14 #3
I værste fald må jeg dividere med 100, efter lagring i database.
Avatar billede jensen363 Forsker
18. marts 2004 - 15:16 #4
Kan du sende txt-filen til : ose@post.dk

Så kan jeg forsøge ... Hvilken Access-version benytter du ?
Avatar billede jib01 Nybegynder
18. marts 2004 - 15:27 #5
Access 2002 SP1. Jeg sender filen! Hvortil?
Avatar billede jensen363 Forsker
18. marts 2004 - 15:28 #6
ose@post.dk
Avatar billede jensen363 Forsker
18. marts 2004 - 15:46 #7
Hej igen ...

Enten er det mig, eller også den fil som du har sendt ... der er da ikke et eneste decimaltal i tekst-filen ????
Avatar billede jib01 Nybegynder
18. marts 2004 - 15:50 #8
Det er såvidt jeg ved ikke muligt at angive decmaler i en Ascii-fil.
Det er muligt at Access ved import ikke kan simulere at et felt har 2 decimaler.
Avatar billede jensen363 Forsker
18. marts 2004 - 15:52 #9
Så er det jo nok derfor .... ;)
Avatar billede jensen363 Forsker
18. marts 2004 - 16:05 #10
Det er i hvert fald ikke Access som fejler. Problemet ligger i tekst-filen. Så med mindre du har mulighed for at få den leveret med decimaler, er der kun mulighed for at beregne tallet ( /100 ) ... så har du kun det problem, at du må forudsætte at de sidste 2 cifre i hvert tal reelt er decimaltallet ...

Jeg ville lave en funktion til at klare opgaven ... a'la .. ( Quick ´n Dirty )

Function Import()
               
DoCmd.SetWarnings False
               
    DoCmd.RunSQL "DELETE * FROM TestImport"
   
    ImportFolder = DLookup("[ImportFil]", "tblFilplacering", "[JobID] = 1")
             
    'Behandler Importfil
    DoCmd.TransferText acImportDelim, "", "TestImport", ImportFolder & "test-fil.txt", False, ""
     
    DoCmd.RunSQL "UPDATE TestImport SET TestImport.F7 = [F7]/100, TestImport.F8 = [F8]/100;"
 
DoCmd.SetWarnings True

End Function
Avatar billede hekla Nybegynder
18. marts 2004 - 17:09 #11
Dit problem er sandsynligvis, at du bruger komma og ikke punktum som decimalseparator i en US-ASCII fil.
Avatar billede hekla Nybegynder
18. marts 2004 - 17:12 #12
Tjek at der under importen er valgt komma under Avanceret.../Decimaltegn
Avatar billede jib01 Nybegynder
18. marts 2004 - 18:39 #13
Til Hekla:
Jeg har prøvet med komma (123,45) i inputfil, men importspecifikationen laver 123,45 om til 123,00. Den kan altså godt genkende kommaet under importen. Men det er sandsynligvis fordi importspecifikationerne ikke kan definere et felt som decimal. Så jeg har måtte vælge et heltal. Og siden må jeg så update (/100). Problemet er at jeg arbejder med 3mio. rækker, så disse ting er tunge.
Avatar billede hekla Nybegynder
18. marts 2004 - 23:58 #14
Prøv at bruge reelt tal i stedet for heltal.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester