Guten Abend,
ich möchte gern, mittels einer Befehlsschaltfläche, eine bestehende Datenbank aktivieren.
Wenn die Datenbank aber schon aktiviert ist (übersehen) soll eine MSGBOX kommen: Datenbank
ist schon aktiviert.
Hier der Pfad und der Datenbankname:
"C:\#_Verkauf\Übersicht_Schränke.accdb"
mfg wolfgang b
Hallo,
was verstehts Du unter aktivieren ?
Wenn eine Datenbank geöffnet ist, ist sie auch aktiviert.
Guten Abend Klaus,
ja, ich meinte natürlich, wenn die Datenbank geöffnet ist.
Wenn man vergessen sollte das die Datenbank schon geöffnet ist,
dann sollte beim 2x ein Hinweis erscheinen, Datenbank ist schon
geöffnet.
Mit freundlichen Grüßen
Wolfgang b
Hallo,
man kann doch aber eine Datenbank nicht 2x öffnen.
Und die Prüfung müsste ja auch in der Datenbank erfolgen.
Eine solche Prüfung müsste ja außerhalb von der Accessanwendung erfolgen.
Wo ist denn die Schaltfläche die Du verwenden willst ?
Bitte beschreibe das Vorhaben mal genauer.
Guten Abend Klaus,
die Befehlsschaltfläche befindet sich auf Formular ,,Vertrieb".
Gruß
Wolfgang b
Hallo,
und in welcher DB ?
Wenn die in der DB ist die geprüft werden soll, macht das doch keinen Sinn, wenn die Fläche zu sehen ist, ist die DB geöffnet.
Daher nochmal die Bitte das Vorhaben genauer zu erklären.
Guten Morgen Klaus,
die aktuelle Datenbank heißt auch "Vertrieb".
Wenn ich die Datenbank "Übersicht_Schränke.accb" per Button öffne,
soll nur geprüft werden ob diese schon geöffnet ist ? Oder sie wird
geöffnet: ("C:\#_Verkauf\Übersicht_Schränke.accdb")
mfg wolfgang b
Hallo,
dann versuche das so:
If Dir("C:\#_Verkauf\Übersicht_Schränke.laccdb") <> "" Then
Msgbox "Ist bereits geöffnet" 'Die MsgBox kann entfallen.
Else
' Datenbank öffnen
End If
Wenn eine Datenbank geöffnet wird, wird eine laccdb angelegt, im gleichen Verzeichnis wie die DB und das kannst du nutzen.
Guten Morgen Klaus,
es funktioniert aber wie kann ich die Datenbank öffnen ?
' Datenbank öffnen ?
Muss man die Datei laccdb so umbenennen ? Nur so klappt es !
Sub test()
If Dir("C:\#_Verkauf\Übersicht_Schränke.[b]laccdb[i][/i][/b]") <> "" Then
MsgBox "Ist bereits geöffnet" 'Die MsgBox kann entfallen.
Else
' Datenbank öffnen
End If
End Sub
mfg wolfgang
Guten Tag Klaus,
so klappt es einwandfrei, danke !
Hatte mal ein wenig Gegoogelt.
Das perfekte wäre jetzt, wenn die Datenbank schon geöffnet ist,
sollte dies jetzt aktiviert werden, bzw. direkt auf die Oberfläche.
Sub test()
Dim appAccess As Access.Application
Dim strDB As String
Const strConPathToSamples = "C:\#_Verkauf\Übersicht_Schränke.accdb"
strDB = strConPathToSamples & "Übersicht_Schränke.accdb"
If Dir("C:\#_Verkauf\Übersicht_Schränke.laccdb") <> "" Then
MsgBox "Ist bereits geöffnet" 'Die MsgBox kann entfallen.
Else
' Datenbank öffnen
MsgBox "Datenbank wird geöffnet"
Set appAccess = New Access.Application 'hiermit wird geöffnet
End If
End Sub
mfg wolfgang
Guten Tag Klaus,
vorgestern, war alles i.o. .
Wieso wird die Datenbank nicht geladen ?
Sub Test_Click()
Dim appAccess As Access.Application
Dim strDB As String
Const strConPathToSamples = "C:\#_Verkauf\Übersicht_Schränke.accdb"
strDB = strConPathToSamples & "Übersicht_Schränke.accdb"
If Dir("C:\#_Verkauf\Übersicht_Schränke.laccdb") <> "" Then
MsgBox "Ist bereits geöffnet"
Else
MsgBox "Datenbank wird geöffnet"
Set appAccess = New Access.Application 'hiermit wird geöffnet ?
End If
End Sub
Was ist Falsch ?
Gruß wolfgang
ZitatConst strConPathToSamples = "C:\#_Verkauf\Übersicht_Schränke.accdb"
strDB = strConPathToSamples & "Übersicht_Schränke.accdb"
Das ergibt
strDB = "C:\#_Verkauf\Übersicht_Schränke.accdbÜbersicht_Schränke.accdb"
Merkst Du was?
Hallo Maxel,
habe gelöscht, wird trotzdem nicht geöffnet !
Sub Test_Click()
Dim appAccess As Access.Application
Dim strDB As String
Const strConPathToSamples = "C:\#_Verkauf\Übersicht_Schränke.accdb"
strDB = strConPathToSamples
If Dir("C:\#_Verkauf\Übersicht_Schränke.laccdb") <> "" Then
MsgBox "Ist bereits geöffnet"
Else
MsgBox "Datenbank wird geöffnet"
Set appAccess = New Access.Application 'hiermit wird geöffnet ?
End If
End Sub
gruß wolfgang
Wie öffne ich eine Acess-Datei?
Hast Du diese Frage mal im Web recherchiert, bevor Du es hier im Forum getan hast?
Wenn nein - warum nicht?
ZitatSet appAccess = New Access.Application 'hiermit wird geöffnet ?
würde Dir als untauglich auffallen.
Ich habe mal
access vba datenbank öffnenin meine Suchmaschine eingetippt und als ersten Treffer dies erhalten:
https://docs.microsoft.com/de-de/office/vba/api/access.application.opencurrentdatabase (https://docs.microsoft.com/de-de/office/vba/api/access.application.opencurrentdatabase)
Hallo Maxel,
DANKE für den Tip !
Funktioniert, allerdings kommt beim öffnen
Laufzeitfehler 7867
Die Datenbank ist bereits geöffnet.
Sub Test_Click()
Dim appAccess As Access.Application
Dim strDB As String
Const strConPathToSamples = "C:\#_Verkauf\Übersicht_Schränke.accdb"
strDB = strConPathToSamples
If Dir("C:\#_Verkauf\Übersicht_Schränke.laccdb") <> "" Then
MsgBox "Ist bereits geöffnet"
Else
MsgBox "Datenbank wird geöffnet"
Set appAccess = _
CreateObject("Access.Application")
appAccess.OpenCurrentDatabase strDB
' Set appAccess = New Access.Application 'hiermit wird geöffnet ?
End If
End Sub
mfg wolfgang b
Hallo Maxel,
Nachtrag:
bleibt hier im Makro stehen, gelb hinterlegt:
appAccess.OpenCurrentDatabase strDB
mfg
wolfgang
Hallo Maxel,
habe dies gelöscht:
appAccess.OpenCurrentDatabase strDB
kommt kein Fehler mehr !!!
Auch wenn ich die geöffnete Datenbank offen lasse, keine Probleme !!!
mfg
wolfgang
Hallo Maxel,
recht herzlichen Dank für die Unterstützung !
Eine kleine Nachfrage:
Kann man die neu geöffnete Datenbank beim wiederholten Starten des
Makros, dann kommt ja:
MsgBox "Ist bereits geöffnet"
dann auf der Oberfläche platzieren also wie beim 1. Öffnen ?
Würde mich freuen, wenn dies klappt !
mfg wolfgang b
Hallo zusammen,
ich habe eine 2. Datenbank C:\#_Verkauf\Übersicht_Tische.accdb",
es kommt aber immer die zuletzt geöffnete Datenbank.
WIESO ?
mfg wolfgang
( Verkauf\Übersicht_Schränke.accdb" )
Hallo,
ich kann Dir da mangels Erfahrung mit solchen Funktionen nicht helfen. Es es wird schon noch einer vorbeikommen.
Hallo Klaus,
danke für deine Info.
Hoffentlich kann jemand anders helfen, würde mich freuen !!!
Mit freundlichen Grüßen
Wolfgang b
Hallo Wolfgang,
Wenn ich dieses so lese
ZitatC:\#_Verkauf\Übersicht_Schränke.accdb
C:\#_Verkauf\Übersicht_Tische.accdb
kommen doch erhebliche Zweifel am Datenmodell auf.
Eine
Übersicht zu Umsätzen von Artikelgruppen bekommt man
doch durch ziemlich einfache Abfragen auf die Bewegungstabelle(n).
Ausserdem ist es eh schlecht, wenn man berechnete Werte in Tabellen
speichert. Der Aufwand diese aktuelle zu halten ist dabei doch viel
zu gross.
Worin liegt denn bei dir der Sinn der externen DBs?
gruss ekkehard
Hallo ekkehard,
danke erst mal das Du das Thema aufnimmst.
Mit diesem Makro möchte ich die Datenbank "Schränke" öffnen.
Es wird die gleich Datenbank geöffnet, wie die die schon offen ist
und von der ich das Makro starte:
Sub Test_Schränke_Click()
Dim appAccess As Access.Application
Dim strDB As String
Const strConPathToSamples = "C:\#_Verkauf\"
strDB = strConPathToSamples & "Übersicht_Schränke.accdb"
'If Dir("C:\#_Verkauf\Übersicht_Schränke.laccdb") <> "" Then
' MsgBox "Ist bereits geöffnet"
'Else
Stop
MsgBox "Übersicht SCHRÄNKE Datenbank wird geöffnet"
Set appAccess = CreateObject("Access.Application")
' Open database in Microsoft Access window.
' Set appAccess = New Access.Application
appAccess.OpenCurrentDatabase strDB
End Sub
mfg wolfgang
Hallo ekkehard,
NACHTRAG !
Habe gerade eine neue ACCESS Datenbank erstellt und entsprechend
nach Schränke benannt.
Leider kein Erfolg,
Laufzeitfehler 7866
Die Datenbank kann von Microsoft nicht geöffnet werden, da sie nicht existiert, ein
anderer Benutzer sie bereits im Exklusivmodus geöffnet hat, oder da es sich nicht um eine
ADP-Datei handelt.
Exklusivmodus= Nein und ist auch vorher nicht geöffnet.
Hinweis:
Wenn ich die Datei über den Dateiexplorer öffne und anschließend über VBA Makro
wird die "_Übersicht_Schränke.accdb" geladen.
Es kommt aber dann Fehlermeldung:
Laufzeitfehler 7867 Die Datenbank ist bereits geöffnet.
Sub Test_Schränke_Click()
Dim appAccess As Access.Application
Dim strDB As String
Const strConPathToSamples = "C:\#_Verkauf\"
strDB = strConPathToSamples & "Übersicht_Schränke.accdb"
'If Dir("C:\#_Verkauf\Übersicht_Schränke.laccdb") <> "" Then
' MsgBox "Ist bereits geöffnet"
MsgBox "Übersicht SCHRÄNKE Datenbank wird geöffnet"
Set appAccess = CreateObject("Access.Application")
' Set appAccess = New Access.Application
[i] appAccess.OpenCurrentDatabase strDB[b][/b][/i] '< bleibt hier stehen
End Sub
mfg
wolfgang b
Sorry, - am Thema meiner Frage vorbei. Da bin ich raus.
Hallo,
auch mir kommen da schwerwiegende Zweifel am Datenmodell, aber sei's drum...
Auf eine externe DB kann man auch auf diese Art zugreifen, ohne sie erst öffnen zu müssen:
.
.
.
Dim rs As Dao.Recordset
Set rs = Currentdb.OpenRecordset ("Select * From tblTabelle in '' [MS Access;database=C:\MeinVerzeichnis\MeineAndereDB.accdb]", dbOpenSnapshot)
.
.
Hallo Ekkehard,
sorry habe direkt geantwortet auf mein Problem hin.
C:\#_Verkauf\Übersicht_Schränke.accdb
C:\#_Verkauf\Übersicht_Tische.accdb
Diese Dateien habe ich nur mit Musternamen versehen, so das man bei der Erstellung
des Makros dies berücksichtigen kann.
mfg
wolfgang b
Hallo,
ich habe es so eingesetzt:
Sub Test_Schränke_Click()
Dim rs As Dao.Recordset
Set rs = CurrentDb.OpenRecordset("Select * From tblTabelle in '' [MS Access;database=C:\#_Verkauf\Übersicht_Schränke.accdb]", dbOpenSnapshot)
End Sub
Es kommt eine Fehlermeldung:
Laufzeitfehler 3024
Datei....
nicht gefunden ! Obwohl vorhanden !
mfg wolfgang b
Hallo,
wie kann man nur solche Sonderzeichen in Pfad-/Dateinamen verwenden: C:\#_Verkauf\Übersicht_Schränke.accdb ??
Zudem: gibt es denn "tblTabelle" in "Übersicht_Schränke.accdb" ??
Guten Abend Franz,
habe die Raute weggemacht und die Tabelle, die ich nicht habe.
Set rs = CurrentDb.OpenRecordset(" '' [MS Access;database=C:\1_Verkauf\Übersicht_Schränke.accdb]", dbOpenSnapshot)
Laufzeitfehler 3078
Das Microsoft Access-Datenbankmodulfindet die Eingabetabelle oder Abfrage...
mfg wolfgang
Hallo,
Zitathabe die Raute weggemacht und die Tabelle, die ich nicht habe.
Ist das Dein Ernst??
Du sollst nichts weglassen, sondern den Tabellen-Namen anpassen und den Verzeichnisnamen prüfen..
Was willst Du denn mit einer DB, in der keine Tabelle(n) sind?
Der Code öffnet ein Recordset auf eine Tabelle in einer externen DB, nichts weiter. Mit den gelieferten Daten kannst Du dann anstellen, was Du willst.
Der Hinweis auf das "#"-Zeichen ist eher als vorsorgliche Maßnahme zu verstehen. Nicht alle Funktionen kommen mit solchen Sonderzeichen zurecht, auch wenn Windows daran nicht herummeckert.
Zudem steht immer noch die Frage zum fragwürdigen Tabellenaufbau, bzw. Datenbanken-Aufbau im Raum und die Antwort aus...
Hallo Franz,
danke das Du Geduld hast !
Habe es so reingesetzt:
Dim rs As Dao.Recordset
Set rs = CurrentDb.OpenRecordset("Select * From tbl_Daten in '' [MS Access;database=C:\1_Verkauf\_Übersicht_Schränke.accdb]", dbOpenSnapshot)
Keine Fehlerhinweise aber die Datenbank: "_Übersicht_Schränke.accdb" wird auch nicht geöffnet.
Zur offenen Frage:
Ich habe eine "Hauptdatenbank", hier sollen die Tabellen tbl_Daten aus _Übersicht_Schränke.accdb
und _Übersicht_Tische.accdb reinkopiert werden, da 2 Kolleginen an verschiedenen Standorten
Daten einpflegen.
Wenn die Datenbänke dann auf dem Hauptrechner sind soll es einfacher sein, wenn man die beiden
Datenbänke per Button öffnen kann und die Tabellen dann kompl. Kopiert und in der Hauptdatenbank einfügen
kann.
mfg wolfgang b
Hallo Franz,
bitte schau nochmal #9 dieses VBA Makro läuft eigentlich gut.
Aber warum wird immer nur die Datenbank geöffnet, die vorher
geöffnet war !
Wenn ich also vorher Übersicht_Tische auf hatte, wird nur diese geöffnet, nicht
aber die ich wollte, Übersicht_Schränke !
Warum ?
Mit freundlichen Grüßen
Wolfgang b
Hallo,
na, ich würde sagen, Du bist mit Deiner Methode komplett auf dem Holzweg
...
Mal abgesehen von Datenverlust, bzw. Überschreiben von Daten wäre insgesamt ein gangbarer Weg die TranferDatabase-Methode (oder per VBA "Relink"), mit der die Tabellen aus den beiden (oder mehreren) anderen DBs in der "Hauptdatenbak" verlinkt (nicht importiert) werden könnten.
Anschließend kann in der Haupt-DB entschieden werden, welche Daten wohin (per SQL-Statements)übernommen werden sollen.
Hallo Franz,
ok, danke für die Information.
Was ist den noch mit:
Dim rs As Dao.Recordset
Set rs = CurrentDb.OpenRecordset("Select * From tbl_Daten in '' [MS Access;database=C:\1_Verkauf\_Übersicht_Schränke.accdb]", dbOpenSnapshot)
Keine Fehlerhinweise aber die Datenbank: "_Übersicht_Schränke.accdb" wird auch nicht geöffnet !!!
Mit freundlichen Grüßen
Wolfgang b
Hallo.
habe es geschrieben:
ZitatDer Code öffnet ein Recordset auf eine Tabelle in einer externen DB, nichts weiter. Mit den gelieferten Daten kannst Du dann anstellen, was Du willst.
Der Code öffnet keine "DB", so wie Du denkst!!! Damit kann man auf die
Tabellendaten in einer anderen DB zugreifen, ohne "Opendatabase" zu benutzen.
Außerdem vergiss, wie gesagt, diese Methodik.
Guten Morgen Franz,
dann mach ich es so:
Private Sub Test_Schränke_Click()
Dim Pfad As String
Pfad = "C:\1_Verkauf"
Shell "explorer.exe /n, /e, " & Pfad, vbMaximizedFocus
End Sub
Damit wird das Verzeichnis geöffnet und man kann die Datei dann öffnen und
bearbeiten.
Danke.
mfg wolfgang b
Hallo Franz,
Ich habe eine Lösung:
Private Sub Test_Schränke_Click()
Static bOpened As Boolean
Dim strFullPath As String
strFullPath = "C:\1_Verkauf\_Übersicht_Schränke.accdb"
If Dir(strFullPath, vbDirectory) <> "" Then
Shell Environ("WinDir") & "\explorer.exe /n,/e," & strFullPath, vbNormalFocus
Else
MsgBox "Verzeichnis oder Datei " & IIf(bOpened, " ", "") & " nicht vorhanden!", vbCritical
End If
bOpened = True
End Sub
KLAPPT einwandfrei, es wird die Datenbank gestartet, es wird auch die gestartet die
ich hinterlegt habe und nicht die ich vorher geöffnet hatte.
mfg wolfgang b