Hi,
ich bin noch ein ziemlicher Neuling, der sich gerade in das Thema "Programmierung mit C#" einarbeitet. Weiterhin kaue ich schon länger an meinem Problem rum, obwohl ich schon viel nach Lösungen gesucht habe. Folgende Ziele habe ich vor, die ich mit C# erreichen möchte:
Folgende Möglichkeiten habe ich schon ausprobiert:
Anbei poste ich wohl am besten meinen kompletten Code rein. Falls ihr noch andere Verbesserungsvorschläge habt, so sind diese natürlich willkommen! Ich danke euch schon mal im Vorraus für eure Antworten.
Grüße Stefan
ich bin noch ein ziemlicher Neuling, der sich gerade in das Thema "Programmierung mit C#" einarbeitet. Weiterhin kaue ich schon länger an meinem Problem rum, obwohl ich schon viel nach Lösungen gesucht habe. Folgende Ziele habe ich vor, die ich mit C# erreichen möchte:
- Die Commandline zu zerpflücken, damit nur noch die Kundennummer übrig bleibt.
- Eine accdb Datenbank zu öffnen.
- Ein bestimmtes Formular zu öffnen.
- Die Kundennummer in das Formular einfügen und ausführen.
Folgende Möglichkeiten habe ich schon ausprobiert:
- Process.Start -> Damit kann ich die DB zwar öffnen, aber soweit ich weiß, habe ich keine Möglichkeit auf ein bestimmtes Formular zu zugreifen. -> Scheidet also aus.
- Über Access.Application -> Ich habe das zwar drin, aber es funktioniert nicht. Die Datenbank wird nicht aufgerufen. Dieser Weg wäre wohl am Besten um nachher ein Formular öffnen zu können.
- Über OleDbConnection -> Hier wird zwar die Connection zur Datenbank hergestellt, aber Access wird nicht geöffnet. Habe ich hier etwas übersehen?
Anbei poste ich wohl am besten meinen kompletten Code rein. Falls ihr noch andere Verbesserungsvorschläge habt, so sind diese natürlich willkommen! Ich danke euch schon mal im Vorraus für eure Antworten.
Grüße Stefan
Quellcode
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Data.OleDb;
- using System.Diagnostics;
- using System.Windows.Forms;
- using Access = Microsoft.Office.Interop.Access;
- namespace ConnectTtoAccdb
- {
- class Program
- {
- public static string kundennr;
- static void Main(string[] args)
- {
- try
- {
- if (args.Length == 0) // Prüfen, ob Environment.CommandLine 0 Zeichen beinhaltet.
- {
- keineKundennr(); // Hat die Environment.CommandLine 0 Zeichen, so wird die Methode "keineKundennr" aufgerufen.
- }
- else // Falls nein, so gibt es eine Kundennr.
- {
- Console.WriteLine(Environment.CommandLine);
- Console.ReadLine();
- splittenCommandLine(); // Die Methode "splittenCommandLine" wird aufgerufen.
- //openAccess(); // Wurde nur auskommentiert, da die Methode nicht die DB aufruft.
- openDB();
- }
- }
- catch (Exception ex) // Fehler wird abgefangen.
- {
- Console.WriteLine(ex.Message);
- Console.WriteLine("Die Länge der Kundennummer ist unter 0");
- }
- }
- private static void keineKundennr()
- {
- string myMeldung = "Die Kommandozeile ist leer.";
- string appName = AppDomain.CurrentDomain.FriendlyName;
- Console.WriteLine("{0}{1}{1}{2}{1}Es wird eine Telefonnummer oder eine Kundennummer benötigt.", appName, Environment.NewLine, myMeldung); // Bei keiner Kundennr wird diese Zeile ausgegeben.
- Console.ReadLine();
- }
- private static void splittenCommandLine()
- {
- string commandLine = Environment.CommandLine; // Die commandLine wird als String abgespeichert.
- string substringAbBindestrich = commandLine.Substring(commandLine.LastIndexOf('-') + 1); // Der String wird nach dem Bindestrich aufgetrennt.
- Console.WriteLine(substringAbBindestrich); // Der String wird (alles nach dem Bindestrich) ausgegeben.
- kundennr = substringAbBindestrich.Substring(substringAbBindestrich.LastIndexOf(':') + 1); // Der String wird nach dem Doppelpunkt aufgetrennt.
- Console.WriteLine(kundennr); // Der String wird (alles nach dem Doppelpunkt) ausgegeben.
- }
- public static void openAccess()
- {
- Access.Application oAccess = null;
- oAccess = new Access.ApplicationClass();
- oAccess.OpenCurrentDatabase("C:\\Users\\sf\\Desktop\\MeinTest.accdb", true);
- // oAccess.DoCmd.OpenForm("MSB", Access.AcFormView.acNormal, System.Reflection.Missing.Value,"[Ku_Nr]"); // Mein 1. Versuch um ein Formular zu öffnen. Auskommentiert um zu testen, ob die DB wenigstens aufgerufen wird.
- }
- public static void openDB()
- {
- string connetionString = null;
- OleDbConnection cnn;
- connetionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\\Users\\sf\\Desktop\\MeinTest.accdb";
- cnn = new OleDbConnection(connetionString);
- try
- {
- cnn.Open();
- MessageBox.Show("Connection Open ! ");
- cnn.Close();
- }
- catch (Exception ex)
- {
- MessageBox.Show("Can not open connection ! ");
- }
- }
- }
- }