Avatar billede degnens Juniormester
31. maj 2021 - 04:26 Der er 6 kommentarer og
1 løsning

vise data på nettet i samme rækkefølge som i access tabellen

Jeg har en database med en række poster, som jeg har sorteret efter oprettelsestidspunkt. Jeg har en netside, som gerne skulle vise data fra posterne i samme rækkefølge. Men når de vises på nettet, kommer de frem i en anden, delvist vilkårlig rækkefølge og jeg kan ikke gennemskue, hvad der styrer sorteringen og ved ikke, hvad jeg kan skrive, for at overrule default-sorteringen?

Access-databasen hedder 'sommer2021' og tabellen hedder 'grunddata'.

Min kode ser således ud:

<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & server.mappath("sommer2021.mdb")
Conn.Open DSN

strSQL = "Select * from grunddata Where Land = 'Danmark' OR Land = 'Dk' OR Land = 'Denmark'"

Set rs = Conn.Execute(strSQL)

Do
  Response.Write "<strong>- " & rs("navn") & " " & rs("mellemnavn") & " " & rs("efternavn") & "</strong>, " & rs("byen") & ", " & rs("land") & "
<hr>"
  rs.MoveNext

Loop While Not rs.EOF

Conn.Close
Set Conn = Nothing
%>
Avatar billede degnens Juniormester
31. maj 2021 - 04:35 #1
Undskyld - der var et par trykfejl i første kode. Denne virker - men altså i forkert rækkefølge:

<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & server.mappath("sommer2021.mdb")
Conn.Open DSN

strSQL = "Select * from grunddata Where Land = 'Danmark' OR Land = 'Dk' OR Land = 'Denmark'"

Set rs = Conn.Execute(strSQL)

Do
  Response.Write "<strong>- " & rs("navn") & " " & rs("mellemnavn") & " " & rs("efternavn") & "</strong>, " & rs("byen") & ", " & rs("land") & ". <strong>&Oslash;nsker at bo sammen med:</strong> " & rs("sambo") & "<br>" & "<strong>&nbsp;&nbsp;&nbsp;Workshop, 1. prioritet: Første sektion: </strong>" & rs("w11") & ", <strong>Anden sektion: </strong>" & rs("w21") & "<hr>"
  rs.MoveNext

Loop While Not rs.EOF

Conn.Close
Set Conn = Nothing
%>
Avatar billede claes57 Ekspert
31. maj 2021 - 05:44 #2
ORDER BY datoen
Skal lige tilføjes evt med DESC eller ASC alt efter om du vil have faldende eller stigende dato
Avatar billede degnens Juniormester
31. maj 2021 - 06:08 #3
Det synes jeg at jeg har forsøgt, men må have skrevet det forkert eller et forkert sted i koden, for kunne ikke få det til at virke. Når jeg skal sortere det helt præcist i databasen, skal jeg sortere på to felter: først på feltet 'tid, dernæst på 'dato'. Går ud fra, at jeg skal gøre det samme her? Men hvordan ser kodeteksten ud helt præcist, og hvor i koden skal den stå?
Avatar billede claes57 Ekspert
31. maj 2021 - 06:44 #4
Ret fra
= 'Denmark'"
Til
= 'Denmark' order by 'tid' desc, 'dato' desc”
Hvis du vil have ældste først, så ret de to desc til asc (asc er default, så kan udelades)
Avatar billede degnens Juniormester
31. maj 2021 - 07:09 #5
vi nærmer os. Nu sorterer den - men kun på førstnævnte felt, ikke på begge. Jeg har forsøgt lidt forskelligt, bla. at sætte et AND ind mellem de to felter og at skrive "Order By tid, Order by dato" i stedet for blot at adskille de to felter med komma. Men det virker ikke. Så får jeg syntaks-fejl.

Så jeg har i hvert fald fundet det rette sted at sætte kommandoen ind, nu mangler jeg bare få den til at sortere på begge felter og ikke kun det, jeg nævner først.
Avatar billede claes57 Ekspert
31. maj 2021 - 07:28 #6
jeg er ikke sikker på, om den kan sortere på tid og efterfølgende dato - muligvis skal du gøre det i omvendt rækkefølge
= 'Denmark' order by 'dato' desc, 'tid' desc”
Avatar billede degnens Juniormester
31. maj 2021 - 08:48 #7
Bingo! Nu virker det, uden jeg helt forstår logikken i, at jeg først skal sortere på dato, derefter på tid, når jeg i selve databasen skal gøre modsat, for at resultatet bliver rigtigt. Jeg skal have de ældste først, så jeg kan udelade desc og asc, som du nævnte. Den endelige virksomme kode ser således ud:

strSQL = "Select * from grunddata Where Land = 'Danmark' OR Land = 'Dk' OR Land = 'Denmark' Order By Dato, Tid"

Tak for hjælpen!
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