select left(id,2),clng(mid(id,3)),*
from t
order by 1,2
------------------
essentitia preter non sans multiplicandum
9 svar · 313 visningar · startad av kerouac
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
select left(id,2),clng(mid(id,3)),*
from t
order by 1,2
------------------
essentitia preter non sans multiplicandum
Det finns ett fönster där man kan ställa direkt sql-frågor.
------------------
essentitia preter non sans multiplicandum
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.
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".
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
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
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
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