samtrex
Goto Top

Access Modul umbenennen

Ich möchte ein Modul in Access via VBS umbenennen.

Hallo Gemeinde...

Das Problem ist wie folgt:
Ich habe eine Datenbank mit einem Modul "Global" - hier sind Pfade hinterlegt die auf den Server zeigen ....
Jetzt möchte ich dieses Modul gerne gegen ein anderes Modul austauschen.

Das ganze mit einem VB-Script!
Ich Google schon den halben Nachmittag, kann aber nichts brauchbares finden.

Habe folgende Wege probiert:
adodb.connection
adox.catalog

Auf die Tabellen zu kommen ist kein Problem! Aber an die Module komm ich zum verrecken nicht ran....
Könnte es über das access.application Objekt gehen. Habe da aber gar keine Idee....

Ein Tipp würde mir schon reichen....

Danke.
MfG Sam

Content-Key: 166361

Url: https://administrator.de/contentid/166361

Printed on: April 19, 2024 at 10:04 o'clock

Member: Biber
Biber May 16, 2011 at 16:09:48 (UTC)
Goto Top
Moin SamTrex,

ich denke, da liegt ein Missverständnis vor.

Das Access-Modul "<Global>" (so wird es z.B. im Objektkatalog in der Modulansicht angezeigt) ist kein 57 Zeilen langes VBA-Skript, sondern ein virtuelles Konstrukt, eine gedankliche Zusammenfassung aller Konstanten, Properties und (einiger weniger) Methoden und Prozeduren, die mit dem Schlüsselwort Global deklariert wurden.

Unter anderem sind dort jede Menge Access-VBA-Konstanten definiert, aber auch "global verfügbare" Prozeduren/Methoden/Funktionen wie GetWeekDay() oder Year().

Dem entsprechend kannst du dieses "Modul namens Global" nicht austauschen, umbenamsen oder grün einfärben.
Sondern musst einzeln alle "Global" deklarierten Variablen dort umbenennen, wo du sie definiert hast.
Wenn du sie also in einem Modul "MeineConnections" als "Global dbverbindung1" oder "Global servernameProduktiv" stehen hast, dann kannst und musst du in diesem Modul ändern oder dieses Modul komplett ersetzen, wenn das mehr deiner Mentalität entspricht.

Grüße
Biber
Member: SamTrex
SamTrex May 16, 2011 at 20:25:50 (UTC)
Goto Top
Hallo Biber,
danke für die rasche Antwort!

Ich glaube ich habe mich nicht klar ausgedrückt ....
Ich habe ein Modul welches ich Global getauft habe.
-> http://www.lenzing.it/_temp/access.png

Dieses will ich umbenennen....

Danke....
Member: Biber
Biber May 16, 2011 at 20:55:43 (UTC)
Goto Top
Moin SamTrex,

wenn es doch nur ein Objekt vom Typ Access.Module aus der Collection Access.Modules ist, dann hat es doch ganz normal das Property Name und der ist doch niemalsnich schreibgeschützt..?!?

Oder was genau ist das Problem? Das Finden dieses Objekts ? *verständnislos schwimm*

Grüße
Biber
Member: SamTrex
SamTrex May 17, 2011 at 06:05:53 (UTC)
Goto Top
Moin Biber,
das Problem ist das ich an die Collection gar nicht erst dran komme!
Wenn ich es intern aus Access VBA machen wollte - dazu habe ich im Netz etwas gefunden.
Ich muß es aber aus einem externen VB-Script tun. Und irgendwie habe ich da einen Blockade wie ich das machen soll .....

Für die Tabellen war das kein Problem:
........

'HB-Frontend-Lokal einbinden  
	set conn = CreateObject("ADODB.Connection")  
	set catalog = createobject("ADOX.Catalog")  
	conn.Provider = "Microsoft.Jet.OLEDB.4.0"  
	conn.Open INSTDIR & "\Handbuecher_Lokal.mdb"  
	catalog.activeconnection = conn
	
	for i = 0 to catalog.tables.count -1
		if ucase(left(catalog.tables(i).name, 4)) = "TBL_" then  
			tbl_name = catalog.tables(i).name
	 		catalog.tables(i).name = catalog.tables(i).name & "_bak"  
	 		.......
	 	end if
	next
	
'Datenbanken trennen  
	conn.close

.....
Die Version mit
"ALTER TABLE " & catalog.tables(i).name & " RENAME TO " & new_tbl_name  
hat leider nicht funktioniert.... aber so geht es ja.

catalog.modules gibt es leider nicht .... und über conn. komme ich auch nicht daran ....

Danke
MfG Sam



Wer die ganze Story lesen möchte:

Ich habe eine Datenbank mit Front- & Backend. Nun möchte ich die Datenbank aber auch auf dem Notebook nutzen, auch wenn ich kein Netz habe. Der Gedanke ist nun folgender: Ich tausche im Frontend die Tabellenverknüpfungen durch die echten Tabellen aus - das klappt (mache das mit einer SELECT INTO Abfrage). Jetzt gibt es da noch das Modul "Global" in welchem die Pfade stehen - man kann aus der DB heraus Dateien aufrufen - die auf den Server zeigen. Nun wollte ich einfach ein 2. Modul für den "Offlinebetrieb" dazu packen und dieses gegen das "Global"-Modul tauschen.
Member: Biber
Biber May 17, 2011 at 07:01:22 (UTC)
Goto Top
Moin SamTrex,

okay.... das Ziel wird langsam klarer.

Also - klar, die Access.Module kannst du natürlich weder sehen noch ändern, wenn du irgendeine AdoDB-Connection gegen eine "Datenbank" aufmachst.
Dazu müsstest du (wahrscheinlich) ein CreateObject() auf das Object Access.Application aufmachen und in dessen Hierarchiebaum abwärts wackeln...

->Möchte ich aber gar nicht weiter verfolgen eigentlich.

Weil... für mich wäre doch die Konsequenz, wenn du da halbwegs data driven dynamisch die jeweils "gültigen" Quellen/Servernamen/Tabellennamen zuspielen willst -> Pack es raus aus den Modulen in Parameter- oder Ini-Dateien.

Ist doch eh kein Stil unter erwachsenen Codern, Datei und Servernamen fest in einer Appz zu verdrahten.
Du wirst doch wohl ein paar Namen aus einer Paar-Zeilen-Plaintextdatei auslesen können, oder?

Na also...

Grüße
Biber
Member: SamTrex
SamTrex May 17, 2011 at 07:15:42 (UTC)
Goto Top
Moin Biber,
ich muß ehrlich sagen das ich beim lesen deiner Antwort schmunzeln muß....
Die Idee mit der INI ist so banal wie einfach ....
Bin ich gar nicht drauf gekommen - natürlich kann ich das ;) - wobei ich mich noch nicht als "erwachsenen Coder" bezeichnen würde.
Ich hab immer irgend ein Problem und sehe zu wie ich es lösen kann .... oft stellt sich dabei heraus - wie auch jetzt - das es auch ganz einfach geht.
(Ich sag jetzt mal nicht wie ich das am Anfang mit den Tabellen versucht habe .... *schmuzel*)

Vielen Dank Biber!

Gruß Sam