Verweis löschen per VBA

28/04/2009 - 08:18 von Volker Scherf | Report spam
Hallo NG,
folgendes Szenario:
System: A2K-SP3, DevTools, WinXP-SP3

Ich benötige für Zugriffe auf die COM-Schnittstelle die MSCOMM32.OCX. Der
Verweis wurde im VBA-Editor korrekt gesetzt.
Wenn nun der Verweis fehlerhaft ist, funktionieren merkwürdigerweise auch
einige Access interne Funktionen in Formularen nicht mehr (Anzahl(),
Summe()).
Dafür habe ich die Datei auf dem Server abgelegt und darauf hin verwiesen.
Warum auch immer wird der Verweis wieder auf die lokale Datei gelegt.
Wenn ich jetzt die AccessDB auf einem anderen Rechner kopiere und da diese
OCX nicht installiert ist kommt logischerweis ein Fehler. Korrigiere ich den
Verweis manuell auf die Datei auf dem Server funktionert alles wieder
bestens.

Folgendes Problem..
Um die Verweise neu einzubinden würde ich jetzt gerne den Verweis per VBA
neu seztzen.
Prinzipiell ist das setzen ja auch kein Problem. Das Problem ist folgendes,
wenn der Verweis defekt ist (IsBroken), dann muss dieser erst gelöscht
werden um auf eine neue Datei zu verweisen (AddFromFile), da hier sonst die
Meldung kommt, dass der Verweis in Konflikt zu einem vorhandenen besteht.
Dazu wiederum muss der Namen des Verweises angegeben werden welcher gelöscht
werden soll. Der Namen des Verweises allerdings kann nicht ausgelesen
werden, da ja der Verweis defekt ist. Ich hab das Gefühl, dass sich hier die
Katz in den eigenen Schwanz beißt. Bei Google hab ich zwar genügend Hinweise
zu Verweisen und VBA bekommen, jedoch scheitere ich an dem löschen des
Verweises. Ich hab es mit Application.References... oder auch über
VBIDE.Reference... probiert, aber komme leider zu keinem Ergebnis. Gibt es
hier keine Refresh-Funktion mit Angabe des Pfades oder so etwas?

Hier mal der Code:
############

Function TestVerweis()

Dim rsVerweise As ADODB.Recordset
Set rsVerweise = New ADODB.Recordset

Dim I As Integer

For I = 1 To Application.References.Count

If Application.References(I).IsBroken = True Then

rsVerweise.Open "SELECT * FROM tbl_Verweise WHERE (VerweisOrder
= " & I & ")", CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
Application.References.Remove
Application.References(rsVerweise("VerweisName"))
Application.References.AddFromFile (rsVerweise("VerweisPfad"))
rsVerweise.Close

End If

Next I

Set rsVerweise = Nothing

End Function
############

Beim Löschen des Verweises bekomme ich immer die Fehlermeldung "Typen
unvertràglich!"
Hab´s auch schon über die Auflistung, Beschreibung versucht, jedoch immer
die selbe Sch
Evtl. hat ja jemand von euch einen Lösungsansatz.

Die nàchste Frage wàre noch: Funktioniert das ganze auch in einer ADE/MDE,
oder müsste ich mal komplett umdenken?
Hab in diesem Zusammenhang von LateBinding gelesen. Aber wie stelle ich da
bei o.g. Problem die Verbindung zu einer DLL, OCX,.. her? Das muss ich ja
auch irgendwie angeben.
Oh mann, ich hab doch keine Ahnung...


Viele Grüße,
Volker Scherf
 

Lesen sie die antworten

#1 Gunter Avenius
28/04/2009 - 08:30 | Warnen spam
Hallo Volker,

Volker Scherf schrieb folgendes:
folgendes Szenario:
System: A2K-SP3, DevTools, WinXP-SP3

Ich benötige für Zugriffe auf die COM-Schnittstelle die MSCOMM32.OCX. Der
Verweis wurde im VBA-Editor korrekt gesetzt.
Wenn nun der Verweis fehlerhaft ist, funktionieren merkwürdigerweise auch
einige Access interne Funktionen in Formularen nicht mehr (Anzahl(),
Summe()).


...

http://team-moeller.de/access/tiptr...schen.html geht
darauf ein.

Gruß
Gunter
__________________________________________________________
Access FAQ: http://www.donkarl.com

home: http://www.avenius.com - http://www.AccessRibbon.de
http://www.ribboncreator.de

3. SQL Server-Entwickler-Konferenz - Nürnberg im Mai
http://www.donkarl.com/?SEK

Ähnliche fragen