Multidesk.be » Forums » ASP » Hulp bij een traagwerkend script (gesloten)

Helpinformatie
Dit onderwerp bevindt zich in het archief.
Het is bijgevolg niet mogelijk er nog op te reageren.
  • Pagina
  • 1 van 1
  • RSS
  • Eerste ongelezen reactie
  • Plaats een reactie
  • Abonneer mij
  • Onderwerp sluiten
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door een gast op vrijdag 15 september 2006 om 15:08:57.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Hallo,

Voor een wel bepaalde site heb ik een pagina waar in de loop van de tijd hier en daar wat is bijgekomen. Op dit ogenblik zit er nu een loop in die ervoor zorgt dat het script heel traag gaat lopen. Heeft iemand raad over hoe ik het anders zou kunnen doen?

Dit is het script
<%
Dim mogUren()
Dim mogKleur()
Dim bezUren()
i = 0
n = 0

'arrays maken

'alle uren uit een tabel halen die mogelijk zijn om op die dag een afspraak te maken
Do While Not rsDagen.EOF
ReDim Preserve mogUren(i)
mogUren(i) = DoDateTime((rsDagen.Fields.Item("Uren").Value), 4, 1033)
i = i + 1
rsDagen.MoveNext
Loop

'alle uren uit een tabel halen die reeds bezet zijn
Do While Not rsVak.EOF
ReDim Preserve bezUren(n)
bezUren(n) = DoDateTime((rsVak.Fields.Item("Uren").Value), 4, 1033)
n = n + 1
rsVak.MoveNext
Loop
'einde arrays
%>
<%
'functie
function Uren(varUur)
'vergelijking van de array de mogelijke uren(mogUren) met array bezette uren (bezUren)
'indien er een bezette uur in de array mogelijke uren overeenkomt, wordt die anders weergegeven

If n > 0 then
For each arrayElement in bezUren
arrUur = arrayElement
if instr(arrUur,varUur) > 0 then
Uren = "<tr bgcolor=""#ff0000""><td class=""rubrieken""><div align=""center"">" & varUur & "</div></td></tr>"
exit function
else

'hier begint mijn probleem, wanneer het script afloop moet hij telkemalen doordit stuk lopen waar hij connectie maakt met de db iets gaat opzoeken en dan de connectie sluiten. Deze kolommen zitten in dezelfde tabel als de tabel waar mijn mogelijke uren voor afspraak inzitten. Ik zet een voorbeeld van deze tabel onder het script. Dus mijn SQL gaat als volgt: neem de record waar voor die dag (maandag of dinsdag of...) het uur gelijk is aan dat (7:00 of 8:00 of....). En daarna vraag ik de waarde op van de kolom die ernaast staat. Ik denk dat ik dit simpelder kan oplossen daardit mee in een array te nemen maar na enkele dagen zoeken lukt het me nog steeds niet.

select case strdag
case "Ma"
strkolom = "Maandag_soort"
case "Di"
strkolom = "Dinsdag_soort"
case "Wo"
strkolom = "Woensdag_soort"
case "Do"
strkolom = "Donderdag_soort"
case "Vr"
strkolom = "Vrijdag_soort"
case "Za"
strkolom = "Zaterdag_soort"
case else
strkolom = "Zondag_soort"
end select
Dim rsLijst
Dim rsLijst_numRows
Set rsLijst = Server.CreateObject("ADODB.Recordset")
rsLijst.ActiveConnection = MM_connDoc_STRING
rsLijst.Source = "SELECT * FROM tabDagen WHERE Uren = #"&varUur&"#"
rsLijst.CursorType = 0
rsLijst.CursorLocation = 2
rsLijst.LockType = 1
rsLijst.Open()
rsLijst_numRows = 0
strkleur = rsLijst(strkolom)
select case strkleur
case "Co"
strkleur = "FFFF00"
case "Hu"
strkleur = "00CCFF"
case else
strkleur = "00FF00"
end select
Uren = "<tr bgcolor=""#" &strkleur& """><td class=""rubrieken""><div align=""center""><a href=""javascript:pick_hour(" & "'" & varUur & "');"">" & varUur & "</a></div></td></tr>"
rsLijst.Close()
Set rsLijst = Nothing
end if
next
end if

If n = 0 Then
'hier doe ik hetzelfde nogmaals als n = 0 maar dit heb ik achetrwege gelaten daar dit niet op topic is
end if
end function
%>
<%
'uiteindelijke loop van alle mogelijke uren (mogUren)
for each mogUurItem in mogUren
mogUur = mogUurItem
esponse.write Uren(mogUur)
next
%>


Vb van de tabel
ID Uren Ma Maandag_soort Di Dinsdag_soort.........
1 08:00 False Co True Co
2 09:00 True Co True Co
3 10:00 True Af True Af
.............

Ik weet dat het een zeer uitgebreide vraag is maar heeft iemand raad?

Groeten,
Sven
^ Reactie #1 geschreven door thekid op vrijdag 15 september 2006 om 15:50:20.
thekid's avatar
Multiviteit: 5273
Moderator
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Dus het is een script die kijkt welke uren al bezet zijn van een dag? Het ziet er mij een wat ingewikkelde oplossing voor, kan je mij je tabelvelden eens beter beschrijven, en evt een link naar wat je tot nog toe hebt, dan kan ik eens kijken hoe beter op te lossen?

*edit*
als je je even registreert kan je je code doorsturen per pm, en kan ik ze iets beter bekijken :D
Deze tekst werd het laatst bewerkt voor 16.93 % door thekid op vrijdag 15 september 2006 om 15:56:31.
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #2 geschreven door Sven_Br op vrijdag 15 september 2006 om 16:20:45.
Sven_Br heeft nog geen avatar toegevoegd
Multiviteit: 2
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Heb mij dus even geregistreerd dus ben nu lid van de familie.

Ik denk dat de oplossing hem zit in een nieuwe array die de soort opgeeft van dat uur want voor ieder uur is er een soort (ik stuur u even mijn db even door)

dus zou ik bijvoorbeeld dit moeten doen:
Do While Not rsDagen.EOF
ReDim Preserve mogUren(i)
ReDim Preserve soortUren(i)
mogUren(i) = DoDateTime((rsDagen.Fields.Item("Uren").Value), 4, 1033)
soortUren(i) = rsDagen("Soort"))
i = i + 1
rsDagen.MoveNext
Loop

en dan bij de uiteindelijke loop:
i = 1
for each mogUurItem in mogUren
mogUur = mogUurItem
soortUur = response.write(soortUren(i))
response.write Uren(mogUur, soortUur)
i = i+1
next

en dan in mijn functie:
function Uren(varUur,varSoort)

en dan veronderstelde ik dat ik dan de corresponderende soort mee ging krijgen in die vraiable maar dat werkte dus niet.

Of zie ik dit totaal verkeerd?

Deze tekst werd het laatst bewerkt voor 5.18 % door Sven_Br op vrijdag 15 september 2006 om 16:42:51.
^ Reactie #3 geschreven door Sven_Br op vrijdag 15 september 2006 om 17:22:36.
Sven_Br heeft nog geen avatar toegevoegd
Multiviteit: 2
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Heb nu volgende en dit werkt behalve mijn output:

mijn array's:
Dim mogUren()
Dim soortUren()
Dim bezUren()

i = 0
n = 0
g = 0

Do While Not rsDagen.EOF
ReDim Preserve mogUren(i)
mogUren(i) = DoDateTime((rsDagen.Fields.Item("Uren").Value), 4, 1033)
i = i + 1
rsDagen.MoveNext
Loop

select case strdag
case "Ma"
strkolom = "Maandag_soort"
case "Di"
strkolom = "Dinsdag_soort"
case "Wo"
strkolom = "Woensdag_soort"
case "Do"
strkolom = "Donderdag_soort"
case "Vr"
strkolom = "Vrijdag_soort"
case "Za"
strkolom = "Zaterdag_soort"
case else
strkolom = "Zondag_soort"
end select

rsDagen.MoveFirst
Do While Not rsDagen.EOF
ReDim Preserve soortUren(g)
soortUren(g) = rsDagen(strkolom)
g = g + 1
rsDagen.MoveNext
Loop


Do While Not rsVak.EOF
ReDim Preserve bezUren(n)
bezUren(n) = DoDateTime((rsVak.Fields.Item("Uren").Value), 4, 1033)
n = n + 1
rsVak.MoveNext
Loop

%>

mijn uiteindelijke loop:
i = 0
for each mogUurItem in mogUren
mogUur = mogUurItem
soortUur = response.write(soortUren(i))
response.write Uren(mogUur, soortUur)
i = i+1
next

en de functie:
<%function Uren(varUur, varSoort)
If n > 0 then
For each arrayElement in bezUren
arrUur = arrayElement
if instr(arrUur,varUur) > 0 then
Uren = "<tr bgcolor=""#ff0000""><td class=""rubrieken""><div align=""center"">" & varUur & "</div></td></tr>"
exit function
else
strkleur = response.write(varSoort)
select case strkleur
case "Co"
strkleur = "FFFF00"
case "Hu"
strkleur = "00CCFF"
case else
strkleur = "00FF00"
end select
Uren = "<tr bgcolor=""#" &strkleur& """><td class=""rubrieken""><div align=""center""><a href=""javascript:pick_hour(" & "'" & varUur & "');"">" & varUur & "</a></div></td></tr>"
end if
next
end if

If n = 0 Then
.....
end if

end function


en ik krijg volgende output:
Co<tr bgcolor="#00FF00"><td class="rubrieken"><div align="center"><a href="javascript:pick_hour('08:30');">08:30</a></div></td></tr>Co<tr bgcolor="#00FF00"><td class="rubrieken"><div align="center"><a href="javascript:pick_hour('08:45');">08:45</a></div></td></tr>Co<tr bgcolor="#00FF00">


dus de output klop nog niet helemeaal
^ Reactie #4 geschreven door Martijn op vrijdag 15 september 2006 om 21:07:45.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Ik zou het anders oplossen en enkel de dagen/uren waarop effectief reeds een afspraak bestaat wegschrijven naar de database...

Randinformatie

Wanneer je de code-tag gebruikt, wordt je code automatisch ingesprongen ;).
Met vriendelijke groeten,
Martijn Wouters
  • Pagina
  • 1 van 1
  • RSS
  • Eerste ongelezen reactie
  • Plaats een reactie
  • Abonneer mij
  • Onderwerp sluiten