22. februar 2006 - 00:21Der er
13 kommentarer og 1 løsning
Insætte del af area i variabelnavn.
Hejsa.
Jeg har lavet et arey således :
<% numoflanes = 20 for i = 1 to numoflanes rs.open "(Min sql sætning)", sqlstr
if rs.eof then lane(i) = 1 else lane(i) = 0 end if
next %>
Mit arey skulle jo så køre fra numrene 1 til 20. Hvis løkken så kører f.eks. for 3 gang, så ville jeg gerne have at den satte en variabel med navnet : lane3 = 0 eller 1.
Men hvordan gør man det? Er min syntaks ikke forkert her?
Ok. Jeg har 20 bowlingbaner (numoflanes = 20)! ok'?
Jeg fyrer så en SQL af, som tjekker en tabel i min DB. Hvis banen er optaget så skal der ligge en record i databasen som har et felt der hedder : lane_id. Dette felt indeholder så selvfølgelig banenummeret.
Min sql hedder alt noget ala : 'select lane_id from reservation_db where res_date = '"&dato&"' and res_time = '"&starttidspunkt&"' ", strsql
Den indeholder også noget inner join, men den skal altså finde et lane_id for et givent tidspunkt og dato.
Jeg vil så køre denne SQL for hver bane nr.
Derfor vil jeg lave et area. Altså for i = 1 to numoflanes
Hvis recordsettet er tomt, så vil jeg gerne lave en variabel der hedder : lane + det loop nr. vi har gang i, i area'et. F.eks. lane1 = 0 eller hvis det er anden gang løkken kører så : lane2 = 0.
Hvis recordsettet ikke er tomt skal jeg i stedet lave en værdi der hedder : lane1 = 1 eller lane2 = 1 osv...
Men hvordan får man det aktuelle løkkenummer i i navnet på ens variabel?
Jeg vil jo ikke sætte et variabel til at være noget tekst + en værdi. Jeg vil lave en variabel som har en konstant værdi enten 0 eller 1, men navnet på variablen skal være dynamisk.
Og det kan jeg ikke lige greje!
JEg har løst det med denne sindsygt lange og ret tåbelige kode :
-----------
for i = 1 to numoflanes rs.open "select lane_id from lane_reserv inner join reservation_db on lane_reserv.reserv_id = reservation_db.reserv_id where reservation_db.reserv_date = '"&dato&"' and lane_id = '"&i&"' and lane_tid or lane_totid = '1899-12-30 "&bowling_start&":00.000' ", strsqlconnect
if rs.eof then if i = 1 then lane1 = 0 elseif i = 2 then lane2 = 0 elseif i = 3 then lane3 = 0 elseif i = 4 then lane4 = 0 elseif i = 5 then lane5 = 0 elseif i = 6 then lane6 = 0 elseif i = 7 then lane7 = 0 elseif i = 8 then lane8 = 0 elseif i = 9 then lane9 = 0 elseif i = 10 then lane10 = 0 elseif i = 11 then lane11 = 0 elseif i = 12 then lane12 = 0 elseif i = 13 then lane13 = 0 elseif i = 14 then lane14 = 0 elseif i = 15 then lane15 = 0 elseif i = 16 then lane16 = 0 elseif i = 17 then lane17 = 0 elseif i = 18 then lane18 = 0 elseif i = 19 then lane19 = 0 elseif i = 20 then lane20 = 0
end if else
if i = 1 then lane1 = 1 elseif i = 2 then lane2 = 1 elseif i = 3 then lane3 = 1 elseif i = 4 then lane4 = 1 elseif i = 5 then lane5 = 1 elseif i = 6 then lane6 = 1 elseif i = 7 then lane7 = 1 elseif i = 8 then lane8 = 1 elseif i = 9 then lane9 = 1 elseif i = 10 then lane10 = 1 elseif i = 11 then lane11 = 1 elseif i = 12 then lane12 = 1 elseif i = 13 then lane13 = 1 elseif i = 14 then lane14 = 1 elseif i = 15 then lane15 = 1 elseif i = 16 then lane16 = 1 elseif i = 17 then lane17 = 1 elseif i = 18 then lane18 = 1 elseif i = 19 then lane19 = 1 elseif i = 20 then lane20 = 1
end if
end if rs.close next
-----------
Men det kan da ikke være rigtigt at man er nødt til at gøre det sådan! Eller ???
Skal du bruge variabler med navne lane1, lane2, lane3 osv? kan du ikke bruge et Array eks:
Dim lane(20) if rs.eof then vaerdi = 0 else vaerdi = 1 end if
for i = 1 to numoflanes lane(i) = vaerdi next
Dette burde give det samme som din kode, men jeg kan stadigvæk ikke helt forstå hvad meningen med det er.. men det er måske bare mig som er lidt langsom :-)
Indeholder dit recordset kun én record? eks lane_id = 17 Dette betyder så at bane 17 er optaget på det pågældende tidspunkt? Du har derfor brug for at sætte alle andre baner i Arrayet til 1 mens nummer 17 skal være 0?
Ja. SQL sætningen kører 20 gange. Hver gang hentes kun en record ud, hvis der da findes en. Som du kan se så spørger jeg på " WHERE lane_id = '"&i&"' "
i er den løkke jeg er ved at køre igennem fra 1 til 20. Hvis der så ikke findes nogen record, så vil jeg lave en variabel der skal hedde : lane1 = 0 og hvis der findes en skal den hedde : lane1 = 1
Næste gang jeg så kører SQL sætningen, så spørger den efter en record for næste bane nr. og igen skal jeg lave en variabel med navnet : lane2 = 0 eller lane2 = 1
Ja. Jeg havde det samme, som du beskriver her! Problemet var at den gav en fejl når jeg brugte et array. Fandt dog ud af at det var fordi jeg ikke havde dim sat først! Så snart jeg satte den ekstra linie ind virkede det! Men smid lige et svar så får du points!
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.