Laden...

[Excel] Einlesen: Leerzellen erkennung

Letzter Beitrag vor 14 Jahren 1 Posts 1.134 Views
[Excel] Einlesen: Leerzellen erkennung

Hallo Leute,
Ich fülle einen Datatable mit Daten aus Excel (OLEDB).
Dann setze ich einen Primärschlüssel auf eine Spalte (Davor entferne ich die Zeilen welche im Primärschlüssel leer sind).
Das funktioniert alles wunderbar.


                    oledbConn.Open();
                    OleDbCommand oledbCmd = new OleDbCommand(sqlExcel, oledbConn);
                    OleDbDataAdapter da = new OleDbDataAdapter(oledbCmd);
                    da.Fill(ds, tblProject); // Hier wirft er den Fehler beim 2. Mal

                    // Leere Zellen entfernen
                    foreach (DataRow rowDelete in ds.Tables[tblProject].Rows)
                    {
                        string srowDelete = rowDelete[3].ToString();
                        if (srowDelete == "")
                        {
                            rowDelete.Delete();
                        }
                    }
                    // Primärschlüssel
                    ds.Tables[tblProject].PrimaryKey = new DataColumn[] { ds.Tables[tblProject].Columns[3] };
                    ds.Tables[tblProject].AcceptChanges();

Nun möchte ich das ganze Rücksetzen damit ich z.B. den Vorgang wiederholen kann:


            ds.Tables[tblProject].PrimaryKey = null;
            ds.Clear();

Wenn ich den Vorgang wiederhole (gleiche Datei einlesen) wirft das Programm einen Fehler welchen ich nicht nachvollziehen kann (verstehen schon):

ConstraintException:
Einschränkungen konnten nicht aktiviert werden. Mindestens eine Zeile enthält Werte die die Einschränkungen non-null, unique or foreign-key verletzen.

Das Problem ist dass nun eine Leerzeile vorhanden ist (welche beim 1. Durchlauf aber gefunden und gelöscht wurde).
Ich denke dass der Primärschlüssel das Problem erzeugt.

Was zudem noch suspekt ist:
Wenn ich die Exception abfange und nochmals zurücksetze und den Vorgang (Einlesen) wiederhole, dann funktioniert es.

Warum funktioniert es beim 2. Einlesen der gleichen Datei nicht, aber beim 1 + 3 - nten Mal schon?

Danke schon Mal für eure Hilfe!!

Gruß
Cyn

wenn ich dann alles zurücksetze