vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
MS 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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)]

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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