2017-07-20 3 views
0

Ich habe eine MS-Access-Datenbank, die für die Verwaltung meiner anderen MS-Access-Datenbanken :)Run app.SaveAsText der Ferne in einem gesicherten Ms-Access-Datenbank

Nennen wir es gewidmet: AppManager

Ich speichere In diesem Bereich gibt es Informationen zu anderen Dbs, die ich entwickelt habe.

-all von ihnen verschiedene Arbeitsgruppen-Datei (en), welche Sicherheits-Berechtigungen verwendet wird pro Benutzer zu implementieren/Group-

die Lage von MDB/.MDW wird zusammen mit dem Benutzernamen in meinem AppManager gespeichert & Kennwort (des Verwalters)

Hinweise:

  • AppManager ist für meinen eigenen Nutzen -Da ich der Administrator/Entwickler jener Dbs-

  • bin -zu spezifisch 2003-

  • .mdw die Sicherheit Arbeitsgruppe-Datei ist (ohne dass eine gesicherte Db kann nicht geöffnet werden)

  • .mdb ist, weil in unserer Firma sind wir noch MS-Access 2k mit

Jetzt habe ich eingebaut verschiedene Funktionalitäten in AppManager: wie Gruppen/Benutzer Informationen anzeigen, ein Passwort, andere benutzerdefinierte Funktionen Zurücksetzen ... etc

ich versuche, ein neues Feature zu AppManager hinzufügen , die es mir ermöglichen, alle zu exportieren Objekte innerhalb jeder dieser Dbs fern -von innen AppManager-

Hier ist dieser Code:

Function ConnectSecuredDB 
    (MDBPath As String, MDWPath As String, UserName As String, Password As String) As Boolean 

     Dim wsp As Workspace, db As Database, objEngine As DBEngine 

     Set objEngine = New PrivDBEngine 

     objEngine.SystemDB = MDWPath 
     Set wsp = objEngine.CreateWorkspace("New", UserName, Password, dbUseJet) 

     Set db = wsp.OpenDatabase(MDBPath) 

     'I Do some stuff here... 

     db.Close 
     wsp.Close 

     Set db = Nothing 
     Set wsp = Nothing 
    End Function 

ich den oben Code mit dem Application-Objekt kombinieren müssen, die wie DoCmd, SaveAsText Methoden

hat dieser Code von MSDN -aber das Problem genommen, dass es nicht mit gesicherter-mdw Datenbanken- befaßt:

Dim appAccess As Access.Application 

     Sub DisplayForm() 

     Dim strDB as String 

     ' Initialize string to database path. 
     Const strConPathToSamples = "C:\Program " _ 
    & "Files\Microsoft Office\Office11\Samples\" 

     strDB = strConPathToSamples & "Northwind.mdb" 

     ' Create new instance of Microsoft Access. 
     Set appAccess = _ 
     CreateObject("Access.Application") 

     ' Open database in Microsoft Access window. 
     appAccess.OpenCurrentDatabase strDB 

     ' Open Orders form. 
     appAccess.DoCmd.OpenForm "Orders" 
     End Sub 

in meinem Fall würde ich h ave die letzte Zeile zu ersetzen:

 With db.Containers("Modules") 
      For Each doc In .Documents 
      appAccess.SaveAsText acModule, doc.Name, "C:\temp\" & doc.Name & ".mod" 
      Next doc 
     End With 
     'and repeat it with other objects reports, macros, ... 

meine ConnectSecuredDB Funktion übernehmen keine Access.Application Objekt

irgendwelche Ideen, wie-um dies zu erreichen?

Ich hoffe, dass es eine Problemumgehung gibt.

Dank

Antwort

1

Nach der Suche mehr extensiv bewirtschafteten ich mit diese Lösung Inspiriert von "An Article"(ich habe hinzugefügt meine Berührung)

-Code zu kommen:

Dim app 
Dim db As Database, doc As Document 
Dim DBPath As String, MDWPath As String 
Dim UserName As String, Password As String 
Dim strRunCmd As String, msaccessPath As String 

Set app = CreateObject("Access.Application") 

DBPath = "D:\My Documents\myDb.mdb" 'full path of DB 
MDWPath = "D:\My Documents\Secured.mdw" 'full path of Workgroup file 
Username = "your User id" 'a legitimate user account (in the workgroup) 
Password = "user's password" 

msaccessPath = "C:\Program Files\Office2003\Office11\msaccess.exe" 

strRunCmd = """" & msaccessPath & """ """ & DBPath & """ /WRKGRP """ & MDWPath & """ /User """ & UserName & """ /Pwd " & Password 
Shell strRunCmd, vbMaximizedFocus 

Do 
    Set app = GetObject(DBPath) 
    DoEvents 
Loop While app Is Nothing 

Set db = app.CurrentDb 

bkPath = "C:\Temp\bkDB\" 
With db.Containers("Forms") 
    For Each doc In .Documents 
     app.SaveAsText acForm, doc.Name, bkPath & doc.Name & ".frm" 
    Next doc 
End With 
'repeat the loop to other object types such as reports, modules, macros 

'cleanup 
app.CloseCurrentDatabase 
app.Quit 
Set app = Nothing 

db.Close 
Set db = Nothing 
Verwandte Themen