Avatar billede bjarne1234 Nybegynder
13. juli 2004 - 11:13 Der er 21 kommentarer og
1 løsning

sorter og udskriv

Hej alle
Jeg har et problem jeg håber en og anden vil hjælpe med. Jeg har et asp script som henter info fra en database og udskriver den. Virker fint men nu vil jeg gerne have flettet en sortering på inden udskrivning. Dataerne i databasen kommer tilføldigt ned men skal ud efter nummer orden (laveste tal først) Feltet der skal søges i er "spiller" alle andre er uden værdi
Mit script:
<table cellpadding="0" border="1" style="border-collapse: collapse" cellspacing="1">
<%
dim farve
While NOT data.EOF

    if farve="#CCCCCC" Then
    farve="#EEEEEE"
    Else
    farve="#CCCCCC"
    End if
    %>
  <tr bgcolor="<%=farve%>">
    <td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><%=data.Fields ("spiller")%></font><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;</font></td>
    <td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><%=data.Fields ("pabryst")%></font><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;</font></td>
    <td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><%=data.Fields ("paryg")%></font><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;</font></td>
    <td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><%=data.Fields ("trbryst")%></font><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;</font></td>
    <td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><%=data.Fields ("trryg")%></font><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;</font></td>
    <td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><%=data.Fields ("trærmeh")%></font><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;</font></td>
    <td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><%=data.Fields ("trærmev")%></font><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;</font></td>
    <td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><%=data.Fields ("shbag")%></font><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;</font></td>
    <td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><%=data.Fields ("shbenh")%></font><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;</font></td>
    <td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><%=data.Fields ("shbenv")%></font><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;</font></td>
  </tr>
  <%
data.MoveNext
Wend
%>
</table>

Soteringen skal blive ved til alt fra databasen er udskrevet.

På forhånd tak for hjælpen
Bjarne
Avatar billede erikjacobsen Ekspert
13. juli 2004 - 11:15 #1
du kan blot
  select ..... order by spiller asc
Avatar billede bjarne1234 Nybegynder
13. juli 2004 - 11:29 #2
Jeg beklager men du bliver nød til at udfærdige det lidt nærmere.
Avatar billede erikjacobsen Ekspert
13. juli 2004 - 11:50 #3
Det kan jeg ikke gøre med den kode du har vist.
Avatar billede barkov Nybegynder
13. juli 2004 - 11:55 #4
Du skal rigtig nok gøre det som Erik siger. Du skal sortere dataen i din select længere oppe i koden.
Det ville hjælpe os lidt hvis du evt. lige sendte den bid kode med omkring din select

Men det kunne være så enkelt som Erik jacobsen skriver:
Select * from [Tabelnavn] order by Spiller
Avatar billede bjarne1234 Nybegynder
13. juli 2004 - 12:08 #5
Det er nok mig der er for dum så jeg spørger på en anden måde:
Min database indeholder 10 felter pr post. Kun feltet skal der sorteres efter og efterfølgende udskrives - hvordan skal den komplette kode se ud?
Avatar billede bjarne1234 Nybegynder
13. juli 2004 - 12:11 #6
Ah det gik lige hurtigt nok. Der skulle stå - Kun ét felt skal danne grundlag for den egentlig sortering. Sorry
Avatar billede phineas_phreak Nybegynder
13. juli 2004 - 12:47 #7
det de prøver at sige er at lidt højere oppe i din kode burde du ha noget der ser nogenlunde sådan her ud (hvis du bruger Access database) bruger du andet (mssql, mysql eller andet) ser den lidt anderledes ud, men det er egentlig ligegyldigt. Det interessante er linjen strSQL = ...
den ser formentlig lidt anderledes ud end din


Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("dindatabase.mdb")

strSQL = "SELECT * FROM tabelnavn"

det de siger er at du nu skal gå ind i denne linje og indsætte følgende:

strSQL = "SELECT * FROM tabelnavn order by spiller asc"
Avatar billede bjarne1234 Nybegynder
13. juli 2004 - 13:05 #8
Åh nu er jeg lidt mere med. Men jeg har kun følgende stående:
set database = Server.CreateObject("ADODB.Connection")
    connect="Driver={Microsoft Access Driver (*.mdb)}; DBQ="& server.mappath("../databaser/testdatabase.mdb")
    database.Open connect

Det er alt. Databasen åbnes, farvemarkering af linier og udskrivning
Alt fra databasen placeres pænt og nydeligt. Men data i feltet "spiller" kommer ind i databasen i et flæng (ja det gør alle data i felterne) men netop feltet "spiller" skal danne grundlag for rækkefølgen ved udtræk.
Alt skal stadig udtrækkes som hidtil.
Jeg håber jeg forklarer til det kan forstås...
Avatar billede erikjacobsen Ekspert
13. juli 2004 - 13:12 #9
Der står nu nok lidt mere i din kode ;)
Avatar billede phineas_phreak Nybegynder
13. juli 2004 - 13:16 #10
ok. så ville jeg foreslå du omskrev det lidt:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../databaser/testdatabase.mdb")

strSQL = "SELECT * FROM tabelnavn ORDER by spiller asc"
set rs = conn.execute(strSQL)


og så lidt længere nede skal du ændre følgende:

<%
dim farve
do While NOT rs.EOF
    if farve="#CCCCCC" Then
    farve="#EEEEEE"
    Else
    farve="#CCCCCC"
    End if
%>

og så udskriver vi ting fra databasen:

<%=data.Fields ("pabryst")%> skal ændres til <%= rs("pabryst") %>
<%=data.Fields ("paryg")%>  skal ændres til <%= rs("paryg") %>
osv.

og så lukker vi loopet:

rs.MoveNext
LOOP
RS.Close


og nederst på siden lukker vi forbindelse til databasen:

<%
conn.Close
Set conn = nothing
Set strSQL = nothing
%>


håber dette hjælper dig videre
Avatar billede bjarne1234 Nybegynder
13. juli 2004 - 13:18 #11
Ja, jeg ved jeg er et skvat - og du har ret.
Følgende sidste stump er:
<%
dim data
Set data=Server.CreateObject ("ADODB.Recordset")
data.Open "Select * FROM spiller",database
%>

(tabellen hedder også spiller som du ser)
Avatar billede erikjacobsen Ekspert
13. juli 2004 - 13:21 #12
data.Open "Select * FROM spiller order by spiller asc2,database

skulle kunne klare det
Avatar billede erikjacobsen Ekspert
13. juli 2004 - 13:21 #13
Altså:
data.Open "Select * FROM spiller order by spiller asc",database
Avatar billede phineas_phreak Nybegynder
13. juli 2004 - 13:22 #14
det gjorde jo så det hele meget lettere :)
Avatar billede bjarne1234 Nybegynder
13. juli 2004 - 13:27 #15
Tusind tak begge 2. Det var en ubeskrivelig super hjælp i gav mig. Det virker det hele. Hvordan nu med point til jer (jeg er ny her)?
Igen tak for hjælpen
Bjarne
Avatar billede erikjacobsen Ekspert
13. juli 2004 - 13:29 #16
Jeg samler ikke på point, så du hverken skal eller kan give mig point, tak.
Avatar billede phineas_phreak Nybegynder
13. juli 2004 - 13:57 #17
det gør jeg :D
Avatar billede bjarne1234 Nybegynder
13. juli 2004 - 14:00 #18
Jeg tør næsten ikke spørge efter den store hjælp men jeg "satser".
Det drejer sig om samme database.
Når man fra et form-felt udfylder felterne og vil have dem lagt ned - hvordan kontrolerer man så at feltet "spiller" ikke har det nummer man vil lægge ned.
F.eks siger vi at felterne under "spiller" har data 1, 2, 3, 4 og nu kommer man via form-feltet til at indtaste 2 (som jo er "optaget". Det skulle jo gerne retuneres med (nummeret er brugt - vælg et andet)
Avatar billede barkov Nybegynder
13. juli 2004 - 15:30 #19
så må du sørge for at kigge i tabellen inden du gemmer det og hvis den allerede findes, så skrive det ud på skærmen.

Dvs. at inden du laver din insert i tabellen, så laver du noget i retning af:

Set data2=Server.CreateObject ("ADODB.Recordset")
data2.Open "Select * from spiller where Spiller=" & Request("DenKaldteVærdi"),database

If data2.EOF then
    'Så er det i orden at indsætte recorden
    'INDSÆT RECORD KODE....
else
    'Her skal så laves koden der skriver at nummeret allerede er optaget!!
    Response.write "Nummeret er allerede brugt, Vælg venligst et andet :)"
End if

Set Data2 = Nothing
Avatar billede bjarne1234 Nybegynder
13. juli 2004 - 17:21 #20
Den giver følgende fejl:

Error Type:
ADODB.Recordset (0x800A0BB9)
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

Linien er:
data2.Open "Select * from spiller where spiller=" & Request("DenKaldteVærdi"),database

Hvad er det?
Avatar billede erikjacobsen Ekspert
13. juli 2004 - 18:09 #21
Du har udskiftet "DenKaldteVærdi" med dit navn ?
Avatar billede bjarne1234 Nybegynder
13. juli 2004 - 18:19 #22
Øh jeg er noget fra den...
Hvis den kaldte værdi er "spiller" som kommer fra input-delen så ja
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
Kategori
Kurser inden for grundlæggende programmering

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