2016-05-25 11 views
-1

Kann mir jemand helfen, meine Datagridview (dataSource) zu sortieren. Mein Feldname ist ControlCode und der Datentyp ist Varchar.Sortieren datagridview Problem

Sorting Problem

Dim dataAdapter As New MySqlDataAdapter 
    Dim dataSet As New DataTable 
    Dim bindSource As New BindingSource 

      cmd = "SELECT * FROM documentsinfo" 

      com = New MySqlCommand(cmd, con) 

      dataAdapter.SelectCommand = com 
      dataAdapter.Fill(dataSet).ToString() 
      bindSource.DataSource = dataSet 
      dataSource.DataSource = bindSource 
      dataAdapter.Update(dataSet) 

Antwort

0

Da Ihre Datentyp nvarchar, seine als Zeichenfolge sortiert, nicht als Integer Sie müssen es wie dieses

cmd = "SELECT * FROM documentsinfo ORDER BY CAST(ISNULL(NULLIF(ISNUMERIC(Idchecklist),0),2147483647) as INT) 

EDIT bestellen

cmd = "SELECT * FROM documentsinfo ORDER BY ControlCode+0, ControlCode; 

EDIT 2

Mit diesem Code wird es die ersten 6 Zeichen (PRJCT-) ignoriert und wird die Säule durch die Zahl, um so lange Reihenfolge wie die Säule mit dem gleichen Zeichen beginnt (PRJCT-), sollte es arbeiten

cmd = "SELECT * FROM documentsinfo ORDER BY CAST(SUBSTR(`ControlCode`, 7) AS SIGNED)" 

Wenn es Arbeit Im von Idee tat:/und ich schlage vor, dass Sie entweder den Strich aus Ihren Feldern entfernen, so dass mein Edit 1 Code funktioniert, oder fügen Sie zu Ihrer Datenbank und sortiert nach einer ID-Spalte es.

+0

Sir. Abichango Fehler. Falsche Parameteranzahl beim Aufrufen der systemeigenen Funktion 'ISNULL' – Iezer

+0

Ersetzen von 'ISNULL' durch' IFNULL' – abichango

+0

[Err] 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von 'INTEGER' in Zeile 1 entspricht. – Iezer