MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 16.04.2019, 07:02   #1
DeathSoldier01
MOF User
MOF User
Standard Acc2016 - Datenbank über VBA mit Runtime öffnen

Hallo Leute,

wie kann ich eine Datenbank über VBA über Runtime öffnen?

Normalerweise öffnet man sie in Runtime mit einer Verknüpfung mit /runtime angehängt.

Ich öffne Sie in der Datenbank momentan mit folgendem Code:

Code:

Private Sub Befehl33_Click()
Dim shl As Object
Dim strPath As String
Dim strFilename As String
Dim strFilenameFull As String
Meldung = "Bitte Betriebsjahr eingeben."
Titel = "S.O.M.B.R.A. - DB Info"
Antwort = InputBox(Meldung, Titel)
strPath = CurrentProject.Path & "ALTE_JAHRE"
Set shl = CreateObject("Shell.Application")
shl.Open strPath & "Jahr_" & Antwort & ".accdb"
End Sub
Wisst ihr, was ich da noch einbauen muss, dass die geöffnete DB in Runtime geöffnet wird?

Lg
DeathSoldier01 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 07:06   #2
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,
einfach das "/Runtime" auch anhängen.

__________________

Gruß
Klaus
Office2016, Win10
gpswanderer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 07:26   #3
DeathSoldier01
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hab ich schon versucht, dann passiert nichts mehr. Muss ich das auch unter Anführungszeichen setzen?
DeathSoldier01 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 07:30   #4
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,
es könnte sein, dass es hilfreich ist wenn du Deinen Versuch zeigst.

__________________

Gruß
Klaus
Office2016, Win10
gpswanderer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 07:53   #5
DeathSoldier01
Threadstarter Threadstarter
MOF User
MOF User
Standard

Sorry, hab es auf 2 Arten versucht:

Code:

Private Sub Befehl33_Click()
Dim shl As Object
Dim strPath As String
Dim strFilename As String
Dim strFilenameFull As String
Meldung = "Bitte Betriebsjahr eingeben."
Titel = "S.O.M.B.R.A. - DB Info"
Antwort = InputBox(Meldung, Titel)
strPath = CurrentProject.Path & "ALTE_JAHRE"
Set shl = CreateObject("Shell.Application")
shl.Open strPath & "Jahr_" & Antwort & ".accdb /runtime"
End Sub
Code:

Private Sub Befehl33_Click()
Dim shl As Object
Dim strPath As String
Dim strFilename As String
Dim strFilenameFull As String
Meldung = "Bitte Betriebsjahr eingeben."
Titel = "S.O.M.B.R.A. - DB Info"
Antwort = InputBox(Meldung, Titel)
strPath = CurrentProject.Path & "ALTE_JAHRE"
Set shl = CreateObject("Shell.Application")
shl.Open strPath & "Jahr_" & Antwort & ".accdb" & " /runtime"
End Sub
Lg

Geändert von DeathSoldier01 (16.04.2019 um 08:45 Uhr).
DeathSoldier01 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 09:06   #6
CatboyJones
MOF Profi
MOF Profi
Standard

Code:

sMSAccessPath = SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE /runtime "
Shell(sMSAccessPath & strPath & "Jahr_" & Antwort & ".accdb")
Eigentlich so:

Code:

If iAccessVersion > 14 Then
    ShellExecute(Application.hWndAccessApp, "open", sMSAccessPath, _
                      strPath & "Jahr_" & Antwort & ".accdb", "", SW_NORMAL)
Else
    Shell(...)
End If

Geändert von CatboyJones (16.04.2019 um 09:21 Uhr).
CatboyJones ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 09:33   #7
DeathSoldier01
Threadstarter Threadstarter
MOF User
MOF User
Standard

Mit der zweiten Variante gehts leider nicht, hab es so eingegeben:

Code:

Private Sub Befehl33_Click()
Dim strPath As String
Meldung = "Bitte Betriebsjahr eingeben."
Titel = "S.O.M.B.R.A. - Version 2018"
Antwort = InputBox(Meldung, Titel)
strPath = CurrentProject.Path & "ALTE_JAHRE"
If iAccessVersion > 14 Then
    ShellExecute(Application.hWndAccessApp, "open", sMSAccessPath, _
                      strPath & "Jahr_" & Antwort & ".accdb", "", SW_NORMAL)
Else
    Shell (sMSAccessPath & strPath & "Jahr_" & Antwort & ".accdb")
End If

End Sub
Hab ich das Falsch?

Mit der ersten Variante startet alles im Hintergrund

Geändert von DeathSoldier01 (16.04.2019 um 09:37 Uhr).
DeathSoldier01 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 11:14   #8
CatboyJones
MOF Profi
MOF Profi
Standard

Code:

sMSAccessPath = SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE"
ShellExecute(Application.hWndAccessApp, "open", sMSAccessPath, _
                  " /runtime " & strPath & "Jahr_" & Antwort & ".accdb", "", SW_NORMAL)
Versuche es mal so.

Der Shell-Befehl startet es bei Dir im Hintergrund?
Das kenne ich so nicht, das Problem bei Shell ist eigentlich,
dass das Fenster nicht wirklich den Focus erhält, und darum
das Ribbon nicht aktiv wird. Dies aber erst bei >A10.

Hast Du deinen Code mit der Open-Methode auch getestet?
So hatte ich nur die Run-Methode getestet und da kommt es
eben dazu, dass das Fenster im Hintergrund bleibt.

Edit

Dass du dazu das hier brauchst, ist dir schon klar?

Code:

Private Const SW_NORMAL = 1

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
                                                                               ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Geändert von CatboyJones (16.04.2019 um 11:21 Uhr).
CatboyJones ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 11:37   #9
ebs17
MOF Guru
MOF Guru
Standard

Code:

".accdb" => ".accdr"
Sollte man nicht einfach die Dateiendung in der Form abändern, dass die DB in Runtime-Modus gestartet wird?

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}:{12} <= geklammerte Zahlen sind Einzelthemen
Dein Dankeschön: DBWiki => Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 12:23   #10
DeathSoldier01
Threadstarter Threadstarter
MOF User
MOF User
Standard

Habe das bereits im VBA Code:

Code:

Option Compare Database
#If VBA7 Then
    Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#Else
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If
Habs jetzt so probiert (kommt immer noch Fehler beim kompilieren):

Code:

Private Sub Befehl33_Click()
Private Const SW_NORMAL = 1
Dim strPath As String
Meldung = "Bitte Betriebsjahr eingeben."
Titel = "S.O.M.B.R.A. - Version 2018"
Antwort = InputBox(Meldung, Titel)
strPath = CurrentProject.Path & "ALTE_JAHRE"
sMSAccessPath = SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE"
ShellExecute(Application.hWndAccessApp, "open", sMSAccessPath, _
" /runtime " & strPath & "Jahr_" & Antwort & ".accdb", "", SW_NORMAL)
End Sub
ich glaub ich bin zu blöd^^

Geändert von DeathSoldier01 (16.04.2019 um 12:31 Uhr).
DeathSoldier01 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 12:49   #11
CatboyJones
MOF Profi
MOF Profi
Standard

Code:

Dim sMSAccessPath As String
sMSAccessPath = SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE"
Call ShellExecute(Application.hWndAccessApp, "open", sMSAccessPath, _
                  " /runtime " & strPath & "Jahr_" & Antwort & ".accdb", "", SW_NORMAL)
CatboyJones ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 13:06   #12
DeathSoldier01
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat: von CatboyJones Beitrag anzeigen

Code:

Dim sMSAccessPath As String
sMSAccessPath = SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE"
Call ShellExecute(Application.hWndAccessApp, "open", sMSAccessPath, _
                  " /runtime " & strPath & "Jahr_" & Antwort & ".accdb", "", SW_NORMAL)

Hab das jetzt so eingebaut:

Code:

Private Sub Befehl33_Click()
Dim strPath As String
Dim sMSAccessPath As String
Private Const SW_NORMAL = 1
Meldung = "Bitte Betriebsjahr eingeben."
Titel = "S.O.M.B.R.A. - Version 2018"
Antwort = InputBox(Meldung, Titel)
strPath = CurrentProject.Path & "ALTE_JAHRE"
sMSAccessPath = SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE"
Call ShellExecute(Application.hWndAccessApp, "open", sMSAccessPath, _
                  " /runtime " & strPath & "Jahr_" & Antwort & ".accdb", "", SW_NORMAL)
End Sub
Jetzt kommt zwar kein Fehler mehr, es passiert aber nichts mehr.

EDIT: Ich habs gefunden (hier noch einmal der Code):

Code:

Private Sub Befehl33_Click()
Dim strPath As String
Dim sMSAccessPath As String
Meldung = "Bitte Betriebsjahr eingeben."
Titel = "S.O.M.B.R.A. - Version 2018"
Antwort = InputBox(Meldung, Titel)
strPath = CurrentProject.Path & "" & "ALTE_JAHRE" & ""
sMSAccessPath = SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE"
Call ShellExecute(Application.hWndAccessApp, "open", sMSAccessPath, _
" /runtime " & strPath & "Postbuch_Aschenwald_" & Antwort & ".accdb", "", SW_NORMAL)
End Sub
Vielen Dank für eure Hilfe!

Geändert von DeathSoldier01 (16.04.2019 um 13:17 Uhr).
DeathSoldier01 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.