Hallo,
kann man den Datenbankzugriff noch optimieren?
Ablaufbeschreibung:
Abfragen, ob der Datensatz schon vorhanden ist.
Wenn ja - Feld "Anzahl" +1.
Wenn nein - Datensatz einfügen.
Die Daten sind alle Ganzzahlen.
Danke, Gruß Klaus
'Abfragen ob der Datensatz schon vorhanden ist Anzahl = 0 cmd10.Parameters.Clear() cmd10.CommandText = "SELECT COUNT (*) As Anzahl FROM DATENaus WHERE Z1 = @Z1 and Z2 = @Z2 and Z3 = @Z3 and Z4 = @Z4 and Z5 = @Z5 and Z6 = @Z6 and Z7 = @Z7 and Z8 = @Z8 and Z9 = @Z9 and Z10 = @Z10" cmd10.Parameters.AddWithValue("@Z1", Z1) cmd10.Parameters.AddWithValue("@Z2", Z2) cmd10.Parameters.AddWithValue("@Z3", Z3) cmd10.Parameters.AddWithValue("@Z4", Z4) cmd10.Parameters.AddWithValue("@Z5", Z5) cmd10.Parameters.AddWithValue("@Z6", Z6) cmd10.Parameters.AddWithValue("@Z7", Z7) cmd10.Parameters.AddWithValue("@Z8", Z8) cmd10.Parameters.AddWithValue("@Z9", Z9) cmd10.Parameters.AddWithValue("@Z10", Z10) Kombi = Convert.ToInt32(cmd10.ExecuteScalar()) 'Wenn Datensatz vorhanden - Anzahl +1 If Kombi = 1 Then cmd10.Parameters.Clear() cmd10.CommandText = "SELECT TOP 1 * FROM DATENaus WHERE Z1 = @Z1 and Z2 = @Z2 and Z3 = @Z3 and Z4 = @Z4 and Z5 = @Z5 and Z6 = @Z6 and Z7 = @Z7 and Z8 = @Z8 and Z9 = @Z9 and Z10 = @Z10" cmd10.Parameters.AddWithValue("@Z1", Z1) cmd10.Parameters.AddWithValue("@Z2", Z2) cmd10.Parameters.AddWithValue("@Z3", Z3) cmd10.Parameters.AddWithValue("@Z4", Z4) cmd10.Parameters.AddWithValue("@Z5", Z5) cmd10.Parameters.AddWithValue("@Z6", Z6) cmd10.Parameters.AddWithValue("@Z7", Z7) cmd10.Parameters.AddWithValue("@Z8", Z8) cmd10.Parameters.AddWithValue("@Z9", Z9) cmd10.Parameters.AddWithValue("@Z10", Z10) Dim dr10 As Common.DbDataReader = cmd10.ExecuteReader() If (dr10.Read()) Then Anzahl = dr10("Anzahl") ID = dr10("ID") End If dr10.Close() dr10.Dispose() Anzahl = Anzahl + 1 cmd10.Parameters.Clear() cmd10.CommandText = "UPDATE DATENaus SET Anzahl = @Anzahl WHERE ID = @ID " cmd10.Parameters.AddWithValue("@ID", ID) cmd10.Parameters.AddWithValue("@Anzahl", Anzahl) cmd10.ExecuteNonQuery() Else 'Datensatz anlegen Anzahl = 1 cmd10.Parameters.Clear() cmd10.CommandText = "INSERT DATENaus (Anzahl, Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, Z9, Z10) VALUES (@Anzahl, @Z1, @Z2, @Z3, @Z4, @Z5, @Z6, @Z7, @Z8, @Z9, @Z10)" cmd10.Parameters.AddWithValue("@Z1", Z1) cmd10.Parameters.AddWithValue("@Z2", Z2) cmd10.Parameters.AddWithValue("@Z3", Z3) cmd10.Parameters.AddWithValue("@Z4", Z4) cmd10.Parameters.AddWithValue("@Z5", Z5) cmd10.Parameters.AddWithValue("@Z6", Z6) cmd10.Parameters.AddWithValue("@Z7", Z7) cmd10.Parameters.AddWithValue("@Z8", Z8) cmd10.Parameters.AddWithValue("@Z9", Z9) cmd10.Parameters.AddWithValue("@Z10", Z10) cmd10.Parameters.AddWithValue("@Anzahl", Anzahl) cmd10.ExecuteNonQuery() End If