Avatar billede jmc Nybegynder
14. marts 2005 - 16:14 Der er 20 kommentarer og
1 løsning

hvorfor fejler denne form?

sp_id = rs(sp_id")
       
loop...
<input type="checkbox" name="<%=sp_id%>" value="true" <%if request.form(sp_id) = "true" then %> selected<%end if%>>

Den fejler:
Request object error 'ASP 0105 : 80004005'

Index out of range

/index.asp, line 138

An array index is out of range.
Avatar billede skyggen2000 Nybegynder
14. marts 2005 - 16:39 #1
hvad laver rs(sp_id") det sidste dobbeltpling der
Avatar billede jmc Nybegynder
14. marts 2005 - 16:52 #2
det var bare en slåfejl her på exp. jeg ville bare fortælle at  sp_id = recordset

fejlbeskrivelsen gælder stadigt.
Avatar billede skyggen2000 Nybegynder
14. marts 2005 - 17:06 #3
tror der er brug for lidt mere kode.
Avatar billede jmc Nybegynder
14. marts 2005 - 19:49 #4
Nej hvorfor?
Hvis jeg kører denne her:
<%
for each elm in request.form
response.write elm & " -- " & request(elm) & "<br>"
next
%>

Så udskriver den fint:
1 -- true
2 -- true
3 -- true

hvis jeg vælger de første tre checkbokse.

Derfor burde følgende virke:
<input type="checkbox" name="<%=sp_id%>" value="true" <%if request.form(sp_id) = "true" then %> selected<%end if%>>

Har jeg ikke ret i min antagelse?
Avatar billede jmc Nybegynder
14. marts 2005 - 22:27 #5
hæver til 100 points
Avatar billede skyggen2000 Nybegynder
15. marts 2005 - 10:05 #6
Hvis et array index er out off range, betyder det at man er gået for langt, men den er du sikkert med på. Stadig ville det være lækkert med mere kode, for det er meget svært at sætte sig ind i hvad der sker før den linie det går galt i.

Det ser ud som om sp_id er en VB_Script var, og at den dens værdi er højere end request.form() arrayet er...

Hvis du har en input med navnet sp_id, skal der lige "" udenom, når du spørger efter den med request.

Men det er ikke nemt med så lidt kode.
Avatar billede jmc Nybegynder
15. marts 2005 - 13:26 #7
Dette bliver udskrevet hvor formfeltets name = rs("sp_id")
 <input type="checkbox" name="1" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">sygefravær</font><br>
             
               <input type="checkbox" name="2" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">psykisk arbejdsmiljø</font><br>
             
               <input type="checkbox" name="3" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">stress</font><br>
             
               <input type="checkbox" name="4" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">familiepolitik</font><br>
             
               <input type="checkbox" name="5" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">rygning</font><br>
             
               <input type="checkbox" name="6" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">kost</font><br>
             
               <input type="checkbox" name="7" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">motion</font><br>
             
               <input type="checkbox" name="8" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">helbredstjek</font><br>
             
               <input type="checkbox" name="9" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">midlertidigt tab af arbejdsevne</font><br>
             
               <input type="checkbox" name="10" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">varigt tab af arbejdsevne</font><br>
             
               <input type="checkbox" name="11" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">alkoholmisbrug mv.)</font><br>
             
               <input type="checkbox" name="12" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">personlige kriser</font><br>
             
               <input type="checkbox" name="13" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">seniorpolitik</font><br>
             
               <input type="checkbox" name="14" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">sideproduktioner</font><br>
             
               <input type="checkbox" name="15" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">kompetenceudvikling</font><br>
             
               <input type="checkbox" name="16" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">forsikringer</font><br>
             
               <input type="checkbox" name="17" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">flygtninge/indvandrere</font><br>
             
               <input type="checkbox" name="18" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">langtidsledige</font><br>
             
               <input type="checkbox" name="19" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">handicappede</font><br>
             
               <input type="checkbox" name="20" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">unge med særlige problemer</font><br>
             
               <input type="checkbox" name="21" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">mentorordninger</font><br>
             
               <input type="checkbox" name="22" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">afvikling med social dimension</font><br>
             
               <input type="checkbox" name="23" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif">partnerskaber med kommuner</font><br>
              </td>

---
Her er mit loop hvor value skal være "true" hvis rs("sp_id") = true (eller 'on')

<% While ((Repeat1__numRows <> 0) AND (NOT rs_forkortelser.EOF))
            sp_id = rs_forkortelser.Fields.Item("sp_id").Value
           
%>
               <input type="checkbox" name="<%=sp_id%>" value="true">
              <font size="1" face="Arial, Helvetica, sans-serif"><%=(rs_forkortelser.Fields.Item("ord").Value)%></font><br>
              <%
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  rs_forkortelser.MoveNext()
Wend
%>
Avatar billede skyggen2000 Nybegynder
16. marts 2005 - 09:30 #8
Dim sp_id_true_false

If sp_id OR sp_id = "on" Then
sp_id_true_false = "true"
else
sp_id_true_false = ""
End if

så indsætter du <%=sp_id_true_false%> som din value.
Avatar billede jmc Nybegynder
16. marts 2005 - 10:25 #9
jeg forstår ikke helt dit If sp_id OR sp_id?
hvordan giver det mening

jeg skal indsætte det sådan:
<input type="checkbox" name="<%=sp_id%>" value="<%=sp_id_true_false%>">

Jeg skal vel skriver noget andet hvis den skal sættes som  checked?
Avatar billede skyggen2000 Nybegynder
16. marts 2005 - 10:33 #10
Du skriver den skal tjekke om værdier en true, er det boolean true eller tekst "true"?
Hvis boolean gør du sådan

If sp_id Then ...

ellers er det
If sp_id = "true" Then ...

og ja, hvis også du vil have checked på den, skal du bare har en Dim mere

Dim sp_id_true_false, sp_id_checked

If sp_id OR sp_id = "on" Then
sp_id_true_false = "true"
sp_id_checked = "checked"
else
sp_id_true_false = ""
sp_id_checked = ""
End if

den indsætter du på samme måde, hvor det passer dig

<input type="checkbox" name="<%=sp_id%>" value="<%=sp_id_true_false%>" <%=sp_id_checked%>>
Avatar billede jmc Nybegynder
16. marts 2005 - 11:11 #11
det ser ud som om formen poster 'on' hvis man tjekker boksen og ikke skriver noget hvis man lader den stå tom. Men det er uden dit eksempel det er bare hvis value ikke er sat.

Jeg prøver dit eksempel og vender tilbage.
Avatar billede skyggen2000 Nybegynder
16. marts 2005 - 11:20 #12
en checkbox er "on" hvis den er sat, når man spørger efter den i asp.
Avatar billede jmc Nybegynder
16. marts 2005 - 11:35 #13
har prøvet dit eksempel. De er alle bare slået til hele tiden selvom jeg checker nogle fra....

Hvad kan det ikke skyldes?

<%
for each elm in request.form
response.write elm & " -- " & request(elm) & "<br>"
next
%>

Mit script ovenover udskriver:
1 -- true
17 -- true
2 -- true
15 -- true
3 -- true
13 -- true
4 -- true
11 -- true
23 -- true
5 -- true
21 -- true
6 -- true
18 -- true
7 -- true
16 -- true
8 -- true
14 -- true
9 -- true
12 -- true
10 -- true
22 -- true
19 -- true
20 -- true
Avatar billede jmc Nybegynder
16. marts 2005 - 11:37 #14
sorre jeg glemte lige:
hvis jeg checker den første forsvinder den også fra min udskrift, men alle checkbokse er stadigt slået til.
Avatar billede skyggen2000 Nybegynder
16. marts 2005 - 12:14 #15
Kan du ikke nævne helt præcist hvad dit formål er? Vil du lave postback, lade de tjekbokse der var sat, være sat når siden loades igen?

rs_forkortelser, er det et form navn, eller et udtræk fra en database?

det ser ud som om du hele tiden requester den samme værdi med "sp_id", der enten er "true" eller "on". Du er nødt til at hive den enkelte værdi fra tjekboksen, altså tjekke på navnet.
Hvorfor vil du også sætte værdien til "true". Den er "on", hvis den er valgt, er dette ikke godt nok?
Avatar billede jmc Nybegynder
16. marts 2005 - 16:27 #16
Det jeg vil er at lave postback og lade de tjekbokse der var sat, være sat når siden loades igen.

rs_forkortelser er et udtræk fra en databasen

navnet op checkboksen er sp_id
sp_id er også ID for rs_forkortelser som indeholder det navn som står ved checkboksen. (udskrevet i tekst)
Avatar billede skyggen2000 Nybegynder
16. marts 2005 - 16:36 #17
Hvad gør du så helt præcist?

Når de kommer ind, så gemmer du dine data i din tabel, således at man kan se at fx. tjeckbox nr 1 er sat, og hvad bliver den sat til i databasen?

Tager du så bagefter og laver et udtræk, på baggrund af det og genererer ny HTML?

Har du tjekket at værdierne bliver gemt korrekt i DB.

Hvis du har gjort som i mit eksempelt og det ligger i DB, så burde det funke.

Ellers må du poste noget mere kode

tror den betragter din sp_id, som en int, og derfor mener den at du går for langt i din request.
Avatar billede jmc Nybegynder
16. marts 2005 - 20:33 #18
Tak for din tålmodighed, jeg er ikke den stærke i ASP, men lærer stadigt.

Den skal ikke sættes i databasen, det skal kun benyttes til at sortere med, men så langt er jeg slet ikke kommet. Jeg skal bare huske tjekboksen der var sat, og sætte den igen når siden loades.

Der er forkortelserne som udskrives ud for checkbokse. Man kan vælge nogle fra og så vil de ikke fremkomme på listen af users. Men så langt er jeg slet ikke kommet endnu.

Her har du hele mit dokument:
<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="../../Connections/test.asp" -->

<%
Dim rs_users
Dim rs_users_numRows

Set rs_users = Server.CreateObject("ADODB.Recordset")
rs_users.ActiveConnection = MM_test_STRING
rs_users.Source = "SELECT * FROM Users"
rs_users.CursorType = 0
rs_users.CursorLocation = 2
rs_users.LockType = 1
rs_users.Open()

rs_users_numRows = 0
%>
<%
Dim rs_forkortelser
Dim rs_forkortelser_numRows

Set rs_forkortelser = Server.CreateObject("ADODB.Recordset")
rs_forkortelser.ActiveConnection = MM_test_STRING
rs_forkortelser.Source = "SELECT * FROM Sp"
rs_forkortelser.CursorType = 0
rs_forkortelser.CursorLocation = 2
rs_forkortelser.LockType = 1
rs_forkortelser.Open()

rs_forkortelser_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = -1
Repeat1__index = 0
rs_forkortelser_numRows = rs_forkortelser_numRows + Repeat1__numRows
%>
<%
Dim MM_paramName
%>

<%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

Dim MM_keepNone
Dim MM_keepURL
Dim MM_keepForm
Dim MM_keepBoth

Dim MM_removeList
Dim MM_item
Dim MM_nextItem

' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName <> "") Then
  MM_removeList = MM_removeList & "&" & MM_paramName & "="
End If

MM_keepURL=""
MM_keepForm=""
MM_keepBoth=""
MM_keepNone=""

' add the URL parameters to the MM_keepURL string
For Each MM_item In Request.QueryString
  MM_nextItem = "&" & MM_item & "="
  If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item))
  End If
Next

' add the Form variables to the MM_keepForm string
For Each MM_item In Request.Form
  MM_nextItem = "&" & MM_item & "="
  If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item))
  End If
Next

' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
If (MM_keepBoth <> "") Then
  MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
End If
If (MM_keepURL <> "")  Then
  MM_keepURL  = Right(MM_keepURL, Len(MM_keepURL) - 1)
End If
If (MM_keepForm <> "") Then
  MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)
End If

' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
  If (firstItem <> "") Then
    MM_joinChar = "&"
  Else
    MM_joinChar = ""
  End If
End Function
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>arbejdsdokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>


<table width="100%" border="0" cellspacing="0" cellpadding="5">
  <tr>
    <td bgcolor="#F8F8F8"><form action="index.asp" method="post" name="arbejdsomraade" id="arbejdsomraade">
        <table width="100%" border="0" cellspacing="0" cellpadding="5">
          <tr>
            <td><table width="100%" border="0" cellspacing="0" cellpadding="5">
                <tr>
                  <td class="tekst">Find efter arbejdsomr&aring;de</td>
                  <td><div align="right"> <font size="2" face="Arial, Helvetica, sans-serif">
                      <input type="submit" class="formknap" value="Opdater">
                      </font></div></td>
                </tr>
              </table></td>
          </tr>
          <tr>
            <td nowrap>

<% While ((Repeat1__numRows <> 0) AND (NOT rs_forkortelser.EOF))
            sp_id = rs_forkortelser.Fields.Item("sp_id").Value
            'sp_id = reequest.form(rs_forkortelser.Fields.Item("sp_id").Value)
           
Dim sp_id_true_false, sp_id_checked

If sp_id OR sp_id = "true" Then
sp_id_true_false = "true"
sp_id_checked = "checked"
else
sp_id_true_false = ""
sp_id_checked = ""
End if
           
%>
              <input type="checkbox" name="<%=sp_id%>" value="<%=sp_id_true_false%>" <%=sp_id_checked%>>
              <font size="1" face="Arial, Helvetica, sans-serif"><%=(rs_forkortelser.Fields.Item("ord").Value)%></font><br>
              <%
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  rs_forkortelser.MoveNext()
Wend
%> </td>
          </tr>
        </table>
      </form></td>
    <td valign="top"><table width="100%" border="1" cellpadding="2" cellspacing="0">
        <tr valign="top" bgcolor="#CCCCCC">
          <td class="tekst"><div align="center">Firma</div></td>
          <td class="tekst"><div align="center">Postnr</div></td>
          <td class="tekst"><div align="center">By</div></td>
          <td class="tekst"><div align="center">Kontaktperson</div></td>
          <td class="tekst"><div align="center">Titel</div></td>
          <td class="tekst"><div align="center">Tlf. </div></td>
          <td class="tekst"><div align="center">Email</div></td>
          <td class="tekst"><div align="center">Web</div></td>
          <td class="tekst"><div align="center">Branche</div></td>
          <td class="tekst"><div align="center">Virksomheds type</div></td>
          <td class="tekst"><div align="center">Antal medarbejdere</div></td>
        </tr>
        <tr bgcolor="#EEEEEE" class="tekst">
          <td><%=(rs_users.Fields.Item("firmanavn").Value)%>&nbsp;</td>
          <td><%=(rs_users.Fields.Item("postalcode").Value)%>&nbsp;</td>
          <td><%=(rs_users.Fields.Item("city").Value)%>&nbsp;</td>
          <td><%=(rs_users.Fields.Item("f_name").Value)%>&nbsp;</td>
          <td><%=(rs_users.Fields.Item("stilling").Value)%>&nbsp;</td>
          <td><%=(rs_users.Fields.Item("phone").Value)%>&nbsp;</td>
          <td><%=(rs_users.Fields.Item("email").Value)%>&nbsp;</td>
          <td><%=(rs_users.Fields.Item("homepage_url").Value)%>&nbsp;</td>
          <td><%=(rs_users.Fields.Item("branche").Value)%>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
      </table>
    </td>
  </tr>
  <tr>
    <td bgcolor="#F8F8F8">&nbsp;</td>
    <td valign="top"> </td>
  </tr>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html>
<%
rs_users.Close()
Set rs_users = Nothing
%>
<%
rs_forkortelser.Close()
Set rs_forkortelser = Nothing
%>
Avatar billede skyggen2000 Nybegynder
17. marts 2005 - 09:35 #19
Jeg skrev tidligere:
det ser ud som om du hele tiden requester den samme værdi med "sp_id", der enten er "true" eller "on". Du er nødt til at hive den enkelte værdi fra tjekboksen, altså tjekke på navnet.
Fik du tjekket det? Tror jeg ikke:)

Jeg kan se på din kode at du kører databaseset igennem, og danner dine rækker, men du glemmer at tage højde for om rækkerne skal dannes pga. postback, eller på baggrund af data fra din base. dvs. siden vises første gang eller lign.

Ved hver sp_id, må du forsøge at lave et request(sp_id), hvor du skal huske at værdien skal være en streng. Hvis værdien findes, er det den værdi du skal benytte til at generere dine rækker ikke sandt?

kan se du har været tæt på:
'sp_id = reequest.form(rs_forkortelser.Fields.Item("sp_id").Value)

Du skal bare tjekke om den har en værdi. Desuden er der et e for meget:) reequest
Avatar billede jmc Nybegynder
18. marts 2005 - 21:25 #20
takker
Avatar billede skyggen2000 Nybegynder
21. marts 2005 - 10:42 #21
tak for points.
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