Announcement

Collapse
No announcement yet.

ein DataGrid zwei DataAdapter

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ein DataGrid zwei DataAdapter

    Hallo Leute,
    ich komme mit einem Problem nicht weiter.
    Ich möchte eine Excel Datei einlesen, das klappt schonmal. Angezeigt habe ich sie in einem DataGrid.

    Jetzt sollen die Daten in die Datenbank geschrieben werden. Meine Theorie ist, dass ich einen zweiten DA erstellen muss, das DataGrid an den DA binden und nur noch DA.Update(DataTable)

    Mein Code zum laden der ExcelDatei ist:

    conn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};DBQ=e:\Fitschen\Test.xls"
    conn.Open()
    Me.OdbcDAExcel = New Odbc.OdbcDataAdapter("SELECT * FROM [Komponente$]", conn)

    Me.OdbcDAExcel.Fill(dtLoadKomp)
    conn.Close()

    Das funzt soweit, dass das Sheet "Komponente" im DataGrid dargestellt wird.

    Jetzt sollen die Daten nur noch in die Datenbank.
    Ich habs so versucht:

    Private Sub bSpeichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSpeichern.Click

    ' Speichern des Excel Datenblatts
    SqlConnLoad.Open()
    Try
    Me.SqlDAKomponente.Update(dtLoadKomp)
    SqlConnLoad.Close()
    Catch ex As Exception
    MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei Datenbankeintrag!")
    End Try
    End Sub

    Klappt leider nicht. Gibt auch keine Fehlermeldung.

    Die Datenbank selber funzt. In anderen Forms gebe ich die Daten per Hand ein.

    Bin ich überhaupt auf dem richtigen Weg???
    Oder sollte ich da ganz anders rangehen??

    Vielen Dank
    Holger

  • #2
    Hallo,
    die <b>Update</b>-Methode des SqlDataAdapters schreibt nur die Datensätze aus dem DataSet zurück, die den Status einer Änderung haben. Jedes DataRow-Objekt vermerkt seinen Status (siehe Eigenschaft <b>RowState</B>), so dass der SqlDataAdapter erkennen kann, ob dieser Datensatz neu eingefügt, geändert oder gelöscht wurde - somit kann der DataAdapter die jeweils passende SQL-Anweisung für diesen Datensatz ausführen. Ab ADO.NET 2.0 kann der Status (RowState) direkt aus dem Programm heraus gesetzt werden, dafür stehen zusätzliche DataRow-Methoden zur Verfügung:
    - <b>SetAdded</b>
    - <b>SetModified</b>


    &gt;Oder sollte ich da ganz anders rangehen??

    Siehe <i><a href="/webx?50@@.4a8751fb/0">Andreas Kosch "Excel-Dateien speichern" 25.10.2006 06:59</a></i&gt

    Comment

    Working...
    X