Avatar billede krogstrup Nybegynder
07. juni 2001 - 22:38 Der er 40 kommentarer og
2 løsninger

Dynamiske variabler i ASP ?!?

Jeg har en masse standard kode der åbner en database og udfører en række handlinger. Mit problem er at jeg med stor fordel kunne genbruge denne kode en masse steder, HVIS jeg blot kunne filtrere nogle variabler ind hist og her.

Here goes....

Kan nedenstående på nogen som helst finurlig måde lade sig gøre?


number = 3

set rs+number = Server.CreateObject(\"ADODB.RecordSet\")

Ovenstående linie skal selvfølgelig læses som:
set rs3 = Server.CreateObject(\"ADODB.RecordSet\")

når det fortolkes !

Kan det lade sig gøre. Hvis ja, ville jeg kunne undgå at skulle gentage samme kode igen og igen.... Så kunne jeg blot hive koden ind via en INCLUDE og så forinden definere en række variabler som skulle flettes ind i koden...

U see what I mean.... ?
Avatar billede krogstrup Nybegynder
07. juni 2001 - 22:42 #1
PS: Grunden til at jeg skal kunne flette et tal ind efter RS er at jeg nogen gange laver loops inde i loops og derfor skal der oprettes forskellige variabler der indeholder mine recordsets !!!
Avatar billede zoidberg Nybegynder
07. juni 2001 - 22:43 #2
prøv med rs & number

jeg ved ikke om det virker!
Avatar billede krogstrup Nybegynder
07. juni 2001 - 22:45 #3
Det kan man ikke !!!
Avatar billede tdaugaard Nybegynder
07. juni 2001 - 22:46 #4
Det kan IKKE lade sig gære overhovedet .. men du kan lave et array ..

Dim Rs(5)

Set Rs(0) = ....
Avatar billede krogstrup Nybegynder
07. juni 2001 - 22:46 #5
Jeg forestiller mig noget i retning af:

set eval(\"rs\" & number) = Server.CreateObject(\"ADODB.RecordSet\")
Avatar billede tdaugaard Nybegynder
07. juni 2001 - 22:47 #6
krogstrup:> Det kan man desværre ikke ...
Avatar billede krogstrup Nybegynder
07. juni 2001 - 22:47 #7
Findes eval funktionen ikke i ASP ?
Avatar billede krogstrup Nybegynder
07. juni 2001 - 22:47 #8
øv øv øv
Avatar billede tdaugaard Nybegynder
07. juni 2001 - 22:49 #9
krosgstrup:> nej, desværre ikke :-(

Men men .. hvad skal de bruge til ? for et array kan sikkert godt løse problemet tror jeg ..
Avatar billede krogstrup Nybegynder
07. juni 2001 - 22:50 #10
Hvis man laver variablen som et array, kan man så putte en variabel ind som paramater?

Altså....

number = 3

Dim rs(5)

Set rs(number) = Set bla bla
Avatar billede stigc Nybegynder
07. juni 2001 - 22:50 #11
du kan lægge dem i et array, men jeg forstå ikke hvor du vil hen med det.....
Avatar billede tdaugaard Nybegynder
07. juni 2001 - 22:51 #12
Nemlig :-)

Så har du f.eks. her, 6 \"variabler\" på en måde, som du får adgang til vha. et index nr. (det der står mellem ())
Avatar billede krogstrup Nybegynder
07. juni 2001 - 22:53 #13
Jeg har en kodestump - lad os bare kalde den codeX - som genbruges igen og igen i loops der ligger inden i hinanden. Problemet er bare at jeg ikke kan bruge fuldstændig samme kode inde i hvert loop. Jeg skal ind og ændre på variablennavnene for ikke at få fejl. Derfor har jeg brug for at kunne skabe dynamisk sammensatte variabel-navne....

Gir det mening ?
Avatar billede krogstrup Nybegynder
07. juni 2001 - 22:53 #14
Ovenstående var henvendt til stigc !
Avatar billede stigc Nybegynder
07. juni 2001 - 22:55 #15
ja, det giver mening. Det lyder som om du har brug for nogen funktioner, hvor man overfører variable via parameterlisten...
Avatar billede tdaugaard Nybegynder
07. juni 2001 - 22:55 #16
krosgstrup:> det skal lige siges at hvis du ikke aner hvor mange du får brug for kan du bruge ReDim Preserve rs(nyt_antal_elementer)

f.eks.

ReDim Preserve rs(UBound(rs) + 1)

vil give dig eet element mere...
Avatar billede krogstrup Nybegynder
07. juni 2001 - 22:59 #17
stigc >>>

Ja, men mit spørgsmål var jo netop om det er muligt at skabe et variabel-navn udfra et parameter?

altså...

createCode(number)
set rs + number = bla bla

rs + number skal så fortolkes som
rs3 hvis funktionen er kaldt med 3 som parameter!
Avatar billede krogstrup Nybegynder
07. juni 2001 - 23:00 #18
Jeg synes bare jeg engang har læst noget om (her på eksperten) at man kunne bruge en funktion der mindede om EVAL fra javascript !
Avatar billede stigc Nybegynder
07. juni 2001 - 23:01 #19
Det kan ASP heldigvis ikke, medfører noget være kode. Brug arrayes i stedet for.
Avatar billede tdaugaard Nybegynder
07. juni 2001 - 23:01 #20
krosgstrup:> Har jeg aldrig hørt om .. men nu kender jeg heller ikk ASP 100% ..
Avatar billede stigc Nybegynder
07. juni 2001 - 23:05 #21
Jeg må vist tage det i mig igen, prøv at se her:



http://www.devasp.com/forum/message.asp?m=396

Avatar billede tdaugaard Nybegynder
07. juni 2001 - 23:08 #22
Well well ... jeg vil nu stadig bruge et array .. så ved du da hvor mange elementer du har.
Avatar billede krogstrup Nybegynder
07. juni 2001 - 23:09 #23
Hvordan virker nedenstående så...:

Execute element & \" =\"\" \" & Request.form(element) & \" \"\" \"


Jeg forstår det ikke helt ?!?
Avatar billede tdaugaard Nybegynder
07. juni 2001 - 23:10 #24
krogstrup:> Execute \"Set Rs\" & number & \" = conn.execute(...)\"

Avatar billede krogstrup Nybegynder
07. juni 2001 - 23:10 #25
Hvis ovenstående bruges til dynamisk at skabe et variabel-navn - hvordan henviser jeg så til variablen...?
Avatar billede krogstrup Nybegynder
07. juni 2001 - 23:10 #26
Du var eet sekund hurtigere :-)
Avatar billede tdaugaard Nybegynder
07. juni 2001 - 23:10 #27
Execute \"mitID = 1\"
response.write mitID

sådan funker det..
Avatar billede stigc Nybegynder
07. juni 2001 - 23:11 #28
test1 = \"hej1\"
test2 = \"hej2\"


Execute \"response.write(test\" & 1 & \")\"
Execute \"response.write(test\" & 2 & \")\"
Avatar billede stigc Nybegynder
07. juni 2001 - 23:12 #29
her har jeg brugt to variabler, og jeg har lige testet det.
Avatar billede stigc Nybegynder
07. juni 2001 - 23:13 #30
så lærte jeg også noget nyt i dag. :)
Avatar billede tdaugaard Nybegynder
07. juni 2001 - 23:16 #31
Me too :-)
Avatar billede krogstrup Nybegynder
07. juni 2001 - 23:17 #32
Hvordan får jeg nedenstående skrevet korrekt ?


number = 2

Execute \"Set rs\" & number & \" = Server.CreateObject(\'ADODB.RecordSet\')\"
Avatar billede krogstrup Nybegynder
07. juni 2001 - 23:17 #33
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03EA)
Der er en syntaksfejl
/test.asp, line 5
Avatar billede stigc Nybegynder
07. juni 2001 - 23:21 #34
Execute \"Set rs\" & number & \" = Server.CreateObject(\"\"ADODB.RecordSet\"\")\"
Avatar billede krogstrup Nybegynder
07. juni 2001 - 23:21 #35
Jeg tror jeg har fundet løsningen...

Man skal bare udskifte \' med 2 x \" , ikke ?
Avatar billede krogstrup Nybegynder
07. juni 2001 - 23:22 #36
2 sekunder hurtigere :-)
Avatar billede krogstrup Nybegynder
07. juni 2001 - 23:23 #37
GENIALT

Tusind tak til jer begge 2 :-)
Avatar billede krogstrup Nybegynder
08. juni 2001 - 13:54 #38
Tjek forresten denne her....


hejdig = \"Du er glad\"

v1 = \"hej\"
v2 = \"dig\"

test = Eval(v1 & v2)

response.write test
Avatar billede tdaugaard Nybegynder
08. juni 2001 - 13:58 #39
hvorfor ?
Avatar billede krogstrup Nybegynder
08. juni 2001 - 14:00 #40
Jeg mente ikke I skulle undersøge om det fungerer. Det gør det !

Det var blot ny viden for mig - og så tænkte jeg det kunne være I heller ikke vidste at man kunne bruge EVAL i ASP !

:-)
Avatar billede tdaugaard Nybegynder
08. juni 2001 - 14:04 #41
Passer ikke helt:

Eval(\"strFile = \"\"e:\\html\\html06.html\"\"\"

  Response.Write strFile giver \"\"

Execute(\"strFile = \"\"e:\\html\\html06.html\"\"\")

  Response.Write strFile giver \"e:\\html\\html06.html\"
Avatar billede krogstrup Nybegynder
08. juni 2001 - 14:08 #42
Har du prøvet mit eksempel ?
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