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.
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..
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)
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
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.