Vraag : VBA om lijstverbindingen aan een nieuwe plaats te wijzigen

Hallo allen,

I am code proberen te gebruiken om de verbindingen van verscheidene lijsten in een gegevensbestand te wijzigen.

The- Gegevensbestand een aantal lokale lijsten en een paar met elkaar verbonden degenen. De gebruikers downloaden hun eigen exemplaar van het systeem en wanneer zij het voor het eerst in werking stellen krijgen zij het startscherm op eerste gebruik dat hen om door een opstelling process.

First in lijn vraagt te gaan opnieuw verbindt de weinig verbonden lijsten.  De vorm heeft een standaardplaats maar een gebruiker kan de netwerkaandrijving in kaart brengen als wat zij willen en met een verschillende aandrijving afhankelijk van hun location.

So op de vorm kunnen moeten verbinden een gebied met de standaardplaats, maar een knoop is om voor een terugkeer een gegevensbestand in een verschillende plaats te doorbladeren. Eens gedaan de volgende eenvoudige code runs.

1:
2:
3:
4:
Sub ChangeLink ()    
    CurrentDb.TableDefs („tbl_SystemLog“). Verbind =“; DATABASE= " & Me.txt Achterste deel
    CurrentDb.TableDefs („tbl_SystemLog“) .RefreshLink
Sub van het eind
het 


Where Me.txt Achterste deel is de aandrijvingskaart d.w.z. „C:\My Documents\db.mdb "

This schijnt niet te werken.  Als ik de lijstenverbinding before and after dit zuiver is de aandrijvingsplaats het zelfde ondanks het feit het zou moeten veranderd hebben.  

As een andere test, als ik een ander volledig willekeurig gegevensbestand kies dat niet de lijsten bevat wij zijn zoekend krijg ik geen fouten of om het even wat….

Can iedereen ziet wat omhoog met dit zou kunnen zijn?

Cheers
DeZZar

Antwoord : VBA om lijstverbindingen aan een nieuwe plaats te wijzigen

> Bij de kern van beide verbinding is de functies precies de zelfde procedure die ik. hierboven heb gepost.

Nr, omdat u CurrentDb veelvoudige tijden roept waar u het eens slechts zou moeten roepen.
Hier is die hoe voor het vastmaken van lijsten in een achterste deeldossier in de zelfde omslag wordt gevestigd zoals frontend.
U kunt het gemakkelijk wijzigen gebruikend de weg voor het achterste deel als parameter.

/gustav
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
  Schemerige dbs als DAO.Database
  Schemerige tdf als DAO.TableDef
  
  Schemerige strSourceTableName  als Koord
  Schemerige strCurrentPath      als Koord
  Schemerige strAttachPath       als Koord
  Schemerige strFrontendPath     als Koord
  Schemerige strBackendPath      als Koord
  Schemerige strConnect          als Koord
  
  Op Fout GoTo Err_GentilknytData
  
  Reeks dbs = CurrentDb
  
  strFrontendPath = dbs. Naam
  strCurrentPath = Medio (strFrontendPath, 1, InStrRev (strFrontendPath, „\“) - 1)

  Voor Elke tdf in dbs.TableDefs
    strSourceTableName = tdf.SourceTableName
    Als Len (strSourceTableName) > 0 toen
      strBackendPath = verdeel (tdf. Verbind, „=“) (1)
      strAttachPath = Medio (strBackendPath, 1, InStrRev (strBackendPath, „\“) - 1)
      Als StrComp (strCurrentPath, strAttachPath, vbTextCompare) <> 0 toen
        strConnect = „; DATABASE=“ & strCurrentPath &“ \ AktivitetData.mdb "
        tdf. Verbind = strConnect
        tdf.RefreshLink
      Beëindig als
    Beëindig als
  Daarna

  Reeks tdf = niets
  Reeks dbs = niets
  
Andere oplossingen  
 
programming4us programming4us