Avatar billede Ulrich Seniormester
06. juni 2018 - 20:37 Der er 12 kommentarer og
2 løsninger

Sortere tekst felt som et nummer felt.

Har en .mdb database som er et adressekartotek.
Felter med navn, efternavn, postnummer og adresse.
Alle felter er text felter også adresse.

datavar = "select * from Database Order By PostNummer, Adresse ASC"

Problemet er at den foretager ikke en sortering af adresse i den rigtige rækkefølge:
Ahornvej 49
Ahornvej 5
Ahornvej 7
Ahornvej 92

Nogen der kan hjælpe?
Avatar billede terry Ekspert
06. juni 2018 - 20:57 #1
Maybe this should be in Access category if we are talking about an mdb file ;-)

You show some adresses but is that the result or as they are entered?

In a text sorting the numerical part is also text so 4 (in the 49) will be before 5
Avatar billede arne_v Ekspert
06. juni 2018 - 20:57 #2
Den rigtige loesning er at aendre database design fra:

adresse TEXT

til

vejnavn TEXT
vejnummer INTEGER
Avatar billede arne_v Ekspert
06. juni 2018 - 20:58 #3
og saa bruge:

SELECT ... ORDER BY postnummer,vejnavn,vejnummer
Avatar billede terry Ekspert
06. juni 2018 - 20:58 #4
You could split the address into street name and number in separate fields, and you could also make two calculated fields to sort on
Avatar billede arne_v Ekspert
06. juni 2018 - 21:00 #5
hacket maa vaere:

SELECT ... ORDER BY postnummer,funktionfoermellemrum(vejnavn),funktionkonverterint(funktioneftermellemrum(vejnummer))

hvor funktionfoermellemrum, funktioneftermellemrum og funktionkonverterint skal vaere de rigtige funktioner fra MS Access.

Dem vil jeg skulle slaa op.
Avatar billede terry Ekspert
06. juni 2018 - 21:18 #6
SELECT Database.Postnummer, Int(Right([Adresse],Len([Adresse])-InStr(1,[Adresse]," "))) AS Nr
FROM [Database]
ORDER BY Database.Postnummer, Int(Right([Adresse],Len([Adresse])-InStr(1,[Adresse]," ")));
Avatar billede Ulrich Seniormester
06. juni 2018 - 22:40 #7
Thanks. I know the right solution is that change street number to its own field and number field, but its not possible whit out large work.
terry: You have a solution, but i can't get it work.
It's in .asp web page and a .mdb database.

set conn = server.createobject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & server.mappath("database.mdb")
conn.open DSN

datavar = "select * from database Order By PostNummer, Adresse ASC"
set nydata = conn.execute(datavar)
Avatar billede terry Ekspert
07. juni 2018 - 08:28 #8
I'm no expert at ASP so dont think I can help you with that part :-(

Does the code you give in #7 work but replacing the Select with my code doesn't work?
Avatar billede Ulrich Seniormester
07. juni 2018 - 08:51 #9
Yes the code in #7 work, but your in #6 dos not work, but i think that i have to rewrite your code a little.
I understand your code, and you have the right point.
I try, thanks for your post.
If some one know the right syntax for #6 for ASP / MSSQL, i like to have it.
Avatar billede montago Praktikant
07. juni 2018 - 09:56 #10
et trick som ERP systemer bruger er at tilføje padding.

med lidt REGEX kan man padde tallet i adressen hvorved den alfabetisk kan sorteres...

det er grimt og langsomt - men en mulighed.
Avatar billede terry Ekspert
07. juni 2018 - 10:53 #11
Ulrich, try my SQL directly in your Access dB, just to confirm that it works. If it works save it as a query.

Then in your ASP code you can execute the query as though it were a stored procedure.

Heres an example which I think explains what you need to do.
Avatar billede Ulrich Seniormester
07. juni 2018 - 18:12 #13
I have to fix it on another way, make a field to the house number.
Answer #6 cant do because if i have a street with eg Strandvejen 2 - 7 lejlighed 8
Its get a problem.
Avatar billede terry Ekspert
07. juni 2018 - 20:34 #14
Yes it sounds like a redesign of your dB ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester