29. juli 2003 - 12:17Der er
9 kommentarer og 1 løsning
Kopiering af database (VBA)
Er det muligt i en Access-database, at lave en funktion, som kopierer den åbne database i 4 eksemplarer (så der er 5 i alt), navngiver disse samtidig og indsætter en post i hver enkelt database, som er unik for den database (en sti til der hvor selve dataene ligger, de nævnte databaser er front-end's).
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Har ikke lige en Access ved hånden; men prøv noget i stil med: 1) Tilføj et modul 2) Tools | References: tilføj MS scripting engine 3) Lav en sub og kopier filen vha FileSystemObject 4) Åbn de nye mdb'er med OpenDB og indsæt
Den foerste del med at distrbuere frontends kan goeres vha en normal Filecopy-kommando.Antager at du har stierne liggende i en streng i strPaths(1-4)
set db1 = UNCSti\Mastercopy.mdb
For i = 1 to 4 Filecopy db1, strPaths(i) & "Databasecopy.mdb" next i
Jeg har selv arbejdet med scripts der forbinder front-ends med en backend. Jeg sletter alle tidligere linkede tabeller, og genopretter dem istedet vha. Dim dbs as database, db2 as database set dbs = currentdb set db2 = opendatabase(UNCsti\Backend.mdb)
For i = 1 To antaltabeller dbs.Tabeldefs.Delete strTblNames(i) DoCmd.TransferDatabase acLink, "Microsoft Access", db2.Name, acTable, strTblNames(i), strTblNames(i) Next i (Hvor tabelnaqvne ligger is strTblNames()) Der er dog et par ting du skal vaere forsigtig med. 1)Du kan teoretisk set bruge For each tabledef in db1 docmd.transfer...... Men der er en del skjulte tabeller i Access hvor du kan faa problemer med rettigheder og om de er i brug mens du proever at overfoere. 2) Afhaengigt af hvordan dit netvaerk er sat op kan mapping at netvaerksdrev variere, hvorfor det er en god ide altid at bruge UNC stier.
preov at laeve det om til Set db1 = CurrentDb Dim strpaths(1 To 4) As String strpaths(1) = "C:\db\1\Databasecopy.mdb" strpaths(2) = "C:\db\2\Databasecopy.mdb" strpaths(3) = "C:\db\3\Databasecopy.mdb" strpaths(4) = "C:\db\4\Databasecopy.mdb"
Prøv med "Application.CodeProject.FullName" istedet for db1. Det virker under Access2k. Mener noget tilsvarende kunne findes som property på Application-objektet i Access97
Aaarh hvis du bare skriver db1.name i file-copy kommandoen skulle det virke!!
Synes godt om
Ny brugerNybegynder
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.