2017-03-05 4 views
0

Kann mir jemand helfen, dieses Skript in C# zu konvertieren? Ich bin immer noch sehr beginner und lerne in C#. Das Skript verwendet OpenCurrentDatabase, um eine Access MDB-Datei zu öffnen (und offen zu halten), ich muss diese Methode und den Code verwenden, wie es ist, aber in C# konvertiert, jede Hilfe würde sehr geschätzt werden.Konvertieren eines VBScript in C#

Ich benutze Editor, um die CS-Datei und csc.exe zu kompilieren (ich habe keine anderen C# -Tools).

dim fso  
Set fso = CreateObject("Scripting.FileSystemObject") 

dim filePath 
filePath = fso.GetParentFolderName(WScript.ScriptFullName) 
filePath = filePath & "\test.mdb" 
'WScript.Echo filePath 

If (fso.FileExists(filePath)) Then 
    dim appAccess 
    set appAccess = createObject("Access.Application") 
    appAccess.visible = true 
    appAccess.UserControl = true 'To leave the application open after the script completes you need to set the UserControl property to true. 
    appAccess.OpenCurrentDatabase filePath, True, "mypassword" 
Else 
    WScript.Echo "File doesn’t exist" 
End If 
+0

Müssen Sie die Datenbank öffnen, damit ein Benutzer manuell darauf zugreifen kann, oder werden Sie programmatisch (mit C#) einfügen/abfragen? – Bassie

Antwort

0

Wenn Sie Ihre VBScript irgendwo gespeichert sind, können Sie sie in C# Aufruf mit

System.Diagnostics.Process.Start(@"P:\ath\to\Script.vbs"); 

Wenn Sie nur eine Verbindung zur Datenbank öffnen müssen:

// Declare the path to the database file 
var filePath = @"Path\to\database.accdb"; 

// If statement using File.Exists() 
if (File.Exists(filePath)) 
{ 
    // Create new OleDbConnection object and call Open() 
    var conn = new OleDbConnection($"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={filePath}"); 
    conn.Open(); 
} 
else 
{ 
    // Write to the console if the file does not exist 
    Console.WriteLine("The file does not exist"); 
} 

Sie werden benötigen Sie System.Data.OleDb zu verwenden OleDbConnection und System.IO für File.Exists()

Hoffe, das hilft

+0

Bassie, Öffnen Sie die eigentliche Datenbank (keine Verbindung), und ich brauche OpenCurrentDatabase, weil ich ein Datenbankkennwort übergeben. Sicher kann ein einfaches C# -Skript dies erreichen, ohne dass ich andere Programme installieren muss. Können Referenzen nicht mit Late Dynamic Binding vermieden werden? –

+0

Bassie kann ich meine vbscript Zeilen in Code wie unten hinzufügen? Ich bekomme gui Fehler werden nicht kompilieren? wie würde das gemacht werden? Typ scriptType = Type.GetTypeFromCLSID (Guid.Parse ("0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC")); dynamisches obj = Activator.CreateInstance (scriptType, false); obj.Language = "vbscript"; Zeichenfolge vbscript = "msgbox (\" test \ ")"; obj.Eval (vbscript); –

+0

@pdeman Ich habe meine Antwort an der Spitze bearbeitet - hilft das? Damit können Sie Ihr VBScript wie in der CS-Datei ausführen. Sie können bei Bedarf auch Argumente hinzufügen – Bassie