| |
ADO.NET / DatenbankenMS SQL - Zeilen rauslöschen! | | | Autor: Cheffboss | Datum: 23.03.16 17:09 |
| Moin!
Weiß jemand, mit welchen Befehl ich alle Zeilen ab 15 Löschen kann?
Also alle anderen Werte sollen gelöscht werden.
Da ich möchte dass meine Toplist nicht zu groß wird,
möchte ich dies Begrenzen!
BIG THX
Bild:
http://www.directupload.net/file/d/4302/tlgtlty5_png.htm | |
Re: MS SQL - Zeilen rauslöschen! | | | Autor: Manfred X | Datum: 23.03.16 18:30 |
| Hallo!
Eine Datatable (Dataset) mit allen Datensätzen durch Select-Abfrage füllen,
die "Rowstate"-Eigenschaft aller Table-Zeilen ab Rowindex 15
auf "Deleted" setzen (Delete-Methode der DataRow-Klasse)
und das "Update"-Kommando ausführen.
Sei "dt" die Datatable:
For i As Integer = dt.Rows.Count - 1 To 15 Step -1
dt.Rows(i).Delete()
Next i
Beitrag wurde zuletzt am 23.03.16 um 18:36:30 editiert. | |
Re: MS SQL - Zeilen rauslöschen! | | | Autor: DotNetErbse | Datum: 24.03.16 07:30 |
| Ich würde eher eine Datetime-Spalte beim Insert mit getdate() in der Tabelle haben und einen Trigger für Insert, der die jeweils ältesten Datensätze löscht.
Dann kommst du ganz ohne Code aus und die DB kümmert sich um den Rest.
Mit freundlichen Gr??en
DotNetErbse
[Es hei?t Paket und nicht Packet, auch wenn Standard augenscheinlich von Standar(t)e kommt,hei?t es dennoch Standar(d)] | |
Re: MS SQL - Zeilen rauslöschen! | | | Autor: Manfred X | Datum: 24.03.16 12:11 |
| Hallo!
Das würde ich nicht tun.
Bei Toplisten geht es gewöhnlich um den Eintrag der Top-Werte
(High-Scores, fallend sortiert) und nicht um das Datum,
an dem ein bestimmter Score erzielt worden ist. | |
Re: MS SQL - Zeilen rauslöschen! | | | Autor: Cheffboss | Datum: 24.03.16 17:12 |
| @an alle
Vielen Dank, für eure Antwort.
Leider könnte ich das Problem nicht lösen.
Das man mit "DELETE FROM" Datensätze löschen kann das weiß ich.
Aber leider kann ich die WHERE Klausel nicht richtig programmieren.
Da ich nicht weiß wie ich die Anzahl der Werte ermittelt, und alle ab 15 Löschen kann.
Dies muss doch auch irgendwie möglich sein?
Freue mich auf guten Rat!
Vielen Dank! | |
Re: MS SQL - Zeilen rauslöschen! | | | Autor: Manfred X | Datum: 24.03.16 18:03 |
| Datensätze in einer Datenbank-Tabelle haben keine
definierte Abfolge. Da gibt es kein "ab 15 löschen",
weil nicht eindeutig ist, welche Sätze übrig bleiben sollen.
Was ist Dein Auswahl-Kriterium?
- die ZeilenID
- das Datum
- die Zahl der Fehler
- der Inhalt einer anderen (numerischen) Spalte
Der einfachste Weg:
Lade die gesamte Tabelle (kritische Spalten, alle Sätze)
per ADO.Net und lege die benötigte Sortierspalte/Sortierrichtung
für die Datensätze fest.
Dann kannst Du - wie gezeigt - die Sätze
ab Zeile 15 im Speicher löschen und ein Update
der Tabelle machen.
Zu klären wäre auch, was geschieht, wenn nach dem
Sortieren gemäß einer Spalte die Zeilen 14, 15, 16 jeweils
den gleichen Wert in dieser Spalte enthalten.
Eventuell ist es erforderlich, hierarchisch zu sortieren
(= mehrere Spalten einbeziehen).
Beitrag wurde zuletzt am 24.03.16 um 18:11:19 editiert. | |
Re: MS SQL - Zeilen rauslöschen! | | | Autor: Cheffboss | Datum: 26.03.16 16:42 |
| @An alle
Super, Vielen Dank für eure Hilfe.
Ich habe das Problem nun doch noch anders lösen können.
Ich prüfe ob die Tabelle in der Datenbank >=15 ist,
falls Ja, lösche ich dies.
Und fange neu an, damit die Datenbank später übersichtlich beleibt!
BIG THX!
Code:
Private Sub Button8_Click(sender As System.Object, e As System.EventArgs) _
Handles Button8.Click
If Sql.GetSQLText("SELECT Count(*) FROM tblTiere") >= 15 Then
Sql.SetSQL("DELETE FROM tblTiere")
MsgBox("alle einträge gelöscht!")
End If
End Sub | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|