Avatar billede dj-sejler Praktikant
17. august 2004 - 14:36 Der er 17 kommentarer og
1 løsning

select-problem

Hej...

jeg skal lave en select-boks hvor den "selected" værdi skal være den fra access databasen.

Der er bare et problem... det virker ikke. Dataen i db'en er på formen "dato og klokkeslæt" med kort datoform.

Havde tænkt følgende:
<select name="frakl">
<% if rs("frakl") = "00:00" then %>
<option value="00:00" selected="selected">00:00</option>
<% else %>
<option value="00:00">00:00</option>
<% end if %>
</select>

men det virker ikke rigtigt...
det er ikke fordi databasen ikke er åben for jeg får andre data ud.

Håber der er nogen der kan hjælpe
Avatar billede fennec Nybegynder
17. august 2004 - 14:45 #1
For det første. Er typen "dato og klokkeslæt" med kort datoform eller "dato og klokkeslæt" med kort klokkesletformat??

Og hvad er det du vil have ud? Klokkeslet fra 00:00 til 23:59. Skal der ikke være et interval den springer med???
Avatar billede dj-sejler Praktikant
17. august 2004 - 14:49 #2
det er kort klokkeslæt self ;)

og jeg gemmer datoen med 30 minutters interval, altså
00:00
00:30
01:00
osv...
Avatar billede fennec Nybegynder
17. august 2004 - 14:57 #3
Prøv denne:

for f=0 to 23
  if f < 10 then
    tid1 = "0"&f&":00"
    tid2 = "0"&f&":30"
  else
    tid1 = f&":00"
    tid2 = f&":30"
  end if
  %>
  <option value="<%= tid1 %>" <% if rs("frakl") = tid1 then Response.write "selected" %>><%= tid1 %>
  <option value="<%= tid2 %>" <% if rs("frakl") = tid2 then Response.write "selected" %>><%= tid2 %>
<% next %>
</select>
Avatar billede dj-sejler Praktikant
17. august 2004 - 15:07 #4
jeg får en mismatch på 'rs'
Avatar billede fennec Nybegynder
17. august 2004 - 15:10 #5
Så prøv at lave den om til tekst:
cstr(rs("frakl"))
Avatar billede dj-sejler Praktikant
17. august 2004 - 15:12 #6
jeg ændrede det til strfrakl... og det virkede...
men selected komme ikke med...
Avatar billede fennec Nybegynder
17. august 2004 - 15:17 #7
så er problemt lige her "rs("frakl") = tid1". De stemmer åbentbart ikke overens. Det skriver vi lige ud i option i stedet

<option value="<%= tid1 %>"><%= rs("frakl") &"="& tid1 %>
<option value="<%= tid2 %>"><%= rs("frakl") &"="& tid2 %>

Så skal jeg lige have et eks på hvad der står i selecten....
Avatar billede dj-sejler Praktikant
17. august 2004 - 15:23 #8
hvis jeg sætte de to linie ind får jeg samme fejl som før, hvor det er den eneste linie i select-boksen...

men det som "næsten" virker på siden er følgende:
<select name="frakl">
<%
for f=0 to 23
  if f < 10 then
    tid1 = "0"&f&":00"
    tid2 = "0"&f&":30"
  else
    tid1 = f&":00"
    tid2 = f&":30"
  end if
  %>
  <option value="<%= tid1 %>" <% if strfrakl = tid1 then Response.write "selected='selected'" %>><%= rs("frakl") &"="& tid1 %></option>
  <option value="<%= tid2 %>" <% if strfrakl = tid2 then Response.write "selected='selected'" %>><%= rs("frakl") &"="& tid2 %></option>
<% next %>
</select>
Avatar billede fennec Nybegynder
17. august 2004 - 15:27 #9
hvad indeholder strfrakl helt præcis??
og hvad står der i dropdownboxen?? skulle gerne være noget i denne stil:

10:30=00:00
10:30=00:30
10:30=01:00
....
Avatar billede dj-sejler Praktikant
17. august 2004 - 15:29 #10
strfrakl indeholder rs("frakl") og i dette tilfælde er det 08:00

det var denne der virkede:

<select name="frakl">
<%
for f=0 to 23
  if f < 10 then
    tid1 = "0"&f&":00"
    tid2 = "0"&f&":30"
  else
    tid1 = f&":00"
    tid2 = f&":30"
  end if
  %>
  <option value="<%= tid1 %>" <% if strfrakl = tid1 then Response.write "selected='selected'" %>><%= tid1 %></option>
  <option value="<%= tid2 %>" <% if strfrakl = tid2 then Response.write "selected='selected'" %>><%= tid2 %></option>
<% next %>
</select>

indholdet er:

  <option value="00:00" >00:00</option>
  <option value="00:30" >00:30</option>

  <option value="01:00" >01:00</option>
  <option value="01:30" >01:30</option>

  <option value="02:00" >02:00</option>
  <option value="02:30" >02:30</option>
Avatar billede fennec Nybegynder
17. august 2004 - 15:34 #11
virker det nu eller ikke? Jeg er blevet forviret :o)
Avatar billede dj-sejler Praktikant
17. august 2004 - 15:35 #12
ikke helt... den mangler at får selected med :(
Avatar billede fennec Nybegynder
17. august 2004 - 15:43 #13
fint nok.

Problemet er at strfrakl og tid1/tid2 ikke er ens. Det kan være fordi de har forskellig datatype. Eller fordi der evt er et mellemrum i en af dem. Så i stedet for at skrive tid1 tid2 ud, som det der vises i dropdownboxen, skriver vi lige sammenligningen ud.

<option value="<%= tid1 %>" <% if strfrakl = tid1 then Response.write "selected='selected'" %>><%= strfrakl &"="& tid1 %></option>
  <option value="<%= tid2 %>" <% if strfrakl = tid2 then Response.write "selected='selected'" %>><%= strfrakl &"="& tid2 %></option>

På denne måde kan vi debugge os frem til problemet. Du skal bare fortælle mig igen hvad der så står i dropdownboxen. Hvis strfrakl er "08:00" skulle listen gerne se sådan ud:

08:00=00:00
08:00=00:30
08:00=01:00
....
Avatar billede dj-sejler Praktikant
17. august 2004 - 15:46 #14
du har ret... det er formen den er galt med... 08:00:00 står der rigtig nok
Avatar billede dj-sejler Praktikant
17. august 2004 - 15:47 #15
<option value="<%= tid1 %>" <% if FormatDateTime(strfrakl, vbShortTime) = tid1 then Response.write "selected='selected'" end if%>><%= tid1 %></option>

  <option value="<%= tid2 %>" <% if FormatDateTime(strfrakl, vbShortTime) = tid2 then Response.write "selected='selected'" end if %>><%= tid2 %></option>


nu virker det vidst
Avatar billede fennec Nybegynder
17. august 2004 - 15:48 #16
ellers kan du bruge left(strfrakl,5)
Avatar billede phineas_phreak Nybegynder
17. august 2004 - 15:53 #17
kun kunne også lægge det i et array. det ser måske lidt pænere ud:

dim a(2)
a(1) = "00:00"
a(2) = "00:30"
for i = 1 to 2
if rs("frakl") = a(i) then
  response.write "<option selected>" & a(i) & "</option>"
else
  response.write "<option>" & i & "</option>"
end if
next
Avatar billede fennec Nybegynder
17. august 2004 - 16:02 #18
phineas_phreak >>
Så synes jeg nu det er smatere at beregne alle klokkeslet. Ellers skal du til at lave et array med 48 tal. Og hvis den så senere skal ændres til at springe hver 15 min. bliver der endnu flere felter.

Men det er jo altid en smagssag, hvad man kan lide :o)
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