Floh-2001 Geschrieben 2. September 2009 Geschrieben 2. September 2009 Hallo , Ich suche schon seit längerem eine lösung um mein Datagrid nach einem Absolut-wert zu sortieren. Auch hier im Forum hab Ich nichts gefunden. Vielleicht kann mir einer Helfen, wäre sehr Dankbar. Habe Folgendes Problem Ich habe im Datagridview eine Spalte mit Zahlen (Positiv und Negativ) und die möchte Ich gerne Sortieren. Beispiel: 100 -20 -50 76 32 -4 2 50 usw. die möchte Ich gerne folgendermasen Sortiert haben. 2 -4 -20 32 50 -50 76 100 Hier mein Script: ** erg_div ist die Spalte die Sortiert werden soll bs_ja.EndEdit() da_ja.Update(ds_ja.Tables(0)) dt_ja.Clear() da_ja.Fill(dt_ja) Dim cbss As New DataView(dt_ja) cbss.Sort = "erg_div asc" bsss_ja.DataSource = cbss DataGridViewr1.DataSource = bsss_ja Danke für Eure Hilfe Zitieren
.NETter Geschrieben 5. September 2009 Geschrieben 5. September 2009 Hallo, du suchst also den Absoluwert zu deinen Ausgaben. Du musst im DataGridview eine weitere berechnete Spalte hinzufügen. Du änderst Die Abfrage für die Datenbindung wie in dem Beispiel hier: --Code für SQL Server (TSQL) SELECT id, zahl, POWER(POWER(zahl, 2), 0.5) AS Absolutwert FROM Zahlen ORDER BY Absolutwert Ich habe hier nur eine id und das Feld Zahl in der Tabelle. Die Spalte mit dem Absolutwert kannst Du auch auf Visible = False setzen. Habe das mal getestet und gibt eine Sortierung nach dem Zahlenwert unabhängig vom Vorzeichen zurück. Gruß, Thomas Zitieren
Floh-2001 Geschrieben 8. September 2009 Autor Geschrieben 8. September 2009 Hallo Thomas Ich arbeite nicht mit einer sql Datenbank sondern einer Access Datenbank. Trotzdem hab Ich dein Scrip ausprobiert und habe es wie folgt eingebaut ds_ja.Tables.Add(dt_ja) da_ja = New OleDbDataAdapter("SELECT *, POWER(POWER(erg_div, 2), 0.5) AS Absolutwert FROM Zahlen", con_ja) da_ja.Fill(dt_ja) Dim cb As New OleDbCommandBuilder(da_ja) Dim cbs As New DataView(dt_ja) cbs.Sort = "absolutwert" bs_ja.DataSource = dt_ja bss_ja.DataSource = cbs DataGridView1.DataSource = bss_ja DataGridView1.Refresh() Er sortiert es mir trotzdem nicht. Hier eine Listing meiner Access Tabelle. Dim sql As String = "CREATE TABLE " & sTableName & "(" & _ "Spielernr short NOT NULL PRIMARY KEY, " & _ "Name Varchar(30) NOT NULL, " & _ "Vorname Varchar(30) NOT NULL, " & _ "Rang short, " & _ "Tisch1 short, " & _ "Ergebnis1 short, " & _ "Sack1 Short, " & _ "Tisch2 Short, " & _ "Ergebnis2 Short, " & _ "Sack2 Short, " & _ "Tisch3 Short, " & _ "Ergebnis3 Short," & _ "Sack3 Short," & _ "erg_ges Short," & _ "Sack_ges Short," & _ "erg_div Short" & _ ")" die Tabelle soll nach erg_div sorteiert werden. Zitieren
.NETter Geschrieben 8. September 2009 Geschrieben 8. September 2009 Hallo! Ja OK Access sollte das wohl auch können. Zumindest wenn Du im SQL auch eine entsprechende ORDER BY - Klausel mitgibst; Dein da_ja = New OleDbDataAdapter("SELECT *, POWER(POWER(erg_div, 2), 0.5) AS Absolutwert FROM Zahlen", con_ja) Mein da_ja = New OleDbDataAdapter("SELECT *, POWER(POWER(erg_div, 2), 0.5) AS Absolutwert FROM Zahlen [COLOR="Red"]ORDER BY Absolutwert[/COLOR]", con_ja) So sollte es dann klappen. Gruß, Thomas Zitieren
Floh-2001 Geschrieben 11. September 2009 Autor Geschrieben 11. September 2009 Hallo Wenn Ich den folgenden code eingebe. da_ja_aw = New OleDbDataAdapter("SELECT *, POWER(POWER(erg_div), 0.5) AS Absolutwert FROM jassen ORDER BY Absolutwert", con_ja) bringt er folgende Fehlermeldung: undefinierte Funktion "POWER" in Ausdruck was bedeutet das? Was muss Ich ändern? Danke Zitieren
.NETter Geschrieben 11. September 2009 Geschrieben 11. September 2009 Hallo, ah ja Access :-) Hier so sollte es aber nun funktionieren: SELECT Test2.ID, Test2.Zahl, Sqr((Test2.Zahl^2)) AS Absolutwert FROM Test2 ORDER BY Sqr((Test2.Zahl^2)); Gruß, Thomas Zitieren
Klotzkopp Geschrieben 11. September 2009 Geschrieben 11. September 2009 Muss der Umweg über Quadrieren und Wurzelziehen eigentlich sein? Eine so einfache Funktion wie ABS sollte Access doch beherrschen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.