Avatar billede rasta123 Nybegynder
19. december 2006 - 10:54 Der er 15 kommentarer og
1 løsning

Ændring af datatyper

Hej.. Jeg har to tabeller med ialt ca. 200 kolonner.

Ca. 190 af dem, skal have datatypen tal - reel tal, hvor de pt har tal - langt heltal.

Jeg ved det vil tage mig en halv dag at ændre det manualt gennem designvisning..

Er der en nemmere måde at gøre det på?

På forhånd tak
Avatar billede supertekst Ekspert
19. december 2006 - 11:19 #1
En makro skulle nok kunne klare dette - men hvilke felter skal ændres? De skal jo kunne identificeres!
Avatar billede jensen363 Forsker
19. december 2006 - 11:36 #2
Alternativt :

Opret en ny tom database, og eksporter indholdet dertil
Avatar billede mugs Novice
19. december 2006 - 11:46 #3
Først tager du en kopi af databasen som back up og lægger denn laaangt væk.

Men hvorfor dog kun nogle af posterne. Lav dem alle om til reel tal. Ellers får du et felt mere i tabellen og får "delt de samme data på 2 felter". Og det er ikke smart.

Lav dit nye felt som reel tal, og opdater dem med værdier fra det gamle felt. Slet herefter det gamle felt og omdøb det nye til samme navn, som det gamle havde.
Avatar billede jensen363 Forsker
19. december 2006 - 12:01 #4
Mugs > Det svarer da lidt til mit forslag ik´ :o), omend min version er noget hurtigere
Avatar billede mugs Novice
19. december 2006 - 12:44 #5
jensen > Jo det kan du da hasve ret i. Ikke altid jeg læser tidligere indlæg.
rasta > Se venligst bort fra mit svar.
Avatar billede jensen363 Forsker
19. december 2006 - 12:46 #6
Mugs > No problemo - Merry Xmas
Avatar billede rasta123 Nybegynder
19. december 2006 - 13:12 #7
Problemet ligger ikke i, at jeg vil skåne mine data, da databasen ikke indeholder data endnu.

Men jeg har lige oprettet den og og alle datatyperne skal nu ændres til reelle tal.. Så det er fordi at selve definitionsarbejdet vil tage for lang tid, hvis jeg skal ved hvert eneste felt gøre det..
Avatar billede jensen363 Forsker
19. december 2006 - 13:26 #8
Så forståe jeg ikke problemet ... det tager da ikke ½ dag at rette igennem, når du ikke har nogle data i ... det kræver lidt gymnastik med musen 190 gange a´ 2 sek, dvs. max 5 minutter :o)
Avatar billede mugs Novice
19. december 2006 - 14:19 #9
I lige måde jensen - Hvordan går det med testdb og logikken?
Avatar billede jensen363 Forsker
19. december 2006 - 14:27 #10
Jeg har slet ikke haft tid til at se på det endnu ... det er også kun en mega-opgave som vil tage det meste af næste år jeg har kastet mig ud i :o)
Avatar billede supertekst Ekspert
19. december 2006 - 18:08 #11
Opret en tom tabel med et felt identisk med oprindelige - i modellen kaldet tabel2
DAO 3.6 referencen aktiveres.
Koden indsættes i et Word-dokument - VBA: ThisDocument:

Dim xsti
Dim db, feltnr
Sub skiftDatatype()                                'Erstatter ALLE tal-felter (Langt heltal) til reelt
Dim tdef As TableDef, tdefNy As TableDef

    xsti = ActiveDocument.Path
    If Right(xsti, 1) <> "\" Then
        xsti = xsti + "\"
    End If
   
    Set db = OpenDatabase(xsti + "SkiftDatatype.mdb")
    Set tdef = db.TableDefs("tabel1")                      'oprindelige tabel
    Set tdefNy = db.TableDefs("tabel2")                    'kopi-tabel
   
    feltnr = 0
   
    For Each felt In tdef.Fields
        fn = felt.Name      'feltNavn
        fd = felt.Type      'feltType (10=tekst, 4=langt heltal,6=reelt tal)
        fs = felt.Size      'feltStørrelse
       
        If feltnr > 0 Then  '1. felt kopieres ikke - betingelse for tabellen kan eksistere (minimum eet felt)
            With tdefNy
                If fd = 4 Then
                    .Fields.Append .CreateField(fn, 6, fs)  'Tal = reelt indsættes
                Else
                    .Fields.Append .CreateField(fn, fd, fs) 'direkte kopi
                End If
            End With
        End If
        feltnr = feltnr + 1
    Next felt
   
    db.Close
End Sub
Avatar billede mugs Novice
19. december 2006 - 18:11 #12
Hvorfor skal vi over i Word?
Avatar billede supertekst Ekspert
19. december 2006 - 18:15 #13
Havde koden deri fra andet system...
Avatar billede mugs Novice
19. december 2006 - 18:22 #14
Lide mere simplificeret:

DoCmd.RunSQL "Alter Table DIN TABEL add FELTNAVN long"
Avatar billede rasta123 Nybegynder
20. december 2006 - 14:16 #15
tak for det supertekst.. Smid et svar!
Avatar billede supertekst Ekspert
20. december 2006 - 14:27 #16
Selv tak - svaret er her...
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