On Thu, 22 Aug 2002 22:11:24 +0000 (UTC), Henrik Johansne
<henrik-johansen@vip.cybercity.dk> wrote:
>Kan mab bruge en variabel i forbindelse med SELECT * FROM
>og i forbindelse med en anden variabel. ?
>
>Så slipper jeg for at rette 300 .
Nej, men du kan bruge et array - som faktisk er et enormt fleksibelt
sted at gemme resultater.
Se fx:
<URL:
http://html.dk/tutorials/asp/lektion8.asp>
>'**************************************************
>'START LAMPE 1
>'**************************************************
>Jeg tænkte en variabel her, eksempel vis.
> ( var Tal
> Tal = Tal + 1
> så lægges der en
>til hver gang)
>
>
> (VARIABEL (Tal)HER I STEDET FOR 1)
>strSQL = "SELECT * FROM stamsats WHERE Lampe = 1 "
>Set rs = Conn.Execute(strSQL)
>
>
>Hvis stamsats ikke findes
> (navn+VARIABEL (Tal) HER I STEDET FOR 1)
>navn1 = "Ledig"
>
>if rs.eof then
> (navn+VARIABEL (Tal) HER I STEDET FOR 1)
>navn1 = rs("navn")
>End if
>'**************************************************
>'END LAMPE 1
>'**************************************************
>'**************************************************
>'START LAMPE 2
>'**************************************************
> (Tal =
>Tal + 1)
>
> (VARIABEL (Tal) HER I STEDET FOR 2)
>strSQL = "SELECT * FROM stamsats WHERE Lampe = 2 "
>Set rs = Conn.Execute(strSQL)
>
>
>Hvis stamsats ikke findes
> (navn+VARIABEL (Tal) HER I STEDET FOR 2)
>navn2 = "Ledig"
>
>if rs.eof then
> (navn+VARIABEL (Tal) HER I STEDET FOR 2)
>navn2 = rs("navn")
>End if
>'**************************************************
>'END LAMPE 2
>'**************************************************
Det er sikkert gået op for dig, at hvis du har mange data, så er det
en ret besværlig måde at tygge dig igennem på
Men det kan da lade sig gøre.
<%
' Først dimensionerer du dit array
' Du vil have to resultater, og da array starter fra 0, bliver det:
Dim arrNavn(1)
' Brug fx en For .. Next-loop
' Loopen indeholder hele din hidtidige kode:
For i = 0 To 1
strSQL = "SELECT navn FROM stamsats WHERE Lampe = " & (i + 1)
Set rs = Conn.Execute(strSQL)
' Hvis stamsats ikke findes
If rs.eof
arrNavn(i) = "Ledig"
' Hvis stamsats ikke findes
Else
arrNavn(i) = rs("navn")
End if
' Husk at lukke og slukke recordset
rs.Close
Set rs = Nothing
Next
%>
Du har nu dine to resultater i:
arrNavn(0) og arrNavn(1) - og du kan bearbejde dem videre herfra.
- fx:
Response.Write arrNavn(1)
Men, men, men:
Hvis du har mere end ganske få data, så er det ikke en ret effektiv
metode: Danne Sql-streng, fyre den af mod databasen, hive data ud,
lukke recordset - altsammen for hver eneste lille resultat.
En anden metode:
<%
' Først hiver vi alle data ud på én gang:
' Bemærk: Vi tage lige Lampe-værdien med ud
strSQL = "SELECT Lampe, navn FROM stamsats WHERE Lampe IN (1, 2)" & _
" ORDER BY Lampe ASC"
Set rs = Conn.Execute(strSQL)
' Så løber vi alle mulige værdier igennem
' Vi ved jo ikke, om recordsettet indeholder 0, 1 eller 2 poster
For i = 1 To 2
If rs.eof Then
arrNavn(i) = "Ledig"
ElseIf rs("Lampe") <> i Then
arrNavn(i) = "Ledig"
Else
arrNavn(i) = rs("navn")
rs.movenext
End If
Next
' Husk at lukke og slukke recordset
rs.Close
Set rs = Nothing
%>
Du har også her dine to resultater i:
arrNavn(0) og arrNavn(1) - og du kan bearbejde dem videre herfra.
Koden kan sikkert effektiveres mere ...
Good luck!
--
Jørn Andersen,
Brønshøj