Zum Inhalt springen

Loewchen0507

Mitglieder
  • Gesamte Inhalte

    45
  • Benutzer seit

  • Letzter Besuch

Beiträge von Loewchen0507

  1. Hi an alle,

    also zuerstmal vielen dank für die ganzen Anregungen... ich habe die Lösung gefunden... :D und entschuldigt die späte Antwort... aber mich hatte zwischenzeitlich die Sommergrippe erwischt :(

    Wie bin ich vorgegangen:

    ich habe mir eine neue Applikation gebaut und ein dort per Knopfklick das Alter Table Statement ausgeführt und es funktionierte... dann bin ich auf die Suche gegangen... wo liegt der unterschied... der Rechner ist der Gleiche und die Installationen damit auch... also konnte es nur an den beiden Applikationen liegen... ja und da hatte ich auch schon den größten unterschied... das eine ist eine Applikation und das andere ein Dienst... dann irgendwann kam ich mal auf die Idee die Anmeldungen am SQL Server zu überprüfen und da war es auch schon... Ich bin an meinem Rechner immer als User einer Domain angemeldet... mein Service allerdings hat sich immer mit local angemeldet... und da war es.. ich habe dann für den Service die Anmeldungen geändert und siehe da, es funktioniert... Mein lokaler Benutzer hatte keine Vollzugriffsrechte auf die mdb und durfte daher nicht ändern, während ich mit dem Benutzer einer Domain diese Rechte besaß... dumm dumm dumm ... :upps das Leben kann so einfach sein...

    Also zusammenfassend gesagt lag es an den Rechten des Benutzers mit denen sich der Dienst angemeldet hat... ändert man die Anmeldedaten oder die Rechte des Benutzers funktioniert alles einwandfrei...

    Trotzdem danke an Euch alle für Eure Unterstützung und ich freue mich shcon auf meine nächste Aufgabe ("Problem") die ich mit Euch zusammen erörtern darf.

    LG Loewchen :D

  2. das Problem war, dass ich vor dem Open das gemacht habe... schussligkeit aber jetzt bekomme ich diese Fehlermeldung:

    kein installierbares ISAM gefunden wenn ich den Code benutze:

    
                        CobraConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Properties.CoWi.Default.CobraDB + ";Exclusive=1;";
    
                        CobraConn = new OleDbConnection(CobraConnStr);
    
                        CobraAlterCommand = new OleDbCommand("ALTER TABLE addresses ADD COLUMN mesoprim TEXT(50);", CobraConn);
    
                        CobraAlterCommand.CommandType = CommandType.Text;
    
                        CobraConn.Open();
    
                        CobraAlterCommand.Connection.ChangeDatabase("DemoCoWiTest.mdb");
    
                        CobraAlterCommand.ExecuteNonQuery();
    
    
    mega komisch... lasse ich die zeile
    CobraAlterCommand.Connection.ChangeDatabase("DemoCoWiTest.mdb");

    weg, dann kommt wieder: Datenbank schreibgeschützt.

    LG Loewchen

  3. Hi,

    genau das ALTER TABLE Statement das ich im Code habe läuft in der Access.mdb

    Ich habe auch schon versucht:

    CobraAlterCommand.Connection.ChangeDatabase("DemoCoWiTest.mdb");
    und:
    CobraConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Properties.CoWi.Default.CobraDB + ";Exclusive=1;";

    also mit Exclusive=1; aber irgendwie klappt das nicht.

    LG Loewchen

  4. Hi,

    ich hoffe Ihr könnt mir helfen.

    Ich möchte gerne während der Laufzeit meines Programmes eine Änderung in einer Tabelle einer Access Datenbank vornehmen.

    Dabei bin ich wie folgt vorgegangen:

    1. Verbindung zur Datenbank herstellen

    2. AlterTable Statement

    Meine Umsetzung wie folgt:

    
    OleDbConnection CobraConn;
    
    
    CobraConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Properties.CoWi.Default.CobraDB;
    
    CobraConn = new OleDbConnection(CobraConnStr);
    
    CobraConn.Open();
    
    
    CobraAlterCommand = new OleDbCommand("ALTER TABLE addresses ADD COLUMN mesoprim TEXT(50);", CobraConn);
    
    CobraAlterCommand.CommandType = CommandType.Text; 
    
    CobraAlterCommand.ExecuteNonQuery();
    
    

    Vielleicht gehe ich die ganze Sache ja auch komplett falsch an??? Dennoch hoffe ich, dass Ihr mir helfen könnt.

    LG Loewchen

  5. Debuggen geht leider nicht.

    Aber von dem was ich bisher an Ausgaben sehe gibt es eigentlich nur eine Möglichkeit. Bei der Herstellung der Verbindung zum SQL Server.

    Die Daten (Server, Datenbank, User und Passwort) sind richtig. Mit den gleichen Daten kann ich mich von allen Workstations auf den SQL Server einloggen.

    Was ist wenn auf der Workstation kein SQL Server installiert ist und nur der ODBC Treiber... sollte doch trotzdem funktionieren oder???

    Was muss alles auf der Workstation installiert sein?

    - .NET Framework 2.0

    - ODBC Treiber

    oder benötige ich noch mehr?

    LG Loewchen

  6. Hi Leute,

    Ich habe in C# ein kleines Progrämmchen geschrieben welches eine DatenbankVerbindung zu einem SQLServer (2000 oder 2005) aufbaut. Dort ein paar Änderungen vornimmt und das war's auch schon. Läuft auf X-Rechnern wunderbar. Bis zum heutigem Zeitpunkt. Auch ein WindowsXP Rechner mit dem gleichen ODBC Treiber, versucht auf den Server zuzugreifen und folgende Fehlermeldung wird angezeigt:

    System.Collections.ListDictionaryInternal

    Void HandleError(System.Data.Odbc.OdbcHandle, RetCode)

    Die Rechte des Benutzers auf dem Server habe ich schon überprüft. Alles wunderbar. Die Anmeldung am SQLServer eroflgt grundsätzlich mit dem sa.

    Ich hoffe jemand von Euch kann mir weiter helfen denn durch Google bin ich nicht schlauer geworden. Warum tritt der Fehler hier auf und wie kann ich Ihn beheben?

    LG Loewchen

  7. Hi,

    Falls es jemanden interessiert poste ich hier mal ein stückchen Code von mir.

    Vielleicht kann es ja mal jemand gebrauchen.

    Falls jemand einen Kommentar dazu abgeben möchte, Verbesserungsvorschläge hat oder oder oder dann immer her damit... ich bin noch am lernen und bin für jede konstruktive Kritik zu haben.

    
                try
    
                {
    
                    // Deklaration
    
                    Boolean Update = false;
    
                    String UpdateStatement = "";
    
                    String SQLConnStr = "";
    
                    String AccessConStr = "";
    
                    OdbcConnection SQLconn;
    
                    OleDbConnection AccessConn;
    
                    OdbcCommand SQLCommand;
    
                    OleDbCommand AccessCommand;
    
                    OdbcDataReader SQLreader;
    
                    OleDbDataReader AccessReader;
    
                    int Richtung = 0;
    
    
                    // Initialisierung
    
                    // SQL Connectionstring und Connection
    
                    SQLConnStr = "Driver={SQL Server};Server=" + Properties.CoWi.Default.SQLServer + ";Database=" + Properties.CoWi.Default.SQLDB +
    
                                 ";UID=" + Properties.CoWi.Default.SqlUser + ";PWD=" + Properties.CoWi.Default.SQLPWD + ";";
    
                    SQLconn = new OdbcConnection(SQLConnStr);
    
                    // AccessConnectionString und Connection
    
                    AccessConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Properties.CoWi.Default.AccesDB;
    
                    AccessConn = new OleDbConnection(AccessConStr);
    
                    // Richtung / 1 = ACCESS -> SQL / 2 = SQL -> ACCESS
    
                    Richtung = Properties.CoWi.Default.Richtung;
    
    
                    // Verbindungsaufbau zum SQL Server
    
                    SQLconn.Open(); // Verbindung öffnen
    
                    // Verbindungsaufbau zur Access Datenbank
    
                    AccessConn.Open(); // Connection öffnen
    
    
                    if (SQLconn.State == ConnectionState.Open && AccessConn.State == ConnectionState.Open)
    
                    {
    
                        if (Richtung == 1) // MDB -> SQL
    
                        {
    
                            // Command zum auslesen und vergleichen
    
                            AccessCommand = new OleDbCommand("Select <Spalten> from <Tabelle>", AccessConn);
    
                            AccessCommand.CommandType = CommandType.Text;
    
    
                            // MDB Reader
    
                            AccessReader = AccessCommand.ExecuteReader();
    
                            do
    
                            {
    
                                // Command zum auslesen und vergleichen (WinLine)
    
                                // Select Anweisung anpassen auf EINEN DATENSATZ
    
                                SQLCommand = new OdbcCommand("Select <Spalten> From <Tabelle>", SQLconn);
    
                                SQLCommand.CommandType = CommandType.Text;
    
    
                                // SQL Reader
    
                                SQLreader = SQLCommand.ExecuteReader();
    
    
                                if (SQLreader.HasRows) // Datensatz vorhanden
    
                                {
    
                                    //vergleiche Datensätze
    
                                    for (int i = 0; i < 20; i++)
    
                                    {
    
                                        if (AccessReader[i].ToString() != SQLreader[i].ToString())
    
                                        {
    
                                            UpdateStatement = UpdateStatement + "<Spalte> = <Wert>";
    
                                            Update = true;
    
                                        }
    
                                    }
    
    
                                    if (Update)
    
                                    {
    
                                        SQLCommand.CommandText = "Update <Tabelle> SET " + UpdateStatement + " WHERE <Bedingung>;";
    
                                        SQLCommand.ExecuteNonQuery();
    
                                    }
    
                                }
    
                                else // Datensatz ist nicht vorhanden
    
                                {
    
                                    // Füge Datensatz hinzu
    
                                    // SQL anpassen
    
                                    SQLCommand.CommandText = "INSERT INTO <Tabelle>(Spalte1, Spalte2, ... , SpalteN)" +
    
                                                             "VALUES (<Wert1>, <Wert2>, ... , WertN);";
    
                                    SQLCommand.ExecuteNonQuery();
    
                                }
    
    
                                // SQLReader Schließen
    
                                SQLreader.Close();
    
    
                            } while (AccessReader.NextResult());
    
    
                            // AccessReader Schließen
    
                            AccessReader.Close();
    
                        }
    
                        else // SQL -> MDB
    
                        {
    
                        }
    
                    }
    
                    else
    
                    {
    
                        EventLog myEventLog = new EventLog();
    
                        myEventLog.Source = "CoWiSource";
    
    
                        if (SQLconn.State == ConnectionState.Open)
    
                        {
    
                            myEventLog.WriteEntry("Verbindung zur AccessDatenbank konnte nicht aufgebaut werden");
    
                        }
    
                        else
    
                        {
    
                            myEventLog.WriteEntry("Verbindung zur SQLServerDatenbank konnte nicht aufgebaut werden");
    
                        }
    
                    }
    
    
                    SQLconn.Close();
    
                    AccessConn.Close();
    
                }
    
                catch (Exception ex)
    
                {
    
                    // Anweisungen 
    
                    DateTime Time;
    
                    Time = DateTime.Now;
    
                    string Project = "";
    
                    StreamWriter writer;
    
    
                    MessageBox.Show("Ein Fehler ist aufgetreten. Bitte überprüfen Sie Ihre Einstellungen in der Konfiguration. \n" + ex.Data.ToString() + "\n" + ex.Message.ToString() + "\n" + ex.TargetSite.ToString(),
    
                    "Exception",
    
                    MessageBoxButtons.OK,
    
                    MessageBoxIcon.Error,
    
                    MessageBoxDefaultButton.Button2);
    
    
                    Project = Path.GetFullPath("CoWi-Dienst.exe");
    
                    Project = Project.Substring(0, Project.Length - 15) + "Exception.txt";
    
                    // Ist datei nicht vorhanden wird sie erzeugt und gefüllt
    
                    if (!File.Exists(Project))
    
                    {
    
                        // Datei wird erzeugt
    
                        using (StreamWriter sw = File.CreateText(Project))
    
                        {
    
                            sw.WriteLine(Time + "  Exception");
    
                            sw.WriteLine(Time + "  " + ex.Data.ToString());
    
                            sw.WriteLine(Time + "  " + ex.Message.ToString());
    
                            sw.WriteLine(Time + "  " + ex.Source.ToString());
    
                            sw.WriteLine(Time + "  " + ex.TargetSite.ToString());
    
                            sw.Close();
    
                        }
    
                    }
    
                    // Ist sie vorhanden wird der Inhalt der Datei gesichert (helper)
    
                    // und in die neue Datei geschrieben
    
                    // dann erst wird alles neue angefügt
    
                    else
    
                    {
    
                        String helper = "";
    
                        helper = File.ReadAllText(Project);
    
                        writer = File.CreateText(Project);
    
                        writer.WriteLine(helper);
    
                        writer.WriteLine(Time + "  Exception");
    
                        writer.WriteLine(Time + "  " + ex.Data.ToString());
    
                        writer.WriteLine(Time + "  " + ex.Message.ToString());
    
                        writer.WriteLine(Time + "  " + ex.Source.ToString());
    
                        writer.WriteLine(Time + "  " + ex.TargetSite.ToString());
    
                        writer.Close();
    
                    }
    
                }
    
                finally
    
                {
    
                    // Abschlussarbeiten 
    
                }
    
            }
    
    

    LG Loewchen

  8. Hi,

    es handelt sich um ca. 10.000 Adress-Datensätze. Die Tabellen sind ähnlich aber nicht identisch.

    Ich habe mich gestern noch ein bisschen belesen zu Datasets. Habe etwas über Merge gelesen, was bei mir aber nicht in Frage kommt, da ich zwar mit ein paar geschickten Select Abfragen die Tabellen ähnlich gestalten kann aber zumindest den Key bekomme ich nicht identisch hin.

    Ich habe noch etwas gelesen über Datasets die man als XML im Arbeitsspeicher oder auch auf dem Rechner sichern kann um dann damit weiter arbeiten zu können. Nur bei 10.000 Datensätzen ist die Frage was hier wirklich sinnvoll ist. Bei dieser Menge an Daten möchte ich auch nicht den ersten Datensatz nehmen dann die andere Tabelle durchgehen und gucken bis ich den passenden Datensatz gefunden habe, ihn dann vergleichen und gegebenenfalls dann ändern oder hinzufügen. Das dauert doch viel zu lang.

    Ich bin mit meiner Planung hier noch nicht wirklich zufrieden. Hoffe Ihr habt hier noch ein paar super Ideen.

    LG Loewchen

  9. Hi,

    Von SQL nach MDB OK???

    Aber von MDB nach SQL???

    außerdem habe ich nicht die Möglichkeit auf dem SQLServer solche Änderungen vorzunehmen. Ich will es per Code machen.

    Gruß Loewchen

  10. Ich schon wieder,

    ist eigentlich nur eine kurze Frage.

    Ich möchte aus zwei Datenbanken die Daten vergleichen bzw. aktuallisieren.

    Nun meine Frage:

    Welche der folgenden Varianten ist schneller?

    1. Die Daten in per Dataset speichern, vergleichen und nur die unterschiedlichen Datensätze aktualisieren?

    2. Die Daten nicht in ein Dataset laden sondern direkt vergleichen und den jeweiligen Datensatz aktualisieren?

    2. oder ein SQL Statement für die Aktualisierung aller Datensätze los zu schicken, egal ob unterschiedlich oder nicht?

    Freue mich schon auf antworten.

    LG Loewchen

  11. Hi an alle,

    Also die Sache mit dem GUI werde ich wie folgt lösen:

    Ich schreibe ein extra Projekt welches die XML Datei editiert. Das ist das einfachste und schnellste und funktioniert sogar.

    Sobald ich mit dem Dienst fertig bin werde ich etwas zusammenschreiben. Eine Art Leitfaden für das erstellen von Diensten und einer entsprechenden KonfigurationsApplication. Vielleicht hilft das hier jemandem weiter.

    LG Loewchen

  12. Hi,

    ich habe herausgefunden woran es lag.

    Es waren zwei Probleme.

    Zuerst war es nur das Problem, dass ich einen Netzwerkpfad angegeben habe: S:\test\test\test.mdb

    Das zweite Problem ist dann erst während der ganzen Änderungen entstanden. Ich hatte den connectionString der Access DB erweitert mit:

    + ";Mode=ReadWrite;Persist Security Info=False"

    in der Windows Anwendung war das an dieser Stelle auch kein Problem. Im Dienst jedoch schon.

    Nun stellen Sich mir nur noch zwei Fragen:

    1. Warum werden keine Fehlermeldungen geschmissen, bzw. kein Fehlerprotokoll geschrieben wie in der Fehlerbehandlung zu sehen ist?

    2. Warum funktioniert die Connection mit dem angefügten String (siehe oben) bei einer WindowsAnwendung einwandfrei und bei dem WindowsDienst nicht?

    Liebe Grüße Loewchen

    PS.: und danke für Deine Bemühungen.

  13. Oh ein Spezi, *freu*

    also mir geht es darum einen dienst laufen zu haben, der inständig zwischen der WinLine und Cobra bestimmte Adressdaten abgleicht, falls Änderung in dem einen oder in dem anderen Programm vorgenommen wurde. Die Richtung kann Konfiguriert werden und Cobra kann auch als MDB laufen... leider...

    Wie ich das mit dem GUI umsetze weiß ich inzwischen schon. Momentan ist mein Problem eher die Datenbankverbindung zur Access Datenbank, während das in einer normalen Windows Applikation funktioniert läuft der gleiche Code in als Dienst nicht mehr... *schulterzuck* bin dem ganzen n och nicht auf die Spur gekommen...

    LG Loewchen

  14. Hi,

    jetzt verstehe ich die Welt nicht mehr...

    der gleiche Code in einer Windows Application funktioniert...

    Warum funktioniert dieser Code als Windows Anwendung aber als Windows Dienst nicht?

    Gibts da noch Grundlegende Unterschiede auf die Geachtete werden muss???

    
    using System;
    
    using System.Collections.Generic;
    
    using System.Windows.Forms;
    
    using System.ComponentModel;
    
    using System.Data;
    
    using System.Diagnostics;
    
    using System.Text;
    
    using System.Timers;
    
    using System.Drawing;
    
    using System.Data.OleDb;
    
    using System.Data.Odbc;
    
    using System.IO;
    
    
    namespace CoWiTest
    
    {
    
        static class Program
    
        {
    
            /// <summary>
    
            /// Der Haupteinstiegspunkt für die Anwendung.
    
            /// </summary>
    
            [STAThread]
    
            static void Main()
    
            {
    
                System.Timers.Timer aTimer = new System.Timers.Timer();
    
    
                // Hook up the Elapsed event for the timer.
    
                aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
    
    
                // Set the Interval to 2 seconds (2000 milliseconds).
    
                aTimer.Interval = 30000;
    
                aTimer.Enabled = true;
    
    
                // Keep the timer alive until the end of Main.
    
                GC.KeepAlive(aTimer);
    
    
                Application.EnableVisualStyles();
    
                Application.SetCompatibleTextRenderingDefault(false);
    
                Application.Run(new Form1());
    
    
    
            }
    
            private static void OnTimedEvent(object source, ElapsedEventArgs e)
    
            {
    
                try
    
                {
    
                    // Deklaration
    
                    OdbcConnection SQLconn;
    
                    String SQLConnStr;
    
                    OleDbConnection AccessConn;
    
                    String AccessConStr;
    
    
                    // EventLog Eintrag
    
                    EventLog myEventLog = new EventLog();
    
                    myEventLog.Source = "CoWiSource";
    
                    myEventLog.WriteEntry("Try Connection");
    
    
                    // Verbindungsaufbau zum SQL Server mit
    
                    // Connectionstring:
    
                    SQLConnStr = "Driver={SQL Server};Server=NAGEL;Database=CONTEMP;UID=sa;PWD=dragon;";
    
                    SQLconn = new OdbcConnection(SQLConnStr);
    
                    SQLconn.Open(); // Verbindung öffnen
    
    
                    if (SQLconn.State.ToString() == "Open")
    
                        myEventLog.WriteEntry("SQL Connected");
    
                    else
    
                        myEventLog.WriteEntry("SQL Not Connected");
    
    
                    myEventLog.WriteEntry("start Access Connection");
    
                    // Access Connection aufbauen
    
                    AccessConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Properties.Settings.Default.Access + ";Mode=ReadWrite;Persist Security Info=False";
    
    
                    using (AccessConn = new OleDbConnection(AccessConStr))
    
                    {
    
                        myEventLog.WriteEntry("jetzt öffnen mit: " + AccessConStr);
    
                        AccessConn.Open(); // Connection öffnen
    
    
                        //if (AccessConn.State.ToString() == "Open")
    
                        if (AccessConn.State == ConnectionState.Open)
    
                            myEventLog.WriteEntry("AccessConnection");
    
                        else
    
                            myEventLog.WriteEntry("Access Not Connected");
    
                    }
    
    
                    SQLconn.Close();
    
                    AccessConn.Close();
    
                }
    
                catch (Exception ex)
    
                {
    
                    // Anweisungen 
    
                    DateTime Time;
    
                    Time = DateTime.Now;
    
                    string Project = "";
    
                    StreamWriter writer;
    
    
                    MessageBox.Show("Ein Fehler ist aufgetreten. Bitte überprüfen Sie Ihre Einstellungen in der Konfiguration. \n" + ex.Data.ToString() + "\n" + ex.Message.ToString() + "\n" + ex.TargetSite.ToString(),
    
                    "Exception",
    
                    MessageBoxButtons.OK,
    
                    MessageBoxIcon.Error,
    
                    MessageBoxDefaultButton.Button2);
    
    
                    Project = Path.GetFullPath("CoWi-Dienst.exe");
    
                    Project = Project.Substring(0, Project.Length - 15) + "Exception.txt";
    
                    // Ist datei nicht vorhanden wird sie erzeugt und gefüllt
    
                    if (!File.Exists(Project))
    
                    {
    
                        // Datei wird erzeugt
    
                        using (StreamWriter sw = File.CreateText(Project))
    
                        {
    
                            sw.WriteLine(Time + "  Exception");
    
                            sw.WriteLine(Time + "  " + ex.Data.ToString());
    
                            sw.WriteLine(Time + "  " + ex.Message.ToString());
    
                            sw.WriteLine(Time + "  " + ex.Source.ToString());
    
                            sw.WriteLine(Time + "  " + ex.TargetSite.ToString());
    
                            sw.Close();
    
                        }
    
                    }
    
                    // Ist sie vorhanden wird der Inhalt der Datei gesichert (helper)
    
                    // und in die neue Datei geschrieben
    
                    // dann erst wird alles neue angefügt
    
                    else
    
                    {
    
                        String helper = "";
    
                        helper = File.ReadAllText(Project);
    
                        writer = File.CreateText(Project);
    
                        writer.WriteLine(helper);
    
                        writer.WriteLine(Time + "  Exception");
    
                        writer.WriteLine(Time + "  " + ex.Data.ToString());
    
                        writer.WriteLine(Time + "  " + ex.Message.ToString());
    
                        writer.WriteLine(Time + "  " + ex.Source.ToString());
    
                        writer.WriteLine(Time + "  " + ex.TargetSite.ToString());
    
                        writer.Close();
    
                    }
    
                }
    
                finally
    
                {
    
                    // Abschlussarbeiten 
    
                }
    
            }
    
    
        }
    
    }
    
    

    LG Loewchen

  15. Hi,

    Das Using war nur ein verzweifelter versuch um eventuell den Fehler zu finden...

    Der Timer läuft momentan auf 30000 msek also 30 sek... hatte ihn aber auch shcon mal auf eine stunde... ziemlich komisch... ich änder das mit dem using nochmal und verlängere die zeitspanne mal auf 10 minuten, mal sehen was dann passiert... :)

    LG Loewchen

  16. hi Steinadler,

    debuggen geht noch nicht, dass ist ein Dienst, muss ich erst noch debug fertig machen...

    hier nochmal der komplette code:

    
            private static void OnTimedEvent(object source, ElapsedEventArgs e)
    
            {
    
                try
    
                {
    
                    // Deklaration
    
                    //OdbcCommand SQLCommand;
    
                    //OdbcDataReader SQLreader;
    
                    OdbcConnection SQLconn;
    
                    //OdbcTransaction transaction = null;
    
                    String SQLConnStr;
    
                    OleDbConnection AccessConn;
    
                    //OleDbCommand AccessCommand;
    
                    //OleDbDataReader reader;
    
                    String AccessConStr;
    
                    int Richtung;
    
                    int DBArt;
    
    
                    // Initialisierung
    
                    // Richtung
    
                    // 1 = WinLine -> Cobra
    
                    // 2 = Cobra -> WinLine
    
                    Richtung = Properties.CoWi.Default.Richtung;
    
    
                    // Cobra DB - Art
    
                    // 1 -> MDB
    
                    // 2 -> SQL
    
                    DBArt = Properties.CoWi.Default.CobraDB;
    
    
                    // EventLog Eintrag
    
                    EventLog myEventLog = new EventLog();
    
                    myEventLog.Source = "CoWiSource";
    
                    myEventLog.WriteEntry("Try Connection");
    
    
                    // Verbindungsaufbau zum SQL Server mit
    
                    // Connectionstring:
    
                    SQLConnStr = "Driver={SQL Server};Server=" + Properties.CoWi.Default.SQLServer + ";Database=" + Properties.CoWi.Default.SQLDB +
    
                                 ";UID=" + Properties.CoWi.Default.SqlUser + ";PWD=" + Properties.CoWi.Default.SQLPWD + ";";
    
                    SQLconn = new OdbcConnection(SQLConnStr);
    
                    SQLconn.Open(); // Verbindung öffnen
    
    
                    if (SQLconn.State.ToString() == "Open")
    
                        myEventLog.WriteEntry("SQL Connected");
    
                    else
    
                        myEventLog.WriteEntry("SQL Not Connected");
    
    
                    myEventLog.WriteEntry("start Access Connection");
    
                    // Access Connection aufbauen
    
                    AccessConStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Properties.CoWi.Default.AccesDB + "; Mode=ReadWrite; Persist Security Info=False";
    
    
                    using (AccessConn = new OleDbConnection(AccessConStr))
    
                    {
    
                        myEventLog.WriteEntry("jetzt öffnen mit: " + AccessConStr);
    
                        AccessConn.Open(); // Connection öffnen
    
    
                        //if (AccessConn.State.ToString() == "Open")
    
                        if (AccessConn.State == ConnectionState.Open) 
    
                            myEventLog.WriteEntry("AccessConnection");
    
                        else
    
                            myEventLog.WriteEntry("Access Not Connected");
    
                    }
    
    
                    SQLconn.Close();
    
                    AccessConn.Close();
    
                }
    
                catch (Exception ex)
    
                {
    
                    // Anweisungen 
    
                    DateTime Time;
    
                    Time = DateTime.Now;
    
                    string Project = "";
    
                    StreamWriter writer;
    
    
                    MessageBox.Show("Ein Fehler ist aufgetreten. Bitte überprüfen Sie Ihre Einstellungen in der Konfiguration. \n" + ex.Data.ToString() + "\n" + ex.Message.ToString() + "\n" + ex.TargetSite.ToString(),
    
                    "Exception",
    
                    MessageBoxButtons.OK,
    
                    MessageBoxIcon.Error,
    
                    MessageBoxDefaultButton.Button2);
    
    
                    Project = Path.GetFullPath("CoWi-Dienst.exe");
    
                    Project = Project.Substring(0, Project.Length - 15) + "Exception.txt";
    
                    // Ist datei nicht vorhanden wird sie erzeugt und gefüllt
    
                    if (!File.Exists(Project))
    
                    {
    
                        // Datei wird erzeugt
    
                        using (StreamWriter sw = File.CreateText(Project))
    
                        {
    
                            sw.WriteLine(Time + "  Exception");
    
                            sw.WriteLine(Time + "  " + ex.Data.ToString());
    
                            sw.WriteLine(Time + "  " + ex.Message.ToString());
    
                            sw.WriteLine(Time + "  " + ex.Source.ToString());
    
                            sw.WriteLine(Time + "  " + ex.TargetSite.ToString());
    
                            sw.Close();
    
                        }
    
                    }
    
                    // Ist sie vorhanden wird der Inhalt der Datei gesichert (helper)
    
                    // und in die neue Datei geschrieben
    
                    // dann erst wird alles neue angefügt
    
                    else
    
                    {
    
                        String helper = "";
    
                        helper = File.ReadAllText(Project);
    
                        writer = File.CreateText(Project);
    
                        writer.WriteLine(helper);
    
                        writer.WriteLine(Time + "  Exception");
    
                        writer.WriteLine(Time + "  " + ex.Data.ToString());
    
                        writer.WriteLine(Time + "  " + ex.Message.ToString());
    
                        writer.WriteLine(Time + "  " + ex.Source.ToString());
    
                        writer.WriteLine(Time + "  " + ex.TargetSite.ToString());
    
                        writer.Close();
    
                    }
    
                }
    
                finally
    
                {
    
                    // Abschlussarbeiten 
    
                }
    
            }
    
    

    bedanke mich wirklich für eure bemühungen... ich bin wirklich verzweifelt und sehe den dämlichen fehler nicht...

    LG Loewchen

  17. Hi Leute,

    beim herstellen der Connection zur Access DB bekomme ich ein Problem... hier wird anscheinend nichts gemacht.

    
    AccessConStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=S:\Cobra\Demodaten\DemoCoWiTest.mdb"
    
    
                    using (AccessConn = new OleDbConnection(AccessConStr))
    
                    {
    
                        myEventLog.WriteEntry("jetzt öffnen mit: " + AccessConStr);
    
                        AccessConn.Open(); // Connection öffnen
    
    
                        if (AccessConn.State.ToString() == "Open")
    
                            myEventLog.WriteEntry("AccessConnection");
    
                        else
    
                            myEventLog.WriteEntry("Access Not Connected");
    
                    }
    
    

    ähnlicher Code (nur mit ODBC) für eine Verbindung zu einem SQLServer funktioniert einwandfrei. Aber hier bekomme ich in den Eventlogs zwar noch "jetzt öffnen:" und den String raus. Aber dann nichts mehr... kann mir jemand helfen?

    LG Loewchen + danke schon mal im voraus

  18. OK Reden wir mal ganz kurz Klartext...

    Also Falls euch WinLine und Cobra etwas sagen und ihr diese kennt dann wüßtet ihr bescheid... ich habe schon meine Gründe... ;) aber dennoch danke für Eure Hilfe, ich denke damit komme ich jetzt ein ganzes Stück weiter... Die XML sachen habe ich gestern abend zufälligerweise in einem buch gelesen (vielleicht sollte ich doch öfter mal in meine bücher gucken, steht mehr drin als gedacht)...

    Ich habe es geschafft die XML Datei zu ändern und das ganze sieht auch schon recht passabel aus... Ich werde hier spätestens am Wochenende meine vorgehensweise Posten... Falls nochmal jemand soetwas gebrauchen könnte... (auch wenn es alternative und bessere Lösungen gibt ;) )

    Die Kritik nehme ich mir gerne zu herzen und werde sie sicherlich bei späteren Umsetzungen mit bedenken, aber manchmal muss man Umwege gehen um zum Ziel zu gelangen da der naheliegendste Weg oft große Gefahren birgt.

    LG Loewchen

  19. weil der SQL Server zu einem Programm gehört und ich nicht dort rumfurwerken möchte sondern die Grenzen eines Dienstes austesten möchte... So habe ich ein Programm/Dienst, den ich jederzeit erweitern kann und nicht immer erst auf den Server rauf und dort Änderungen machen, die dann Auswirkung auf alle Benutzer haben die den Server benutzen...

    und zu der settings datei...

    komisch... als ich damit angefangen hatte und mit dem gucken hatte ich die settingsdatei geöffnet und ich konnte nur hyroglyphen sehen, aber wer weis womit windows die geöffnet hat... also gut sorry... da habe ich mich vertan... :hells:

    und um auf das eigentlich zurückzukommen... d.h. solange ich der benutzer bin für den der dienst installiert ist kann ich die datei öffnen und gegebenenfalls Änderungen dran vornehmen... gibt es in .NET dann noch spezielle Möglichkeiten XML dateien auszulesen oder mache ich das genauso wie bei Textdateien??? Und sind die Änderungen sofort aktiv? Oder werden diese erst Aktiv wenn ich den deinst gstoppt und wieder gestartet habe??? Bzw. kann ich OnContinue vom Dienst von meiner Application aus aufrufen und dort die Einstellungen neu einlesen???

    Sorry falls ich nerve, aber nur wer fragt lernt dazu... ;)

    LG Loewchen

  20. hm... nein,

    ich habe ja die Klasse des dienstes... und in diesem dienst gibt es eine Datei in visual studio heißen die .settings, dort kann ich soetwas wie die anmeldedaten zum SQL Server sichern... das gute ist, dass das dann eine datei ist, die man nicht einfach so öffnen kann und die passwörter auslesen kann...

    ich wollte nun eine application schreiben in der ich die konfigurationen dort ändern kann... weis aber nicht ob und wenn wie ich da ran komme...

    LG Loewchen

  21. OK das habe ich verstanden... aber wie kann ich nun die Konfiguration des Dienstes über die Anwendung steuern???

    Ich habe im dienst eine settings1.settings Datei in der ich die Konfigurationen sichere. Weis aber nicht, wie ich die über die andere Applikation ändern kann... Habe irgendwo etwas mit Remoting gelesen... aber komme damit nicht wirklich klar... kann ich mein Problem damit lösen???

    Kannst Du mir da helfen?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...