Pfad einer Tabellenverknüpfung
Ich habe bei meiner Facharbeit noch ein weiteres Problem
und zwar hab ich eine Excel- Tabelle aus der per Import Daten geholt werden
allerdings soll ein Lehrer die Daten später verwenden
daher läuft alles über einen Button
das Problem hierbei ist, dass als Pfad wenn man auf durchsuchen im verknüpfungsmanager etc geht da H://Eigene Dateien..... steht
kann man irgendwie auch simpel als Verknüpfung einfach den Tabellennamen.xls haben wenn die im selben Verzeichnis is und wenn ja wie stellt man das ein
2. man kann in einer zu importierenden Tabelle keien Forneln eingeben denn dann geht das nimmer mitter Anfügeabfrage
kann man das auch iwie anders regeln das das geht?
danke im voraus für eure Antworten
Antwort schreiben
Antwort 1 von Springmaus vom 31.05.2019, 00:15 Options
wenn die Datei im selben ordner ist kannst du den Pfad der currentdb auslesen mit
CurrentDb.NAME ist der Datenbankname mit dem gesamten Pfad.
Mit dem folgenden Code kannst Du den aktuellen Pfad ermitteln:
Dim strDateiname As String
Dim strCurrentPath As String
Dim i As Integer
strDateiname = CurrentDb.NAME
i = Len(strDateiname)
' Den Pfad durchsuchen nach dem letzten Backslash
Do Until MID$(strDateiname, i, 1) = Chr$(92)
i = i - 1
Loop
' Rest zurueckgeben ohne Ende-Backslash
strCurrentPath = Left$(strDateiname, i - 1)
Gruß Marie
Antwort 2 von Springmaus vom 31.05.2019, 00:16 Options
Frage 2 habe ich leider nicht verstanden
Antwort 3 von erik vom 01.06.2019, 10:37 Options
Hallo Marie,
das letzte vorkommende Zeichen findest du auf Anhieb mit der InStrRev()-Funktion. Die macht das gleiche wie InStr(), sucht aber von rechts nach links. Eine Schleife wird dadurch überflüssg.
strCurrentPath= Left(CurrentDb.Name, InstrRev(CurrentDb.Name,"\")-1)
Noch einfacher geht es mit dem CodeProject-Objekt.
strCurrentPath = CodeProject.Path
Gruß
erik
Antwort 4 von judomurrat vom 01.06.2019, 18:19 Options
was bringt mir der aktuelle Pfad der Datenbank
ich will einfach nur eine Verknüpfung zu einer Excel Tabelle wo anstatt H/Eigene Dateien ..... schülerliste.xls steht so dass er sich die dat aus dem aktuellen Verzeichnis zieht
wie geht das ?
ps hab vom coden keine ahnung also wenn das nur so geht dann erklärt das bitte für blöde ;)
Antwort 5 von Springmaus vom 01.06.2019, 23:06 Options
Jo Erik, ich bin bissel rückständig, ich arbeite noch mit Access 97, da gibt es leider solche Sachen wie CodeProject.Path noch nicht und InstrRev gibt es auch erst ab VB6 / Access 2000. Aber da er mit Code gar nix anfangen kann, net mal reinkopieren, isses wohl egal :-)
Erklärs dus ihm für blöde :-)) Ich hab immer noch nicht genau verstanden was er ausser dem Pfad noch will.
Gruß Marie
Antwort 6 von judomurrat vom 02.06.2019, 11:07 Options
also ich hab ja verstanden dass der code oben das verzeichnis der datenbnak ausliest
aber wie muss ich dass jetzt machen dass dieser pfad als pfad der tabelle genommen wird
muss ich da iwie was im verknüpfungsmanager machen oder was
srry hab echt keine ahnung davon ^^
Antwort 7 von erik vom 02.06.2019, 19:13 Options
Hallo judomurrat,
deine verknüpfte Excel-Tabelle wird in Access wie jede andere Tabelle auch als TableDef-Objekt dargestellt. Jedes TableDef-Objekt hat eine Connect-Eigenschaft, die darüber Auskunft gibt, wie die Tabelle verknüpft ist. Nur verknüpfte Tabellen benutzen diese Eigenschaft, bei internen Tabellen ist sie völlig leer.
Beispiel für eine reguläre, verknüpfte Access-Tabelle:
;DATABASE=C:\MeinePfad\MeineDatenbank.mdb
Das vorangestellte Semikolon ist kein Fehler, sondern Absicht. Bei verknüpften Access-Tabellen muss nur der reine Pfad angegeben werden. Nur artfremde Tabellen (wie Excel, Textdateien usw.) müssen vorher noch eine Typdefinition aufgeführt bekommen.
Beispiel für eine verknüpfte Excel-Tabelle:
Excel 5.0;DATABASE=C:\MeinPfad\MeineTabelle.xls
Was genau noch drinsteht, müsstest du bei deiner eigenen Tabelle selbst prüfen mit der folgenden Zeile. Drücke die Tastenkombination Strg+G für das Direktfenster, füge folgende Zeile ein, trage deinen Tabellennamen ein und drücke die Eingabetaste:
? CurrentDb.TableDefs("<Hier Name der Excel-Tabelle einfügen>").Connect
Von der zurückgegebenen Zeile ist alles bis einschl. "DATABASE=" von Interesse. Alles danach muss durch einen neuen Pfad mit Dateinamen ausgetauscht werden.
Der folgende Code demonstriert den Austausch des Speicherortes einer verknüpften Tabelle. Als Parameter muss nur der Tabellenname in der Datenbank und der externe Dateiname übergeben werden:
Public Sub RefreshTableConnect(TableName As String, File As String)
Dim db As Database
Dim tdf As TableDef
Dim strConnect As String
Set db = CurrentDb
Set tdf = db.TableDefs(TableName)
strConnect = Left(tdf.Connect, InStr(tdf.Connect, "DATABASE=") + 8)
tdf.Connect = strConnect & File
tdf.RefreshLink
End Sub
Gruß
erik
Antwort 8 von judomurrat vom 03.06.2019, 17:31 Options
srry aber ich krieg en laufzeitfehler 3265 mit dem ersten code also dem zum Bestimmen des Pfades
? CurrentDb.TableDefs("<Hier Name der Excel-Tabelle einfügen>").Connect
iwie Element aus der Liste nicht gefunden kp
auf jeden fall heißt die tabelle wirklich so
Antwort 9 von Teddy7 vom 03.06.2019, 20:25 Options
willst Du sagen, dass Deine Exceltabelle
<Hier Name der Excel-Tabelle einfügen>
ist ?
Antwort 10 von judomurrat vom 05.06.2019, 17:28 Options
ne ich hab schon den richtigen tabellen namen schülerliste.xls eingetragen und trotzdem gehts net
Antwort 11 von Springmaus vom 06.06.2019, 00:05 Options
aber die Zeichen <> haste nicht geschrieben?? Oder etwa doch??
Antwort 12 von Springmaus vom 06.06.2019, 00:08 Options
? CurrentDb.TableDefs("schülerliste.xls").Connect
sollst Du ins Direktfenster schreiben, hast Du das ins Direktfenster geschrieben??????
Gruß marie
Antwort 13 von judomurrat vom 10.06.2019, 13:41 Options
die <> naja wie soll ich sagen gggg
k bin noob srry
ich probiers jetzt gleich ma
Antwort 14 von judomurrat vom 10.06.2019, 13:47 Options
och ne der laufzeitfehler kommt trotzdem noch auch wenn alles richtig is
woran kann das liegen?
Antwort 15 von erik vom 10.06.2019, 16:29 Options
Hallo judomurrat,
das liegt vermutlich daran, dass die eingebundene Tabelle nicht "schülerliste.xls" heißt. Statt des Arbeitsmappennamens müsste hier vermutlich der Arbeitsblattname benutzt worden sein. Wirf einen Blick ins Datenbankfenster, bei den Tabellen steht dort der tatsächliche Name der eingebundenen Tabelle. Dem Tabellennamen muss ein Excel-Symbol vorangestellt sein, daran kannst du die richtige Tabelle erkennen.
Gruß
erik
Antwort 16 von judomurrat vom 10.06.2019, 22:20 Options
hmm
da steht auch Schülerliste.xls das is en bissl komisch
Antwort 17 von judomurrat vom 12.06.2019, 10:15 Options
? CurrentDb.TableDefs("Schülerliste").Connect
der Code geht damit krieg ich Verknüpfung zur Tabelle
was muss ich anschließend eingeben damit als Verzeichnis das aktuelle Verzeichnis in dem auch die Datenbank ist immer automatisch ausgewählt wird
quasi egal in welchem Verzeichnis der Ordner Studienbuch von mir mit Datenbank und Tabelle liegt der immer Verknüpfung zur Tabelle kriegt
srry bin halt en noob
gruß
Antwort 18 von judomurrat vom 12.06.2019, 10:15 Options
ps. die Datei heißt Schülerliste.xls und die Tabelle in der Datenbank Schülerliste
Antwort 19 von judomurrat vom 13.06.2019, 17:12 Options
hat keiner ne ahnugn ich bräuchte dringend hilfe ich muss die Facharbeit bald abgeben