Toon posts:

[ASP] complexe repeat region werkt niet goed

Pagina: 1
Acties:

Verwijderd

Topicstarter
Probleem is dat ik in een repeat region (welke goed werkt) commentaar wil tonen als het probleemnummerb overeenkomt met het nummer in de commentaar tabel. DWZ toon commentaar wanneer er commentaar is dat op dit probleem slaat. Bovendien moet het meest recente commentaar getoond worden.
Wat er nu gebeurd is dat hij het meest recente commentaar toont niet per probleem maar voor het hele probleemoverzicht. Dwz ik zie maar 1 keer commetaar voor 1 probleem terwijl er veel meer problemen met commentaar zijn.

Hoop dat dit duidelijk is: hulp is zeer welkom.

Hallo!

OK ik probeer het duidelijker neer te zetten, mijn excuses!

<%
While ((Repeat1__numRows <> 0) AND (NOT RSproboverzicht.EOF))


=(RSproboverzicht.Collect.Item("Probleemnummer").Value)
=(RSproboverzicht.Collect.Item("Melddatum").Value)
=(RSproboverzicht.Collect.Item("Probleem").Value)
=(RSproboverzicht.Collect.Item("Statusomschrijving").Value)

If (RScommentaar.Collect.Item("CommentaarProbleem").Value) <> "" And(RSproboverzicht.Collect.Item("Probleemnummer").Value) =(RScommentaar.Collect.Item("CommentaarProbleem").Value) Then Response.Write(RScommentaar.Collect.Item("Commentaaroms").Value)

If (RScommentaar.Collect.Item("CommentaarDatum").Value) <> "" And (RSproboverzicht.Collect.Item("Probleemnummer").Value) =(RScommentaar.Collect.Item("CommentaarProbleem").Value) Then Response.Write(RScommentaar.Collect.Item("CommentaarDatum").Value)

Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
RSproboverzicht.MoveNext()
Wend
%>

Ik heb de td en tr weggelaten, maakt niet uit dacht ik zo. Graag nogmaals reactie!

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13-09 12:14

Crazy D

I think we should take a look.

Hmmm je code is enigzins rot leesbaar :P
Paar tips:
1. code inspringen
2. gebruik code blokken
code:
1
 en
(zonder spatie :P) maakt het sowieso al wat beter leesbaar hier
3. Gebruik de hidden recordset.Collect("veldnaam") om een waarde uit te lezen (uit verschillende tests is gebleken dat dat sneller is dan recordset.Fields("veld") en de andere varianten) (en leest korter :))
4. wissel niet zo vaak tussen html en vbscript (die paar td-tjes kun je dan "beter" met Response.Write schrijven)

Als je je code wat duidelijker wilt neerzetten wil ik er met alle plezier naar kijken, maar ik vind het nu een beetje rot leesbaar.

Exact expert nodig?


Verwijderd

Topicstarter
Ik heb start topic geprobeerd duidelijker leesbaar te maken, zie top.

Graag reactie, bvd!

Verwijderd

Wat is het probleem?

Verwijderd

Topicstarter
Probleem is dat ik in een repeat region (welke goed werkt) commentaar wil tonen als het probleemnummerb overeenkomt met het nummer in de commentaar tabel. DWZ toon commentaar wanneer er commentaar is dat op dit probleem slaat. Bovendien moet het meest recente commentaar getoond worden.

Wat er nu gebeurd is dat hij het meest recente commentaar toont niet per probleem maar voor het hele probleemoverzicht. Dwz ik zie maar 1 keer commetaar voor 1 probleem terwijl er veel meer problemen met commentaar zijn.

Hoop dat dit duidelijk is: hulp is zeer welkom.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13-09 12:14

Crazy D

I think we should take a look.

RScommentaar.Collect.Item("CommentaarProbleem").Value
kun je van maken:
RScommentaar.Collect("CommentaarProbleem")

Maar buiten dat...
Misschien zie ik het over het hoofd, maar je doet verder niks met rscommentaar. D.w.z., je vergelijkt er wat mee, maar geen movenext ed. Dus zal ie altijd op het 1e record blijven staan.

Gevoelsmatig zegt iets in mij dat er, mits je database goed is, dit in 1 query zou moeten kunnen, maar da's gevoelsmatig.

Eh dit bedoelde ik met code opmaak: (zo ongeveer dan, dit is niet echt een code editor te noemen :P)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
While ((Repeat1__numRows <> 0) AND (NOT RSproboverzicht.EOF))
    =(RSproboverzicht.Collect("Probleemnummer"))
    =(RSproboverzicht.Collect("Melddatum"))
    =(RSproboverzicht.Collect("Probleem"))
    =(RSproboverzicht.Collect("Statusomschrijving"))

    If (RScommentaar.Collect("CommentaarProbleem")) <> "" And
     (RSproboverzicht.Collect("Probleemnummer")) = (RScommentaar.Collect("CommentaarProbleem")) Then 
      Response.Write(RScommentaar.Collect("Commentaaroms"))
    End If

    If (RScommentaar.Collect("CommentaarDatum")) <> "" And 
     (RSproboverzicht.Collect("Probleemnummer")) = (RScommentaar.Collect("CommentaarProbleem")) Then 
      Response.Write (RScommentaar.Collect("CommentaarDatum"))
    End If

    Repeat1__index=Repeat1__index+1
    Repeat1__numRows=Repeat1__numRows-1
    
    RSproboverzicht.MoveNext()
Wend

Exact expert nodig?


Verwijderd

Topicstarter
Ik leer elke dag meer. Ik heb de fout gemaakt eea met Ultradev te maken, die maakt eea zeer omslachtig, volgende code weer met notepad!

Even to the point: kun je repeat regions nesten? Dat is toch waar je op doelt met betrekking tot RScommentaar?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13-09 12:14

Crazy D

I think we should take a look.

Op donderdag 21 februari 2002 12:15 schreef PartyPeter het volgende:
Ik leer elke dag meer. Ik heb de fout gemaakt eea met Ultradev te maken, die maakt eea zeer omslachtig, volgende code weer met notepad!
Ik werk zelf met Visual Interdev (onderdeel van Visual Studio), en dan alleen de code editor. Leuke kleurtjes, en intellisence ("dropdown lijstje met de mogelijkheden"), moet je net zoveel code kloppen als met notepad, alleen maken de kleurtjes en intellisence het 1 en ander net iets makkelijker :)
Even to the point: kun je repeat regions nesten? Dat is toch waar je op doelt met betrekking tot RScommentaar?
Je kan (zo goed als) onbeperkt loopjes binnen een loop plaatsen :)
Dus op zich zou je, is alleen niet zo heel snel, per probleem de commentaren kunnen queryen of er commentaar bij dat probleem is, en zo ja, de nieuwste ophalen.
Enigste waar je uiteraard voor moet opletten is dat je niet dezelfde recordset gebruikt (lijkt "duh" maar je zal niet de 1e zijn die dat wel doet ;))

Maar wat ik vermoed (tenminste, dat is bij mijn databasejes meestal het geval :P) zou je zoiets met 1 query (en dus 1 recordset) kunnen oplossen door een join, Null (of een lege string) als er geen commentaar is, en als ie niet null is (of als de string niet leeg is) het commentaar tonen. En als je een beetje mazzel hebt kun je met de gebruikte database subqueries gebruiken zodat je meteen, als er commentaar is, alleen het nieuwste commentaar ophaalt.

Exact expert nodig?


Verwijderd

Topicstarter
Op donderdag 21 februari 2002 13:42 schreef Crazy_D het volgende:

[..]

Maar wat ik vermoed (tenminste, dat is bij mijn databasejes meestal het geval :P) zou je zoiets met 1 query (en dus 1 recordset) kunnen oplossen door een join, Null (of een lege string) als er geen commentaar is, en als ie niet null is (of als de string niet leeg is) het commentaar tonen. En als je een beetje mazzel hebt kun je met de gebruikte database subqueries gebruiken zodat je meteen, als er commentaar is, alleen het nieuwste commentaar ophaalt.
Ik zal via een loop binnen een loop eea proberen op te lossen aangezien mijn SQL cursus pas binnenkort is! ;)

Bedankt. Ik denk dat ik er pas (over)morgen aan toe kom, maar ik laat wel even weten of eea gelukt is. Indien er anderen zijn met tips: altijd welkom :9

Verwijderd

Topicstarter
Helaas gaat het telkens niet goed!!
Het nesten van loops gaat fout. Ik krijg het idee dat dit te maken heeft met Ultradev...In Coldfusion lukt eea wel , maar ik wil het werkend krijgen in ASP.

Anybody?

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Op maandag 04 maart 2002 16:01 schreef PartyPeter het volgende:
Helaas gaat het telkens niet goed!!
Het nesten van loops gaat fout. Ik krijg het idee dat dit te maken heeft met Ultradev...In Coldfusion lukt eea wel , maar ik wil het werkend krijgen in ASP.

Anybody?
|:( leer gewoon op normale manier ontwikkelen, scripten doe je niet via third party software. Hoe kan je nou debuggen als je niet eens weet wat er staat.

Verwijderd

Topicstarter
Mee eens, ik hoopte efficiency te behalen , maar dat blijkt dus van niet. Ik ben nu met de hand bezig maar geen succes. Wie maakt me los?
Pagina: 1