|
| Loope igennem database Fra : Andreas Warberg |
Dato : 21-04-01 11:52 |
|
Hej gruppe,
Jeg har skrevet følgende kode for at loope igennem felterne i en database.
De er stillet op således:
nr1 | nr2 | osv
Dim i, strSession, strRS
i = 1
Do Until i = 4
strSession = Chr(34) & "number" & i & Chr(34)
strRS = Chr(34) & "nr" & i & Chr(34)
Set Session(strSession) = rs("nr1")
'Set Session(strSession) = rs(strRS)
Response.Write "<p>" & Session(strSession) & "<p>"
i = i+1
Loop
Men hvis jeg bruger den linie jeg har kommenteret væk, får jeg denne fejl:
Error Type:
ADODB.Recordset (0x800A0CC1)
Item cannot be found in the collection corresponding to the requested name
or ordinal.
Hvordan skriver jeg strRS så den kan samarbejde med mit ADODB.Recordset ?
Er der en smartere måde at gøre det på?
På forhånd tak.
Mvh. Andreas Warberg
PS. Som koden er skrevet ovenfor virker det fint, men Session("nrX")
indeholder jo altid den samme værdi: rs("nr1")
| |
Jørn Andersen (21-04-2001)
| Kommentar Fra : Jørn Andersen |
Dato : 21-04-01 14:40 |
|
On Sat, 21 Apr 2001 12:52:20 +0200, "Andreas Warberg"
<biggib@NOcstrikeJUNK.dk> wrote:
Hej Andreas,
Vil det ikke virke med:
strRS = "nr" & i
Set Session(strSession) = rs("strRS")
- ?
Mvh. Jørn
--
Jørn Andersen
Brønshøj
| |
Andreas Warberg (21-04-2001)
| Kommentar Fra : Andreas Warberg |
Dato : 21-04-01 15:18 |
|
"Jørn Andersen" <jorn.a@email.dk> wrote in message
news:+YzhOoMcN9pUNI=wr9+TILAm74+7@4ax.com...
> On Sat, 21 Apr 2001 12:52:20 +0200, "Andreas Warberg"
> <biggib@NOcstrikeJUNK.dk> wrote:
> Vil det ikke virke med:
>
> strRS = "nr" & i
>
> Set Session(strSession) = rs("strRS")
Nej, for så tror den jo bare, at den skal finde kolonnen der hedder strRS
(den ved ikke at man har defineret strRS)
(Jeg testede det for en sikkerheds skyld - det virker ikke)
Andre forslag?
-Andreas
| |
Lauritz Jensen (21-04-2001)
| Kommentar Fra : Lauritz Jensen |
Dato : 21-04-01 16:03 |
|
Andreas Warberg wrote:
>
> Jeg har skrevet følgende kode for at loope igennem felterne i en database.
> De er stillet op således:
> nr1 | nr2 | osv
>
> Dim i, strSession, strRS
> i = 1
> Do Until i = 4
> strSession = Chr(34) & "number" & i & Chr(34)
> strRS = Chr(34) & "nr" & i & Chr(34)
> Set Session(strSession) = rs("nr1")
> 'Set Session(strSession) = rs(strRS)
> Response.Write "<p>" & Session(strSession) & "<p>"
> i = i+1
> Loop
Nu ved jeg ikke hvad det er du vil, men jeg gætter og tror jeg ville
skrive det sådan:
Dim i
For i = 0 To Rs.Fields.Count - 1
Session("""number" & i & """") = Rs(i).Value
Response.Write Session("""number" & i & """")
Next
Sprøgsmål:
- Hvorfor vil du have det ind i sesion? (Da du gør det, må det være
fordi du vil gemme det til senere og så virker det underligt (aka. som
dårlig stil) ikke at give nogle mere beskrivende navne til værdierne end
"numberXX")
- Er du sikker på at du gerne vil have Field objektet ind i
session-collectionen? (Du bruger "Set session(...) = ...", dermed får du
en reference til objektet. De normale ado objekter er ikke beregnet til
at ligge i session, så det vil give dårlig preformance og da du aligevel
lukker forbindelsen til databasen kan du ikke bruge objektet senere)
- Hvorfor bruger du chr(34) og ikke ""?
- Hvorfor bruger du do...loop og ikke for...next?
--
Lauritz
| |
Andreas Warberg (21-04-2001)
| Kommentar Fra : Andreas Warberg |
Dato : 21-04-01 16:16 |
|
"Lauritz Jensen" <lauritz2@hotmail.com> wrote in message
news:3AE1A110.E5A266A3@hotmail.com...
> Nu ved jeg ikke hvad det er du vil, men jeg gætter og tror jeg ville
> skrive det sådan:
> Dim i
> For i = 0 To Rs.Fields.Count - 1
> Session("""number" & i & """") = Rs(i).Value
> Response.Write Session("""number" & i & """")
> Next
Mange tak - jeg kendte ikke til Rs.Fields.Count kommandoen - jeg er rookie.
Men det virker efter hensigten!
> Sprøgsmål:
> - Hvorfor vil du have det ind i sesion? (Da du gør det, må det være
> fordi du vil gemme det til senere og så virker det underligt (aka. som
> dårlig stil) ikke at give nogle mere beskrivende navne til værdierne end
> "numberXX")
Som jeg forestiller mig designet nu er det heller ikke nødvendigt at bruge
Session - og det giver mest mening at undlade Sessions.
> - Er du sikker på at du gerne vil have Field objektet ind i
> session-collectionen? (Du bruger "Set session(...) = ...", dermed får du
> en reference til objektet.
Da jeg blev i tvivl om hvorvidt det kunne fungere uden Set foran brugte jeg
det, det skal selvfølgelig også væk.
> - Hvorfor bruger du chr(34) og ikke ""?
Jeg var ikke klar over, at man kunne skrive et citationstegn på den måde -
troede at VBScript tolkede alle citationstegn som begyndelse / slutningen på
en string, men sådan er det åbenbart ikke.
> - Hvorfor bruger du do...loop og ikke for...next?
Jeg prøvede at skrive funktionen med en for... next, men af en eller anden
grund (fejl 40, formentlig) blev i = 0 ikke forøget med 1 per løkke.
Mange tak for hjælpen. Det giver mig lidt at arbejde med :)
Med venlig hilsen
Andreas
| |
|
|