Laden...

C# Access Datenbank - Index Out of Range - Exception

Erstellt von teebeutel vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.487 Views
T
teebeutel Themenstarter:in
3 Beiträge seit 2015
vor 9 Jahren
C# Access Datenbank - Index Out of Range - Exception

verwendetes Datenbanksystem: Access, VS

Hallo zusammen,

Ich google seit ein paar Stunden und probiere einige Dinge aus, leider komm ich auf keinen grünen Zweig!

DBcon.cs:

class DatabaseConnection
    {
        private string sql_string; // SQL-Abfrage
        private string strCon; // SQL-Verbindungs String

        OleDbDataAdapter da_1;

        public string OLE
        {
            set { sql_string = value; }
        }

        public string connection_string
        {
            set { strCon = value; }
        }

        public DataSet GetConnection
        {
            get { return MyDataSet(); }
        }

        private DataSet MyDataSet()
        {
            OleDbConnection con = new OleDbConnection(strCon);
            con.Open();

            da_1 = new OleDbDataAdapter(sql_string, con);

            DataSet dat_set = new DataSet();
            da_1.Fill(dat_set, "Tbl_Data");
            con.Close();

            return dat_set;
        }
    }

Admin.cs:



public partial class frmCMAP : Form
    {
        DatabaseConnection objConnect;
        string conString; // SQL-Verbindungs String

        DataSet ds;
        DataRow dRow; // Anzahl der Reihen

        int MaxRows;
        int inc = 0;


private void btnUserVerwaltung_Click(object sender, EventArgs e)
        {
            try
            {
                objConnect = new DatabaseConnection();
                conString = Properties.Settings.Default.CMAP___KundenlisteConnectionString;

                objConnect.connection_string = conString;
                objConnect.OLE = "SELECT Kunden_tbl.Kunde FROM Kunden_tbl WHERE Kunden_tbl.CID=1";

                ds = objConnect.GetConnection;
                MaxRows = ds.Tables[0].Rows.Count;

                NavigateRecords();

            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }
        }

        private void NavigateRecords()
        {
            dRow = ds.Tables[0].Rows[inc];
            tbCustomersStammdatenCID.Text = dRow.ItemArray.GetValue(1).ToString();
        }
    }

Leider bekomme ich immer den Fehler: > Fehlermeldung:

Der Index war außerhalb des ArrayBereichs..

kann mir jemand einen Denkanstoß geben?!
Hier taucht der Fehler auf:

private void NavigateRecords()
        {
            dRow = ds.Tables[0].Rows[inc];
            tbCustomersStammdatenCID.Text = dRow.ItemArray.GetValue(1).ToString();

DANKE!!

Hinweis von Coffeebean vor 9 Jahren

Bitte verwende einen aussagekräftigen Titel und die richtigen Code-Tags. Auch bei Fehlermeldungen. Hab beides korrigiert.
[Hinweis] Wie poste ich richtig? Punkt 3 und Punkt 6.

C
2.121 Beiträge seit 2010
vor 9 Jahren

Da wird ein Index aufgerufen den es nicht gibt. Gibt es Tables[0] und Rows[inc]? Oder hängts an der 1 in GetValue.

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo teebeutel,

der Fehler ist eindeutig. Einfach mal Debuggen. Irgendwo hast du ein Array und greifst auf etwas zu, was es nicht gibt. Siehe chilic's Antwort.

[Artikel] Debugger: Wie verwende ich den von Visual Studio?

Weiter solltest du auch die Verantwortlichkeiten trennen

[Artikel] Drei-Schichten-Architektur

Dann auch mal [Artikelserie] SQL: Parameter von Befehlen anschauen. Das hilft auch noch.

Gruss

Coffeebean

PS: Wenns geht nimm kein Access

16.834 Beiträge seit 2008
vor 9 Jahren

Als Info: neue Anwendungen entwickelt man heutzutage nicht mehr mit Access und bestehende versucht man von Access los zu lösen.
Streng genommen ist Access nicht mal eine Datenbank; wie gesagt ist die Daseinsberechtigung ohnehin nicht mehr gegeben bei Access.