webForumDet fria alternativet

Sortering

9 svar · 313 visningar · startad av kerouac

kerouacMedlem sedan nov. 200013 inlägg
#1

Jag har en Access-databas med ca 200 poster i. Databasen indexeras med hjälp av ett ID. Varje objekt har ett idnummer som ser ut så t.ex. så här : Ö-232, H-23, T-211. Ett problem jag har är att posternas sorteras på ett sätt som jag inte tycker om. Eftersom det är en bokstav först sorteras de efter bokstaven och därefter med den första siffran i ID. Då kan sortering bli såhär: Ö-211, Ö-22, Ö-222. Jag skulle vilja att det blev såhär istället : Ö-22, Ö-211, Ö-222 dvs sortering efter enbart siffrorna. Kan man greja det?

// Niclas

LarsGMedlem sedan dec. 200012 465 inlägg
#2

select left(id,2),clng(mid(id,3)),*
  from t
 order by 1,2

------------------
essentitia preter non sans multiplicandum

kerouacMedlem sedan nov. 200013 inlägg
#3

Vart gör jag detta?

// Niclas

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Det finns ett fönster där man kan ställa direkt sql-frågor.

------------------
essentitia preter non sans multiplicandum

LaspMedlem sedan juli 200010 197 inlägg
#5

Du har ju fått den sortering du har begärt när du satte fältet till Text.
Du kan splittra fältet i två
En textdel med bokstaven och med tal för siffrorna
skapa ett index på de två fälten.
Eller gör som LarsG säger i sql strängen

------------------
GvdsSfdtTddv.

kerouacMedlem sedan nov. 200013 inlägg
#6

Jag sjrev in det här i SQL-rutan:

SELECT left(StugID,2), clng(mid(StugID,3)), *
FROM tblStuginfo_1
ORDER BY 1, 2;

Tyvärr så sa Access att det blev ett "Data type mismatch in criteria expression".

LarsGMedlem sedan dec. 200012 465 inlägg
#7

Ser alla stugid likadana ut? Dvs är det alltid två tecken + siffror?

kan du testa den här frågan

select clng(mid(stugid,3)) from tblStuginfo_1

annars är det ett alternativ som Lennart säger att dela upp det i två kolumner

------------------
essentitia preter non sans multiplicandum

kerouacMedlem sedan nov. 200013 inlägg
#8

Problemet är att alla ID inte ser likadana ut. I de flesta fall är det bokstav-siffror men ibland kan det även vara t.ex. Ö-210M . Det kluriga är att ta ut alla siffor ur ID. Man löser alltså inte problemet genom att dela upp i två kolumner. Tror ni att det går att lösa eller får man skippa sorteringen?

//Niclas

LarsGMedlem sedan dec. 200012 465 inlägg
#9

Jo det går, men i så fall måste du dubbellagra data. Du får behålla nuvarande stugid och sedan lagra inledande bokstäver för sig och siffran för sig.

Det skulle gå om man kan skriva egna funktioner i Access som man kan anropa från select-satsen, jag vet inte vilket stöd som finns i Access för sådant.

------------------
essentitia preter non sans multiplicandum

HermanMedlem sedan maj 2001427 inlägg
#10

Sådant stöd finns. Men det går inte att använda funktionerna utanför Access, vi a t.ex. via ODBC/OLE DB.

------------------
En eller annan godbit från pannan

Genererad på 404 ms · cache AV · v20260730165559-full.f96bc7eb