Office: (Office 2003) Tabellenverknüpfung per VBA löschen

Helfe beim Thema Tabellenverknüpfung per VBA löschen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe eine FE und eine BE Datei. Nun möchte ich gerne per VBA-Code die Verknüpfung zur BE-Datei löschen. Dafür habe ich folgenden Code:... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Bronco77, 29. März 2010.

  1. Tabellenverknüpfung per VBA löschen


    Hallo,

    ich habe eine FE und eine BE Datei. Nun möchte ich gerne per VBA-Code die Verknüpfung zur BE-Datei löschen. Dafür habe ich folgenden Code:

    Code:
    Zumindestens bekomme ich keine Fehlermeldungen *Smilie , aber die Verknüpfungen werden scheinbar auch nicht gelöscht... Mache ich noch was falsch?

    Mfg. Christian

    :)
     
    Bronco77, 29. März 2010
    #1
  2. DeleteObject acTable....... ? (Vorher SetWarnings false)
     
    solyluna, 31. März 2010
    #2
  3. Das wäre auch eine Möglichkeit... Aber dann müssen die Verknüpfungen beim Starten wieder hergestellt werden. Da weiß ich derzeit leider nicht, wie das geht *frown.gif*
     
    Bronco77, 31. März 2010
    #3
  4. Tabellenverknüpfung per VBA löschen

    \@ Bronco

    Was soll denn genau raus? Nur die Verbindung zum Backend oder gleich das komplette Table?

    Das Verbindung zum BE kannst Du nicht löschen, es ist ja schließlich eine Tabelle die aus einem BE eingebunden wurde als braucht die auch immer den Bezug zu einem BE.

    Du kannst nur die Verbindung zum BE mit der Verbindung zu einem anderen BE überschreiben.

    Ansonsten hilft nur die Tabelle im FE komplett zu löschen.

    EDITH: Erklär doch erstmal bitte was Du genau machen willst, bzw. wieso genau Du die Verknüpfungen zum BE löschen willst?

    Gruß

    Rainer
     
    raist10, 31. März 2010
    #4
  5. Ok, das habe ich verstanden, das ich die Verknüpfung nicht löschen kann.

    Es geht darum, das ich die DB an Kunden weitergebe und dann wird zwar beim öffnen nach der BE-Dati gefragt, aber manchmal (ACC2007 Runtime) kommt eine Fehlermeldung. Daher dachte ich, die Verknüpfugen komplett zu entfernen.

    Die Variante, die Tabellen komplett zu entfernen und beim starten wieder anzulegen, finde ich auch ganz gut! Löschen kann ich schon, aber wie leg ich die wieder an?
     
    Bronco77, 31. März 2010
    #5
  6. Ich habe öfter ein ähnliches Problem, weshalb ich vor zwei Wochen mal nach optimalen Lösungen gesucht habe.
    Ich habe mich für eine Kombination aus Überprüfen und Wiederherstellen entschieden, weil das mit dem Löschen und Wiedereinbinden zu kompliziert ist. Beim Löschen einer Tabelle löscht du automatisch aus der MSysObject die Tabelle raus und musst die logischerweise wieder anlegen, was bei weitem komplizierter ist als ein BE von einer definierten Position aus wieder einzubinden...
    Mit der definierten Position stellst du einfach auch sicher, dass ein Kunde oder Benutzer einfach nicht wild Datenbanken in der Gegend rumverschiebt. Wer verschiebt schon Dateien aus Programmordnern in der Gegend rum *wink.gif* Das dann mal ein Programm nicht funktioniert ist eigentlich klar.

    Meine zusammenkopierte und angepasste Funktion sieht so aus:


    Code:
    Als Pfad für das Backend nehme ich immer einen kryptisch benannten Ordner der mit der Datenbank weitergegeben wird. In dem Projekt habe ich den Ordner einfach "dat" genannt.


    Die folgende Funktion stammt aus dem DBWiki (Link)
    Leicht zu verstehen ist sie nicht gerade, aber das ist momentan die stabilste Möglichkeit die ich kenne. Wenn Du beim Fehlerabfang eine Funktion einbaust, musst du aufpassen, dass du den Fehler 3044 ausklammerst (If not o.ä.), weil der auftritt, wenn eine Tabelle nicht ordentlich verknüpft ist.

    Code:
    Viel Erfolg damit! Bei mir klappt das immer sehr sauber und eine besser Möglichkeit, außer dem AutoLink aus dem Forum hier ist mir nicht über den Weg gelaufen.
     
    robster1704, 31. März 2010
    #6
  7. \@ Bronco

    Sagen wir es mal ganz direkt: Nur weil Du nicht willig bist das sauber zu programmieren ist es auch keine Lösung nach einer Umgehung Deiner Programmierfehler/-faulheit zu suchen.

    Wenn Du die an Kunden rausgibst ist es einfach ein absolutes NoGo das Einbindung und Prüfung des BE's nicht oder nur fehlerhaft funktioniert.

    Setzt Dich auf Deinen Hosenboden und programmiere einen ordentlichen Ablauf dafür der auf alle Eventualitäten richtig reagiert. *wink.gif*

    Beinhalten muss das Teil:

    - Zuerst Prüfung ob das BE da ist wo es sein soll
    - Wenn nicht dann Rückmeldung an User mit Bitte Eingabe neuer Pfad zu BE
    - Prüfen ob BE dort liegt oder nicht
    - wenn ja, dann alle Tabellen ins FE einbinden ... also auf gut Deutsch die Verknüpfungen für alle Tabellen neu schreiben
    - wenn nicht erneute Rückfrage beim User

    Und erst wenn BE da wo es sein soll und die Tabellenverbindung überprüft, bzw. neu geschrieben wurde dann erst weiter beim Start machen. Ansonsten Abbruch des Startvorganges und schliessen.

    Und wenn Du schon dabei bist, kannst Dir auch gleich überlegen ob Du dem User nicht gleich eine Funktion anbietest mit der er direkt über Deine Access-DB die Backends auf einen neuen Pfad verschieben kann. Sollte sicherer sein als den User alles manuell verschieben zu lassen.

    Nur meine bescheidene Meinung zum Thema.

    Gruß

    Rainer
     
    raist10, 31. März 2010
    #7
  8. Tabellenverknüpfung per VBA löschen

    \@ robster1704

    Was ich in Deinem Handling vermisse ist die grundsätzliche Möglichkeit einen DB-Pfad einzustellen wenn das BE nicht gefunden wurde.

    Soweit ich sehe (habe aber nicht alles angesehen) wird nur eine Fehlermeldung ausgelöst wenn das BE nicht da ist wo es sein soll.

    Der User bekommt jetzt zwar eine Fehlermedlung ... und dann? Wie stellt er nun den neuen BE-Pfad ein? Handelst Du das über den globalen Error-Handler?

    Abgesehen davon das es nicht wirklich guter Programmierstil wäre es im globalen Error-Handler abzufangen, finde ich das ein wenig arg umständlich und hinterlässt auch beim User vllt. einen fahlen Beigeschmack wenn er erst mit einer Fehlermeldung konfrontiert wird.

    Setzte doch eine Routine ein die einfach prüft ob alles notwendig am erwarteten Pfad sich befindet (okay, gibt es aber der weitere Ablauf was passiert dann fehlt schlicht). Wenn nein, ruft die Routine eine Meldung auf in der der User nun bequem den neuen BE-Pfad einstellen kann und dann läuft alles weiter.

    Und wenn er ein neuen Pfad eingestellt hat, kannst Du Dir auch die Überprüfung ob der Link in der Tabelle stimmt sparen, sondern gleich eine komplette Einbindung aller Tabellen anschubsen.

    EDITH: Die durchgängig komplette Prüfung ob alle Tabellen eingebunden sind ist ja auch nicht wirklich bei jedem Start nötig ... BE befindet sich wo beim letzten Mal eingestellt und dann kurz pro BE (falls mehrere BE's genutzt werden) 1 (nur eine) Tabellen-Verknüpfung geprüft und wenn okay, dann geht es weiter. Wenn nicht dann eh gröberes Problem. Komplette Tabellenüberprüfung/-einbindung ist ja nur nötig wenn Pfad geändert wurde. Der Hintergrund ist das die Tabelleneinbindung trotz eingebautem Beschleuniger bei einer größeren Anzahl an Tabellen im Projekt ziemlich viel Zeit in Anspruch nehmen kann und das will man keinem User bei jedem Start zu muten.

    Gruß

    Rainer
     
    raist10, 31. März 2010
    #8
  9. Hallo,

    erstmal Dank für die Antworten.

    @Rainer: es ist sicherlich keine Absicht, eine fehlerhaft DB an den Kunden zu geben! Aber manchmal passiert so etwas leider! Sicherlich wird vorher immer getestet und bisher tauchten hier eben auch keine Fehler auf!
    Als Testumgebung habe ich eine WinXP Pro Rechner mit ACC2003 und einen Win7 Rechner mit ACC2007. Auf beiden läuft es sowohl lokal, als auch im Netzwerk! Der Kunde hat ein XPPro System mit ACC2002 und einen mit ACC2000 Runtime. Da läuft alles Problemlos. Jetzt kam ein weiterer Rechner dazu mit ACC2007 Runtime und da läuft es auf einmal nicht mehr. Warum weiß ich noch nicht!

    Hier ist übrigens mal mein Code, den ich zum Verbinden der BEs benutze:

    Code:
     
    Bronco77, 31. März 2010
    #9
  10. \@Rainer

    Guter Hinweis. Ich habe die Abfrage ob die Datei vorhanden ist im Startup Formular, und hier nicht mit reinkopiert. Globale Fehlerbehandlung find ich umständlich, deshalb habe ich das Chaos was ich da noch für meine Einstellungen und die knapp 10 Err.Numbers die ich hinterlegt habe mal rausgenommen, um das nicht noch verwirrender zu machen, als es schon ist.

    EDIT: Ich gehe davon aus, dass User den Programmordner nicht anfassen. Ich gehe ja auch nicht bei OFfice in den Programmordner und verschiebe wahrlos Dateien. Im Notfall gibt es eine Repairfunktion mit der man das BE finden und wieder an die richtige Stelle kopieren kann, bzw falls gelöscht die fehlenden Dateien von der CD oder Server nachinstalliert.
     
    robster1704, 31. März 2010
    #10
  11. \@Bronco Wenn Dein Kunde ein AccessXP hat und eine Access Runtime 2000, warum testest du dann mit Office 2003 bzw. Office 2007?

    Wenn (und nur dann) es möglich ist, würde ich die 2000er Runtime rauswerfen und die 2007er Runtime mit ausliefern. Du entwickelst doch auch mit dem Access2007 oder testest du damit nur?

    Wenn man für Kunden entwickelt muss man am besten jemanden haben, der deine Datenbank innerhalb von 5 Minuten zum Absturz bringen möchte. Am allerbesten jemanden der das Programm zum ersten Mal sieht. Da erkennst du auch gleich ob die Bedienung passt oder ob es zu kompliziert ist. Ich selber kann nie meine eigenen Programme in der finalen Version testen. Ich weiss einfach was man nicht machen darf, und erst wenn der Härtetest durch ist geht das Programm raus *Smilie

    Und noch ein wichiger Hinweis den ich vergessen habe: Meine Variante mit der festen Ordnerstruktur ist nur für Einzelplatzanwendungen geeignet! Für Mehrplatzanwendungen ist die Variante AutoLink aus dem Forum die absolut beste Variante, weil man damit auch BE auf einem verknüpften Netzwerklaufwerk wählen kann. Das fest zu programmieren ist ziemlich unflexibel.
     
    robster1704, 31. März 2010
    #11
  12. \@Rob: Ich kann leider nicht beinflussen, was der Kunde hat. Das AccXP war im Office-Packet beim Kunden schon drauf. Auf dem anderen PC hat der dortige Admin die Runtime installiert.

    Ich programmiere mit Acc2003. Als Testumgebung hab ich, wie schon erwähnt, Acc2003, 2007 und ne 2000er Runtime. Ich werde aber mal die 2007er Runtime auch noch testen.

    Das Programm wird in der Finalversion nicht nur an einen Kunden ausgeliefert. Es ist in spezielles Programm, in das die Kundenwünsche immer mit einfließen. Was einer zusätzlich haben möchte, bekommen dann immer alle.

    Das "AutoLink" aus dem Forum kenn ich noch nicht, werd ich mir aber mal anschauen. Mir persönlich gefällt meine Variante aber auch sehr gut *Smilie und sie funktioniert auch super.

    Leider hab ich hier keinen, der das Programm testen kann... Vielleicht bietet sich hier ja mal einer an *wink.gif*

    Mfg. Christian
     
    Bronco77, 31. März 2010
    #12
  13. Tabellenverknüpfung per VBA löschen

    Na bitte ... geht doch. *wink.gif*

    Nicht böse sein wegen meinem Kommentar oben. Aber wie Du jetzt siehst gibt es ja für jeden Fehler eine Ursache und die kann man beheben. Dadurch wird der eigene Code sauberer und sicherer. Das sollte meiner Meinung nach eben das Ziel von Kunden-Fehlern sein ... und eben nicht okay, geht nicht dann baue ich ein Workaround, denn das bringt wieder seine eigenen Fehlerquellen mit und irgendwann ist man dann beim Workaround vom Woraround des Workarounds und nichts funktioniert wirklich.

    @ robster1704

    Tabellenverknüpfung per VBA löschen o_O

    Wieso ist das umständlich? Es ist doch wesentlich umständlicher in jede Prozedur eine eigene Fehlerbehandlung einzubauen als per Copy & Paste (oder mit Codevorlagen ala MZTools) schnell die Anbinung an den globalen Error-Handler mit einem Klick in den Code einzufügen.

    Auf jeden Fall interessante Ansicht. *wink.gif*

    Darauf darf ich Dir mit Deiner eigenen Aussagen antworten:

    Also musst Du dann für Dein Programm immer nur jmd finden der das/die BE's per Hand veschiebt und schon schmierrt es ab? *wink.gif*

    Die macht mich neugierig ... hättest Du da mal einen Code oder eine Beispiel-DB dazu?

    Bei einem BE würde ich aber eindeutig das zurück schreiben das letzten Backups präferieren anstatt die Nachinstallation eines leeren BE's von der CD. *g*

    Gruß

    Rainer
     
    raist10, 31. März 2010
    #13
  14. \@Bronco Fein gelöst, hab mir den Code gerade mal angeschaut. Sieht gut aus!

    @Rainer ein Blogbeitrag zu dem Thema ist in Vorbereitung, der dann mit meinem DevBlog rauskommt. Ich fahre morgen in Urlaub, danach mach ich das alles mal fertig. Im Moment fehlt eigentlich nur noch das CSS für den Wordpress Blog... Weisst ja wie das mit dem eigentlich ist. Das fehlt jetzt schon seit 3 Wochen...

    Das Backend suche ich mit dem FSO oder lasse es per Öffnen Dialog angeben. Davor ist ein Formular mit ner Erklärung dazu und der Benutzer kann selber wählen ob er den langen (automatische Suche mit FSO) oder den kurzen Weg (selber auswählen, falls er das bewusst verschoben hat) geht. Ich glaube trotzdem "fest" daran, dass Benutzer nicht willkürlkich Dateien aus ihrem C:\Programme Ordner in der Weltgeschichte rumschieben und schreibe das auch immer in das HAndbuch (Modifikationen am Programmordner können dazu führen, dass das Programm nicht mehr richtig ausgeführt werden kann o.ä.).

    Viele Grüße und Frohe Ostern!
     
    robster1704, 31. März 2010
    #14
  15. Ah oki ... lass mal gut sein, die Variante ist bekannt.

    Da baue ich mir dann lieber eine Suche per API wenn ich mal eine komplette Suche auf dem gesamten Rechner brauche. Wäre zwar deutlich aufwändiger, aber dafür um Welten schneller.

    Hatte nur gefragt, weil ich neugierig war ob Du da vielleicht was hast was ich noch nicht kenne und was interessant wäre. *wink.gif*

    Gruß

    Rainer
     
    raist10, 1. April 2010
    #15
Thema:

Tabellenverknüpfung per VBA löschen

Die Seite wird geladen...
  1. Tabellenverknüpfung per VBA löschen - Similar Threads - Tabellenverknüpfung VBA löschen

  2. Werte aus zweiter Datei beim Druck in Feld einer Tabelle einsetzen

    in Microsoft Excel Hilfe
    Werte aus zweiter Datei beim Druck in Feld einer Tabelle einsetzen: Hallo zusammen Ich habe, wie der Titel sagt, das Problem, dass ich eine Tabelle habe. Diese ist eine Vorlage und soll knapp 300-mal gedruckt werden. ABER: Beim Drucken soll, pro gedruckter...
  3. WORD: Tabellenverknüpfung mit Datenaktualisierung

    in Microsoft Word Hilfe
    WORD: Tabellenverknüpfung mit Datenaktualisierung: Hallo zusammen, leider konnte mir die Suche nicht weiterhelfen, oder ich schaffe es nicht mein Anliegen richtig zu formulieren. Ich habe folgendes Problem. Eine Worddatei mit einer technischen...
  4. Tabellenverknüpfungs-Manager ist ausgegraut

    in Microsoft Access Hilfe
    Tabellenverknüpfungs-Manager ist ausgegraut: Hallo an alle Experten. Ich habe eine Access-Datenbank mit einer verknüpften Datei von access 2007 nach access 2016 auf einen neuen Rechner kopiert. Nun möchte ich den Pfad der verknüpften...
  5. Tabellenverknüpfung aktualisieren

    in Microsoft Access Hilfe
    Tabellenverknüpfung aktualisieren: Guten Abend, ich habe meine Datenbank auf einem Stick gespeichert. Rechner XY weist dem Stick den Laufwerksbuchstaben E zu und Rechner YZ weist ihm den Laufwerksbuchstaben F zu. Das bedeutet,...
  6. Tabellenverknüpfungen aktualisieren per VBA

    in Microsoft Access Hilfe
    Tabellenverknüpfungen aktualisieren per VBA: Hallo, ich habe eine Programm geschrieben, um dem Tabellenverknüpfungsmanager aus dem Weg zu gehen. Ich hatte nun aber schon eine 3170 ISAM Fehlermeldung. Die habe ich nun nicht mehr dafür nun...
  7. Excel-TabellenVerknüpfung und Summe von Werten

    in Microsoft Excel Hilfe
    Excel-TabellenVerknüpfung und Summe von Werten: Hallo, ich habe mich soeben hier angemeldet ind er Hoffnung, dass mir jemand einen Tipp (oder noch besser die Lösung) geben kann. Zum Problem: Ich habe zwei Tabellenblätter. In Tabelle 1 sind...
  8. Button in Tab. soll Zeilen in and. Tab. aus- oder einblenden

    in Microsoft Excel Hilfe
    Button in Tab. soll Zeilen in and. Tab. aus- oder einblenden: Hallo Ich hab da mal ein Problem das eine Kreative Lösung erfordert. Ich habe eine Excel-Mappe mit mehreren Tabellen. In der ersten "Tests" sind verschiedene Tests aufgelistet ca. 100, in...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden