Hallo Lukas... ich kenne Dein Problem. Hat mich am Anfang auch wahnsinnig gemacht.
Als erstes mußt Du alles vergessen wie was bei ASP 3.0 ging. Jetzt geht alles anders! Ist gar nicht so kompliziert wenn man nicht versucht zu vergleichen! Das meiste was jetzt kommt funktioniert und Du kannst damit starten! Bastele Dir daraus Deine eigene Datenbankklasse Hier sind Funktionen für Insert, Update, Select,Delete Vielleicht erklärst Du es dem nächten der die Liste anfragt :-) Gruß, Chris Ich hole mir zunächst von der Datenbank die Datensätze und fülle die in ein Dataset: Dim SqlQueryString="Select * from Tabellenname" Dim ds As New DataSet 'Für SQLServer: Using connection As New SqlConnection(ConnectionStringSQLServer) Dim adapter As New SqlDataAdapter() adapter.SelectCommand = New SqlCommand(SqlQueryString, connection) adapter.SelectCommand.CommandType = CommandType.Text adapter.Fill(ds) End Using 'für Access: Using connection As New OleDb.OleDbConnection(ConnectionStringAccess) Dim adapter As New OleDb.OleDbDataAdapter() adapter.SelectCommand = New OleDb.OleDbCommand(SqlQueryString, connection) adapter.Fill(ds) End Using ' Das Dataset kannst Du dann direkt als Datasource für ein Datagrid benutzen. setze AutogenerateColumns auf True und Du siehst sofort ein Ergebnis das Dataset kannst Du auch durchlaufen ähnlich wie das Recordset: For i as integer= 0 to ds.Tables(0).rows.count - 1 'hier hast du jetzt die einzelnen Datensätze response.write (ds.Tables(0).rows(i)("Spalte1") & "<br />") next 'oder Du machst es pro Zeile: For each Row as Datarow in ds.Tables(0).rows response.write (Row("Spalte1") & "<br />") next 'Du kannst auch die Spaltendurchlaufen: For each clm as Datacolumn in ds.Tables(0).columns response.write (clm.ColumnName & "<br />") next 'eine neue zeile fügst Du folgendermaßen ein: 'erst aus dem Dataset eine neie Row holen mit dem Schema dim Row as datarow =ds.Tables(0).NewRow row("Spalte1")="Wert1" row("Spalte2")="Wert2" row("Spalte3")="Wert3" 'Und dann an das Dataset wieder anheften: ds.Tables(0).Rows.add(row) 'UPDATE ist komplizierter... Es gibt auch die Möglichkeit das ganze Dataset an den Asapter zu übergeben: http://msdn2.microsoft.com/en-us/library/hsbz65f7(en-us,vs.80).aspx Ich habe da meine GurkenFunktion die mir aber treue Dienste leistet (was Du Brauchst ist Dein Dataset von oben und natürlich den Tabellenname und die ID) alles rein in die Funktion und der Update ist fertig. Public Function UpdateExecByDataset_KOOP(ByVal TableName As String, _ ByVal IDName As String, ByVal ds As DataSet) As Integer Dim returnValue As Integer Using connection As New OleDbConnection(AktConnection) For I As Integer = 0 To ds.Tables(0).Rows.Count - 1 Dim ID As Integer = CInt(ds.Tables(0).Rows(I)(IDName)) Dim strSelect As String = "select * from " & TableName & " where " & IDName & "=" & ID Dim SQL As String = "Update " & TableName & " SET " Dim adapter As OleDbDataAdapter = New OleDbDataAdapter(strSelect, connection) adapter.UpdateCommand = New OleDbCommand() adapter.UpdateCommand.CommandType = CommandType.Text Dim CommText As New OleDbCommand For Each clm As DataColumn In ds.Tables(0).Columns If clm.ColumnName.ToLower <> IDName.ToLower Then SQL &= clm.ColumnName & "=" & "@" & clm.ColumnName & ", " adapter.UpdateCommand.Parameters.AddWithValue( _ "@" & clm.ColumnName, _ ds.Tables(0).Rows(I)(clm.ColumnName) _ ) End If Next If Right(SQL, 2) = ", " Then SQL = Left(SQL, Len(SQL) - 2) SQL &= " where " & IDName & "=" & ID adapter.UpdateCommand.CommandText = SQL connection.Open() adapter.UpdateCommand.Connection = connection adapter.UpdateCommand.ExecuteNonQuery() connection.Close() returnValue = ID Next Return returnValue End Using End Function 'INSERT ebenso die berühmte Gurke: 'ACHTUNG! Du brauchst um die neue ID zu catchen ein Public Modul: Public Module gblVarRowUpdated 'NEEDED BY db.OnRowUpdated!!!!!!!! Public gblVarRowPK As String End Module 'und in der Klasse in der Dein DB-insert passiert folgenden Handler: Private Shared Sub OnRowUpdated(ByVal sender As Object, ByVal args As OleDbRowUpdatedEventArgs) Dim NEWID As Integer Dim da As OleDbDataAdapter = CType(sender, OleDbDataAdapter) Dim conn As OleDbConnection = da.SelectCommand.Connection Dim myCmd As OleDbCommand = New OleDbCommand("SELECT @@IDENTITY", conn) If args.StatementType = StatementType.Insert Then NEWID = CInt(myCmd.ExecuteScalar()) args.Row(gblVarRowPK) = NEWID 'NEEDS MODULE gblVarRowUpdated!!!!!!!! 'Evt. durch Hashtable ersetzen??? End If End Sub 'und hier die Insert-Funktion Public Function InsertExecByDataset_KOOP(ByVal TableName As String, _ ByVal IDName As String, ByVal ds As DataSet) As Integer Dim Returnvalue As Integer = 0 Using connection As New OleDbConnection(AktConnection) For I As Integer = 0 To ds.Tables(0).Rows.Count - 1 Dim strSelect As String = "select " & TableName '& " where " & IDName & "=" & ID Dim adapter As OleDbDataAdapter = New OleDbDataAdapter(strSelect, connection) adapter.InsertCommand = New OleDbCommand() adapter.InsertCommand.CommandType = CommandType.Text Dim strgSet As String = "" Dim strgValues As String = "" Dim CommText As New OleDbCommand For Each clm As DataColumn In ds.Tables(0).Columns If clm.ColumnName.ToLower <> IDName.ToLower Then strgSet &= "" & clm.ColumnName & ", " strgValues &= "@" & clm.ColumnName & ", " ' SQL &= clm.ColumnName & "=" & "@" & clm.ColumnName & ", " adapter.InsertCommand.Parameters.AddWithValue( _ "@" & clm.ColumnName, _ ds.Tables(0).Rows(I)(clm.ColumnName) _ ) End If Next Dim Parameter As New OleDbParameter Parameter.ParameterName = "@" & IDName Parameter.DbType = DbType.Int32 Parameter.Direction = ParameterDirection.Output If Right(strgSet, 2) = ", " Then strgSet = Left(strgSet, Len(strgSet) - 2) If Right(strgValues, 2) = ", " Then strgValues = Left(strgValues, Len(strgValues) - 2) Dim SQL As String = "Insert into " & TableName & " (" & strgSet & ")Values(" & strgValues & ");" ' SQL &= " Select @" & IDName & "= SCOPE_IDENTITY() ;" adapter.InsertCommand.CommandText = SQL connection.Open() adapter.InsertCommand.Connection = connection AddHandler adapter.RowUpdated, New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated) gblVarRowPK = IDName adapter.Update(ds) Returnvalue = CInt(dsValue(ds, IDName)) RemoveHandler adapter.RowUpdated, New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated) connection.Close() Try ' Returnvalue = CInt(adapter.InsertCommand.Parameters("@" & IDName).Value) Catch ex As Exception ' Returnvalue = -1 End Try Next End Using Return Returnvalue End Function 'Delete: Public Function DeleteExecByID(ByVal TableName As String, _ ByVal IDName As String, ByVal ID As Integer) As Integer Using connection As New OleDbConnection(AktConnection) Dim strSelect As String = "select " & TableName '& " where " & IDName & "=" & ID Dim adapter As OleDbDataAdapter = New OleDbDataAdapter(strSelect, connection) adapter.DeleteCommand = New OleDbCommand() adapter.DeleteCommand.CommandType = CommandType.Text Dim Parameter As New OleDbParameter Parameter.ParameterName = "@" & IDName Parameter.Value = ID Parameter.DbType = DbType.Int32 Parameter.Direction = ParameterDirection.Input adapter.DeleteCommand.Parameters.Add(Parameter) Dim SQL As String = " Delete from " & TableName & " where " & IDName & "=@" & IDName & ";" adapter.DeleteCommand.CommandText = SQL connection.Open() adapter.DeleteCommand.Connection = connection Dim ReturnValue As Integer = adapter.DeleteCommand.ExecuteNonQuery() connection.Close() Return ReturnValue End Using End Function Und zu guter letzt doch noch die Funktion mit der du das Dataset ziehst: Public Function GetDataset(ByVal SqlQueryString As String) As DataSet Dim ds As New DataSet Using connection As New OleDbConnection(AktConnection) Dim adapter As New OleDbDataAdapter() adapter.SelectCommand = New OleDbCommand(SqlqueryString , connection) adapter.SelectCommand.CommandType = CommandType.Text adapter.Fill(ds) End Using Return ds End Function _______________________________________________ Asp.net Mailingliste, Postings senden an: Asp.net@glengamoi.com An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net