Avatar billede hopeless Nybegynder
20. september 2005 - 19:17 Der er 19 kommentarer og
1 løsning

Udtræk udfra komma sepereret værdier

Hej, jeg leder efter en effektiv måde at at lave et udtræk udfra et afkrydsningsvalg fra en form(sammenlignings funktion). Jeg har samlet mine valg i 2 strenge.
Ene streng repræsenterer folk (ID) og den anden er de punkter man ønsker at sammenligne på.
Ene er ID = (1,2,5,34,55)
Anden er Punkter = (maalsætning,antalforedrag,opslagialt)

Jeg forestiller mig noget lign:
sql="select (" & Request("punkter") & ") from fordrag WHERE ID IN (" & Request("ID") & ")"

Hvordan kan jeg smart (hvis ovenstående query er rigtig) lave et udtræk til en tabel, hvor man ud af x-aksen i en tabel har de punkter som nu er valgt. ID viser jeg nedad y-aksen.
Avatar billede nielle Nybegynder
20. september 2005 - 19:34 #1
Noget i denne stil:

<%
Dim Headers
Headers = Split(Punkter, ",")
%>

<table border="1">
<tr>
<td>&nbsp;<td>
<%
For Idx=LBound(Headers) To UBound(Headers)
    Response.Write "<th>" & Headers(Idx) & "</th>"
Next
%>
</tr>
<%
Set rs = Conn.Execute(SQL)

Count = 0
Do While Not rs.Eof
    Count = Count+1
    Response.Write "<tr>"
    Response.Write "<td>" & Count & "</td>"

    For Idx=LBound(Headers) To UBound(Headers)
        Response.Write "<td>" & rs(Headers(Idx)) & "</td>"
    Next

    Response.Write "</tr>"
   
    rs.MoveNext
Loop
%>
</table>
Avatar billede hopeless Nybegynder
20. september 2005 - 20:09 #2
Ser rigtigt ud! Dog får jeg problemer ved valg af mere end 1 punkt.

Omsat til min kode:
<%
If Not Request("ID") = "" Then
Dim Headers,Idx,Count
Headers = Split(Request("punktid"), ",")
%>

<table border="1">
<tr>
<td>&nbsp;</td>
<%
For Idx=LBound(Headers) To UBound(Headers)
    Response.Write "<th>" & Headers(Idx) & "</th>"
Next
%>
</tr>
<%
dsn="DBQ=" & Server.Mappath("./foredrag.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
set conn10=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")
conn10.open dsn
sql10="select navn," & Request("punktid") & " from foredrag WHERE ID IN (" & Request("ID") & ") ORDER by navn asc;"
Set rs = Conn10.Execute(SQL10)
response.write sql10
Count = 0
Do While Not rs.Eof
    Count = Count+1
    Response.Write "<tr>"
    Response.Write "<td>" & rs("navn") & "</td>"
    For Idx=LBound(Headers) To UBound(Headers)
          Response.Write "<td>" & rs(Headers(Idx)) & "</td>"
    Next

    Response.Write "</tr>"
   
    rs.MoveNext
Loop
end if
%>
</table>


Item cannot be found in the collection corresponding to the requested name or ordinal.

/virksomhedsmappe/sammenligningadv.asp, line 485
485 er        Response.Write "<td>" & rs(Headers(Idx)) & "</td>"

Den skriver Y aksen rigtigt, laver navn rigtigt, udfylder 1 punkt rigtigt og ved 2. punkt kommer fejlen
Avatar billede nielle Nybegynder
20. september 2005 - 20:39 #3
Hvor meget af linje 2 får du med? Er det allerede ved det første index den fejler eller et eller andet sted midtvejs igennem For-løkken?
Avatar billede hopeless Nybegynder
20. september 2005 - 20:44 #4
Ved dette valg:
ID = (1,2,3)
Punkter =(adresse,maalsaetning)

tegner den:

- | adresse | maalsaetning
Bolig1 | adresse skrives korrekt for denne bolig | her kommer fejlen


Hvis jeg laver denne query istedet virker det helt fint:
ID = (1,2,3)
Punkter =(adresse)

- | adresse
Bolig1 | adresse skrives korrekt
Bolig2 | adresse skrives korrekt
Bolig3 | adresse skrives korrekt
Avatar billede nielle Nybegynder
20. september 2005 - 20:49 #5
Jeg syntes at du sagde at den klarde sig fint igennem ved række 1 (Bolig1) men at den fejlede ved række 2 (Bolig2)?

Hvordan ser din SQL ud - du udskriver den på skærmen.
Avatar billede hopeless Nybegynder
20. september 2005 - 20:49 #6
dvs 1 index får den fint med, men ved næste går det galt
Avatar billede hopeless Nybegynder
20. september 2005 - 20:50 #7
Ser fin nok ud til mig:

select navn, adresse, madpolitik from foredrag WHERE ID IN (3, 10, 5) ORDER by navn asc;
Avatar billede nielle Nybegynder
20. september 2005 - 20:52 #8
Prøv lige at rette denne:

Response.Write "<td>" & rs(Headers(Idx)) & "</td>"

- til dette (bare midlertidigt):

Response.Write "<td>" & Idx & ", " & Headers(Idx) & "</td>"
Avatar billede nielle Nybegynder
20. september 2005 - 20:54 #9
Forresten bruger du jo ikke Count til noget i din version af koden. De par linjer kan du jo bare slette igen. :^)
Avatar billede hopeless Nybegynder
20. september 2005 - 20:54 #10
giver

Bolig1 0, adresse 1, madpolitik
Bolig2 0, adresse 1, madpolitik
Bolig3 0, adresse 1, madpolitik
Avatar billede hopeless Nybegynder
20. september 2005 - 20:55 #11
yea.. tænke at jeg dog vil bruge den :) gemmer den lige til senere, heh
Avatar billede hopeless Nybegynder
20. september 2005 - 20:56 #12
Skal lige siges at "Bolignavnet" er noget jeg giver manuelt, derfor er det ikke med i det index.. så med din count ville være
1 0, adresse 1, madpolitik
2 0, adresse 1, madpolitik
3 0, adresse 1, madpolitik
Avatar billede nielle Nybegynder
20. september 2005 - 20:58 #13
Ahhh, jeg tror at problemet forsvinder hvis du fjerner mellemrummet efter dit komma:

adresse, madpolitik

- til:

adresse,madpolitik
Avatar billede hopeless Nybegynder
20. september 2005 - 20:59 #14
ahh, maybe ja.. Prøver at lave noget replace
Avatar billede nielle Nybegynder
20. september 2005 - 20:59 #15
... ved Split'ten bliver element nr. 2 jo til " madpolitik" - og den er jo nok mere glad for "madpolitik".
Avatar billede nielle Nybegynder
20. september 2005 - 21:02 #16
Du kan også bare ændre din Split til:

Headers = Split(Request("punktid"), ", ")
Avatar billede hopeless Nybegynder
20. september 2005 - 21:03 #17
haha, haps!

Så er den sku i kassen. Tak for den præcise hjælp nielle
Avatar billede nielle Nybegynder
20. september 2005 - 21:03 #18
Svar :^)
Avatar billede hopeless Nybegynder
20. september 2005 - 21:04 #19
Du skal lige gi et svar så du kan få dine velfortjente points :o
Avatar billede nielle Nybegynder
20. september 2005 - 21:05 #20
Takker for point :^)
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