Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Problem mit Connection zur Access MDB

Empfohlene Antworten

Veröffentlicht

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

Hi Leute,

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

ä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

Pack das ganze doch mal in try-catch und guck, ob er sich da verrammelt

schon gemacht... ist da drum rum gebaut... Ich bekomme keine Fehlermeldung... Leider...

nein es läuft ganz normal weiter...

es kommt während dessen mehrmals an diese stelle, und immer wieder passiert das gleiche in den eventlogs sehe ich immer wieder die gleichen ausgaben, nur nicht die, die ich gerne möchte... :(

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

Wie oft findet das denn statt???

Wie schnell tickt der Timer?

Mach ihn einfach mal langsamer.

Ansonsten kann ich nicht richtig verstehen, für was du das "using" dort unten benutzt. Ich finde, du brauchst das nicht.

Änder das mal...


OleDbConnection 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");

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

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

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.