/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
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



Søg
Reklame
Statistik
Spørgsmål : 177556
Tips : 31968
Nyheder : 719565
Indlæg : 6408866
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste