Avatar billede overchord Nybegynder
21. juli 2003 - 13:51 Der er 11 kommentarer og
1 løsning

Fjerne gamle - og linke nye tabeller/ Access 97

Hejsa

Jeg har en db delt i to: frontend og backend. frontenden bliver opdateret paa en jaevnlig basis hvor brugeren skal gemme en nyere version paa deres egen pc. Den stoerste forvirring ved en ny version er altid at faa linket tabellerne til dem paa serveren. Normalt sletter jeg bare alle de gamle links (eeeen af gangen...gab) og opretter de nye manuelt. Men som vi faar flere brugere bliver dette ikke en holdbar loesning i laengden.
Derfor lavede jeg et lille modul som saadan set bare skulle linke tabellerne paa ny. Jeg hopppede lige over den med at slette de gamle links da jeg ikke helt har faaet kigget paa det og hvordan man fikser den - men hvis nogen har en loesning paa den... :-)
Men hovedproblemet er naar jeg koerer denne sub:

Sub ClearAndImport()

Dim dbs As Database
Set dbs = CurrentDb
Dim db2 As Database
Set db2 = OpenDatabase("UNCStiNormaltHer\LochEwe_Base.mdb")

Dim tdf As TableDef

For Each tdf In db2.TableDefs
    DoCmd.TransferDatabase acLink, "Microsoft Access", db2.Name, acTable, tdf.Name, dbs.Name
Next
End Sub

Den linker fint til db2 via UNC stien, men jeg faar altid fejl 3125:
The database engine can't find <Sti + navn af dbs>. Make sure it is a valid parameter or alias name, that it doesn't include invalid characters or punctuation, and that the name isn't too long. (Error 3125)

Jeg chekkede lidt rundt paa nettet og fandt en artikel der snakker om samme problem via sql server (http://www.advisor.com/doc/07864), og at loesningen er at stien + tabel navn altid skal vaere kortere end 64 karakterer. Det har jeg lidt svaert ved at tro kan vaere rigtigt, men selv naar jeg har proevet med en sti paa mindre en 10 karakterer virker skidtet ikke. Har i nogen loesninger liggende??

Paa forhaand tak ;-)
Avatar billede overchord Nybegynder
21. juli 2003 - 14:06 #1
Skal lige sige at modulet ligger i dbs selvf.
Avatar billede terry Ekspert
21. juli 2003 - 14:14 #2
there is quite a bit of help under Microsoft Support. I found this article which demonstrates refreshing linked tables. Maybe it can be modified to suit your needs.

http://support.microsoft.com/default.aspx?scid=kb;en-us;209862
Avatar billede terry Ekspert
21. juli 2003 - 14:17 #3
I normally keep table information in th eregistry where I have a routine (not for sale) which loops through each table in the registry and refreshes the link. This allows me to move the dB where I want, which is great for testing.
Avatar billede overchord Nybegynder
21. juli 2003 - 14:17 #4
OK ny opdatering - jeg har faktisk faaet det meste til at virke. Kommandoen transferdatabase havde en fejl idet desitation ikke er databasen men tabelnavnet! Saa den nye linje ser saadan ud:

DoCmd.TransferDatabase acLink, "Microsoft Access", db2.Name, acTable, tdf.Name, tdf.Name

MEN - nyt problem: Nu proever den at sende alle mulige ting med. Ikke kun de "normale" tabeller, men alle de skjulte ogsaa (f.eks MsysModules, MsysQueries, MsysObjects, osv).
Dette skal jeg nu undgaa, men hvordan goer jeg det?? (Brugerne har ikke tilladelse til at kopiere disse filer)
Avatar billede overchord Nybegynder
21. juli 2003 - 14:18 #5
Terry -> Due to the structure of the network I am running this on i do not have access to registries on ANY pc - including my own :-(
Avatar billede terry Ekspert
21. juli 2003 - 14:19 #6
Avatar billede terry Ekspert
21. juli 2003 - 14:25 #7
OK, then this information can be kept in a tbale in the frontend db
Avatar billede terry Ekspert
21. juli 2003 - 14:29 #8
Avatar billede overchord Nybegynder
21. juli 2003 - 14:31 #10
ok - i think i might resolve it by storing the specific tablenames in an array in the module. A bit simplistic - but the main structure is not going to change - so the number of tables is fixed, and its only about 20 of them.
Will get back info on how it went :-) & points of course
Avatar billede overchord Nybegynder
21. juli 2003 - 15:18 #11
Jeps Det virkede! Jeg har bare lagt tablenavn i et array som indeholder navnene paa de tabeller der skal overfoeres. Saa istedet for at laves et loop med
For each tdf ....
bliver loopet bare
for i = 1 to AntalTabeller
  DoCmd.TransferDatabase acLink, "Microsoft Access", db2.Name, acTable, strTblNavn(i), strTblNavn(i)
next i

Point til Terry da jeg fik ideen delvist fra registry-princippet og dels fra en af artiklerne!
Avatar billede terry Ekspert
21. juli 2003 - 17:57 #12
tak :o)
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