Autor Beitrag
Student91
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 04.02.10 23:18 
Hi Leute bin neu hier und hab mich mal ein bisschen umgeschaut aber leider nichts passendes zu meinem Problem gefunden. Also wenn ich Button 2 klicke soll die Datenbank aktualisiert werden das funktioniert aber nur wenn ich den Code aus der Form_Load auskommentieren diesen Code brauch ich später aber für die Suche. Es kommt immer die Fehlermeldung Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt, vielleicht kann mir ja einer von euch helfen schonmal vielen Dank im voraus!

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
namespace Datenbank
{
    public partial class FormMitarbeiter : Form
    {
        public FormMitarbeiter()
        {
            InitializeComponent();
        }
        private OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Bank.mdb;");
        //private OleDbConnection conn = new OleDbConnection("Provider=MSDAORA.1;User ID= FOI1_Frigge_08;password=Louis;Data Source=BBS;");
        private OleDbDataAdapter da = null;
        private DataSet ds = null;
        private DataView dv = null;
        

        private void FormMitarbeiter_Load(object sender, EventArgs e)
        {
            
            
                OleDbCommand cmd = new OleDbCommand("Select * FROM Mitarbeiter", conn);
                da = new OleDbDataAdapter(cmd);
                DataTable dt = new DataTable("MitarbeiterListe");
                conn.Open();
                da.Fill(dt);
                conn.Close();
                dv = new DataView(dt);

                foreach (DataColumn c in dt.Columns)
                    comboBox1.Items.Add(c.ColumnName);
                comboBox1.SelectedIndex = 0;
                dataGridView1.DataSource = dv;

        }
       
        public DataSet getMitarbeiter()
        {
            string tab = "SELECT * FROM Mitarbeiter";
            da = new OleDbDataAdapter(tab, conn);
            conn.Open();
            DataSet ds = new DataSet();
            da.Fill(ds, "Mitarbeiter");
            conn.Close();
            return ds;
        }
        public void setMitarbeiter(ref DataSet ds)
        {
            OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
            conn.Open();
            da.Update(ds, "Mitarbeiter");
            conn.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.DataSource = null;
            ds = getMitarbeiter();
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "Mitarbeiter";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            
            
            DataSet ds1 = ds.GetChanges();

            if (ds1 != null)
            {
                try
                {
                    setMitarbeiter(ref ds1);
                    ds.Merge(ds1);
                    ds.AcceptChanges();
                    MessageBox.Show("Datenbank wurde aktualisiert!");
                    this.Refresh();
                }
                catch (Exception ex)
                {
                    
                    MessageBox.Show(ex.Message, "Fehler");
                    conn.Close();
                }
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
           

            dv.Sort = comboBox1.Text;
            switch (comboBox1.SelectedIndex)
            {
                case 0: dv.RowFilter = "Convert(MitarbeiterID,'System.String') LIKE'" + textBox1.Text + "%'";
                    break;
                case 1: dv.RowFilter = "Convert(Bankleitzahl,'System.String') LIKE'" + textBox1.Text + "%'";
                    break;
                case 2: dv.RowFilter = dv.Sort + " LIKE '" + textBox1.Text + "%'";
                    break;
                case 3: dv.RowFilter = dv.Sort + " LIKE '" + textBox1.Text + "%'";
                    break;
                case 4: dv.RowFilter = "Convert(Gehalt,'System.String') LIKE'" + textBox1.Text + "%'";
                    break;
                case 5: dv.RowFilter = "Convert(Geburtsdatum,'System.String') LIKE'" + textBox1.Text + "%'";
                    break;

            }
        }
    }
}


Moderiert von user profile iconKha: C#-Tags hinzugefügt
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 05.02.10 09:10 
Hallo und :welcome: ,

wenn du eine Fehlermeldung bekommst, wäre es sehr hilfreich für uns, wenn du diese komplett zeigst. Ich kenne den Grund für deinen Fehler, muss nun aber erstmal Zeile für Zeile deinen Code durch gehen um zu finden wo das Objekt nicht gesetzt ist. Das Objekt setzt du vermutlich in deiner Load-Methode und hast deshalb dann kein Problem wenn du den Ode dort drin hast.

ich such mal weiter ...

Wah.. endlich gefunden!

Also: Wenn du den Code aus deiner Load-Methode kommentierst wird keine Instanz deines OleDbDataAdapter erstellt (Variable da). In der Button2-Methode versuchst du über die SetMitarbeiter irgendwas komisches .. auf jedenfall übergibst du dort dem OleDbCommandBuilder die Referenz von da. Da diese auf Null zeigt (wenn du den Code im Form_Load rausnimmst) bekommst du eine NullPointException.

Hoffe das hilf dir weiter.. mich hat es nämlich viel Zeit gekostet, den Code-Wirrwarr zu ordnen.

Gruß Daniel
Student91 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 06.02.10 18:13 
Hallo erstmal vielen Dank für deine Antwort!! Es hilft mir leider nicht weiter, weil z.B. wenn ich den Quellcode aus der Form_load auskommentiere der Button_2click wunderbar funktioniert nur wenn ich das drinnen habe geht es nicht und ich verstehe nicht warum sorry??
Vielleicht hast du ja noch eine Idee, wenn ja würde ich mich über eine Antwort sehr freuen bis dahin vielen Dank.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 06.02.10 23:57 
Wo die Exception überhaupt auftritt, hast du uns jetzt leider immer noch nicht verraten.

_________________
>λ=
Student91 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 07.02.10 00:03 
Ja sorry hatte ich vergessen die tritt bei DataSet ds1 = ds.GetChanges(); ich versteh nicht was ich da ändern muss.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 07.02.10 00:42 
Wenn du davor nicht auf Button 1 gedrückt hast, ist das kein großes Wunder, oder? Mit dem Code in _Load hat das aber nichts zu tun.

_________________
>λ=
Student91 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 08.02.10 17:11 
Erstmal vielen Dank für die Antworten davor! Wie kann ich das machen das ich nicht vorher auf Button1 drücken muss hast du da vielleicht ne Idee oder einen Ansatz für mich?