Går det via ett SQL-uttryck att sortera ett textfält där texten är nummer Jag föreslår nog att när du lagrar datan även lagrar du samtidigt en kolumn med siffrorna i, så att du sedan kan köra ORDER BY på den. På så sätt tjänar du väl även lite prestanda. Annars kan du göra en beräknad kolumn som kollar vilka siffror som står i strängen, och köra ORDEWR BY på den. Men då måste du nog skriva en egen funktion för detta, och det kräver ju SQL Server 2000, för jag kan inte komma på någon funktion som gör det åt dig. Bäst hade det varit om man kunnat använda nåt liknande Val() funktionen. hej Jo, den skulle kunna fungera, men fortfarande anser jag att sorteringsvärdena borde ligga i en egen kolumn. Att göra den beräkningen på varje rad i en tabell för att sortera den, det lär ta tid. Hej '** Jag testade lite och detta verkar funka bra i Access i alla fall: Tackar för förslagen till lösning! Självklart går det fortare med ytterligare ett fält. Lägg ett index där med så går det ännu fortare. Om du ofta använder denna sortering är nog ett klustrat index på (den nya) sifferkolumnen att rekommendera, men för att vara säker måste man naturligtvis veta mer om databasen. Håller helt med när det gäller så pass stora tabeller.SQL Sortering
Min data ser så här i ett text fält:
0_
3_
5_
13_
11_
Vid kommandot "ORDER BY" blir resultatet:
0_
11_
13_
3_
5_
Jag vill få "texten" att sorteras som nummer alltså:
0_
3_
5_
11_
13_
Finns det något motvarande SQL som VB:s Val kommando ?Sv: SQL Sortering
Sv: SQL Sortering
Prova med något liknande detta Order by Int(Mid(Faltnamn,1,Instr(Faltnamn,'_')-1))
Syntaxen får du rätta till själv men iden kanske kan användas.
Leif PSv: SQL Sortering
Kan nämna en metod som jag har avändt
Lägger in en dummy Listbox Visible = False
Sorted = True
Sen skippar jag ORDER BY läser istället in nummern
i ListBoxen och plockar därifrån
rec.MoveFirst
For i = 0 To rec.RecordCount - 1
resultat = rec.fields("Fält")
DummyList.AddItem "0" & CStr(resultat)
rec.MoveNext
next ' i
Också ett sätt
mvh
SvenSv: SQL Sortering
Sv: SQL Sortering
Om du på något vis kan trycka ditt en 0 (nolla)
framför varje tal så komme sorteringen att bli Ok
mvh
SvenSv: SQL Sortering
Sub Test()
Dim rs As ADODB.Recordset
Dim conn As New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Temp\db1.mdb"
Set rs = conn.Execute("Select test from Table1 Order by Len(Test), Left(Test,InStr(Test,'_')-1)")
While Not rs.EOF
Debug.Print rs("Test")
rs.MoveNext
Wend
Set rs=Nothing
Set conn=Nothing
End sub
Har du fått det att funka?
\Leif PSv: SQL Sortering
Jag har provat lite olika alternativ för lösning av problemet. Då det gäller datat som ska sorteras kan det i bland uppgå till över 10.000 poster och det snabbaste sättet var faktiskt att skapa ett nytt fält i databasen där motsvarande nummer ligger. Hastigheten ökade nästan med 60% i jämförelse mot att programmässigt öppna ett record med tester på varje post.
/MickeSv: SQL Sortering
Sv: SQL Sortering
Min ide tog jag från ett av mina första VB program en födelsedagslista som håller reda på när mina vänner och bekanta fyller år. En sån tabell blir ju aldrig särskillt stor så där gick det snabbt så det dög.
\Leif P