|
| Visning af valgte kategorier Fra : Thrane |
Dato : 13-04-07 19:00 |
|
Hej gruppe...
Jeg er stødt et lille problem, som jeg håber en snu og venlig sjæl kan
hjælpe med.
Jeg har denne stump kode:
RS.LockType = 1
RS.CursorType = 0
RS.Open SQL, MyConn
WHILE NOT RS.EOF
blCATE_FOUND = ""
FOR I = 0 To Ubound(arrSEL_CATE)
IF arrSEL_CATE(I) = trim(RS("ID")) THEN
blCATE_FOUND = " valgt"
END IF
NEXT
CATE_STR = CATE_STR & "" & trim(RS("fldNAME")) & "" &
blCATE_FOUND & "<br>"
RS.MoveNext
WEND
RS.Close
Som gør at der listes en bunke kategorier oprettet i mit system.
I listen vil der ud for de kategorier der er valgt blive skrevet "valgt",
men mit ønske er at der faktisk kun vises dem der er valgt og ikke
samtlige...
Nogle foreslag?
--
Thrane
| |
Thrane (13-04-2007)
| Kommentar Fra : Thrane |
Dato : 13-04-07 20:12 |
|
"Thrane" <noreply@noreply.dk> wrote in message
news:461fc50a$0$8701$edfadb0f@dread14.news.tele.dk...
> Hej gruppe...
>
> Jeg er stødt et lille problem, som jeg håber en snu og venlig sjæl kan
> hjælpe med.
>
> Jeg har denne stump kode:
>
> RS.LockType = 1
> RS.CursorType = 0
> RS.Open SQL, MyConn
> WHILE NOT RS.EOF
> blCATE_FOUND = ""
> FOR I = 0 To Ubound(arrSEL_CATE)
> IF arrSEL_CATE(I) = trim(RS("ID")) THEN
> blCATE_FOUND = " valgt"
> END IF
> NEXT
> CATE_STR = CATE_STR & "" & trim(RS("fldNAME")) & "" &
> blCATE_FOUND & "<br>"
> RS.MoveNext
> WEND
> RS.Close
>
> Som gør at der listes en bunke kategorier oprettet i mit system.
> I listen vil der ud for de kategorier der er valgt blive skrevet "valgt",
> men mit ønske er at der faktisk kun vises dem der er valgt og ikke
> samtlige...
>
> Nogle foreslag?
>
> --
> Thrane
Jeg fik rodet mig frem til et brugeligt resultat...
| |
Jørn Andersen (13-04-2007)
| Kommentar Fra : Jørn Andersen |
Dato : 13-04-07 20:33 |
|
On Fri, 13 Apr 2007 21:12:00 +0200, "Thrane" <noreply@noreply.dk> wrote:
>Jeg fik rodet mig frem til et brugeligt resultat...
Hvordan?
Af hensyn til folk, der evt. har spekuleret over dit problem, er det god
tone at give en tilbagemelding om løsning. Så kan andre bruge det, næste
gang de støder på et lignende problem.
Desuden er det ofte en fordel for én selv at formulere løsningen - det
bliver ofte klarere for én selv, *hvad* problemet mere præcist var.
Mvh. Jørn
--
Jørn Andersen,
Brønshøj
| |
Thrane (14-04-2007)
| Kommentar Fra : Thrane |
Dato : 14-04-07 06:48 |
|
"Jørn Andersen" <jorn@jorna.dk> wrote in message
news:5hmv131v7g7thoqle858is3bhhm1gu99l8@4ax.com...
>
> Hvordan?
>
> Af hensyn til folk, der evt. har spekuleret over dit problem, er det god
> tone at give en tilbagemelding om løsning. Så kan andre bruge det, næste
> gang de støder på et lignende problem.
>
> Desuden er det ofte en fordel for én selv at formulere løsningen - det
> bliver ofte klarere for én selv, *hvad* problemet mere præcist var.
>
>
> Mvh. Jørn
Du har ret - beklager...
Jeg byttede lidt rundt på tingene.
Jeg er slet ikke en haj til her, så der er sikkert en bedre måde, men da det
kun er noget der skal bruges til visning for3-4 personer, er det fint.
<% WHILE NOT RS.EOF
FOR I = 0 To Ubound(arrSEL_CATE)
IF arrSEL_CATE(I) = trim(RS("ID")) THEN %>
<%= trim(RS("fldNAME")) %> ID:<% =
trim(RS("ID")) %>
<%
END IF
NEXT
RS.MoveNext
WEND
RS.Close
%>
--
Thrane
| |
Jørn Andersen (13-04-2007)
| Kommentar Fra : Jørn Andersen |
Dato : 13-04-07 20:06 |
|
On Fri, 13 Apr 2007 19:59:33 +0200, "Thrane" <noreply@noreply.dk> wrote:
>Jeg har denne stump kode:
>
> RS.LockType = 1
> RS.CursorType = 0
> RS.Open SQL, MyConn
> WHILE NOT RS.EOF
> blCATE_FOUND = ""
> FOR I = 0 To Ubound(arrSEL_CATE)
> IF arrSEL_CATE(I) = trim(RS("ID")) THEN
> blCATE_FOUND = " valgt"
> END IF
> NEXT
> CATE_STR = CATE_STR & "" & trim(RS("fldNAME")) & "" &
>blCATE_FOUND & "<br>"
> RS.MoveNext
> WEND
> RS.Close
>
>Som gør at der listes en bunke kategorier oprettet i mit system.
>I listen vil der ud for de kategorier der er valgt blive skrevet "valgt",
>men mit ønske er at der faktisk kun vises dem der er valgt og ikke
>samtlige...
Så skal du bare have din opsummering op i If'en:
WHILE NOT RS.EOF
FOR I = 0 To Ubound(arrSEL_CATE)
IF arrSEL_CATE(I) = trim(RS("ID")) THEN
CATE_STR = CATE_STR & trim(RS("fldNAME"))
Exit For
END IF
NEXT
RS.MoveNext
WEND
Jeg har tilføjet en Exit For.
Hvis jeg har forstået det rigtigt, så gennemløber du et array for at
checke, om den værdi, du har i recordsettet også er i dit array.
Men når den først er fundet, så er der ingen grund til at checke resten
af array'et - så din loop kommer til at køre hurtigere ved at tilføje
Exit For, når den er fundet.
Noget andet er, at det er en lidt ineffektiv måde, du har valgt.
Det vil være formentlig være langt mere effektivt at lave udtrækket i
selve databasen.
Nu ved jeg ikke, hvordan dit array er dannet, men en mulighed er:
strSoeg = join(arrSel_Cate, """, """)
og
strSql = "SELECT ... WHERE MitFelt IN (""" & strSoeg & """)"
- hvor MitFelt er et tekstfelt.
På den måde får du databasen til at vælge, hvilke poster, der er valgt -
hvilket den er langt bedre til end et array - og du får kun sendt de
relevante poster tilbage. De kan så bare udskrives uden If og For-Next.
Hvis dit array i forvejen er dannet ud fra en tekststreng, som
indeholder de valgte, slipper du helt for omvejen omkring et array.
Good luck!
--
Jørn Andersen,
Brønshøj
| |
Thrane (14-04-2007)
| Kommentar Fra : Thrane |
Dato : 14-04-07 06:50 |
|
"Jørn Andersen" <jorn@jorna.dk> wrote in message
news:ptiv139r1alhp6sbitmthadgn4j3h02q5t@4ax.com...
>
> Så skal du bare have din opsummering op i If'en:
> WHILE NOT RS.EOF
> FOR I = 0 To Ubound(arrSEL_CATE)
> IF arrSEL_CATE(I) = trim(RS("ID")) THEN
> CATE_STR = CATE_STR & trim(RS("fldNAME"))
> Exit For
> END IF
> NEXT
> RS.MoveNext
> WEND
>
> Jeg har tilføjet en Exit For.
> Hvis jeg har forstået det rigtigt, så gennemløber du et array for at
> checke, om den værdi, du har i recordsettet også er i dit array.
> Men når den først er fundet, så er der ingen grund til at checke resten
> af array'et - så din loop kommer til at køre hurtigere ved at tilføje
> Exit For, når den er fundet.
>
> Noget andet er, at det er en lidt ineffektiv måde, du har valgt.
> Det vil være formentlig være langt mere effektivt at lave udtrækket i
> selve databasen.
> Nu ved jeg ikke, hvordan dit array er dannet, men en mulighed er:
> strSoeg = join(arrSel_Cate, """, """)
> og
> strSql = "SELECT ... WHERE MitFelt IN (""" & strSoeg & """)"
> - hvor MitFelt er et tekstfelt.
>
> På den måde får du databasen til at vælge, hvilke poster, der er valgt -
> hvilket den er langt bedre til end et array - og du får kun sendt de
> relevante poster tilbage. De kan så bare udskrives uden If og For-Next.
>
> Hvis dit array i forvejen er dannet ud fra en tekststreng, som
> indeholder de valgte, slipper du helt for omvejen omkring et array.
>
>
> Good luck!
>
> --
> Jørn Andersen,
> Brønshøj
Det er vist det samme jeg kom frem til, men jeg kan vel ikke benytte "Exit
For", da der kan være valgt flere kategorier?
--
Thrane
| |
Jørn Andersen (14-04-2007)
| Kommentar Fra : Jørn Andersen |
Dato : 14-04-07 14:10 |
|
On Sat, 14 Apr 2007 07:49:44 +0200, "Thrane" <noreply@noreply.dk> wrote:
>
>"Jørn Andersen" <jorn@jorna.dk> wrote in message
>news:ptiv139r1alhp6sbitmthadgn4j3h02q5t@4ax.com...
>
>>
>> Så skal du bare have din opsummering op i If'en:
>> WHILE NOT RS.EOF
>> FOR I = 0 To Ubound(arrSEL_CATE)
>> IF arrSEL_CATE(I) = trim(RS("ID")) THEN
>> CATE_STR = CATE_STR & trim(RS("fldNAME"))
>> Exit For
>> END IF
>> NEXT
>> RS.MoveNext
>> WEND
>>
>> Jeg har tilføjet en Exit For.
<snip>
>Det er vist det samme jeg kom frem til
Det samme som ovenstående eller at lade databasen gøre arbejdet?
>men jeg kan vel ikke benytte "Exit
>For", da der kan være valgt flere kategorier?
Jo, men du skal jo kun bruge din If til at finde ud af, om den
pågældende kategori er til stede i dit array.
Hvis den er til stede, blive rs("fld_name") udskrevet - og der er ingen
grund til at køre videre i For-Next-loopen.
Det er jo ikke While-loopen, der bliver "Exit'ed". Når du Exit'er
For-Next-loopen, går den videre til næste record i recordsettet.
Good luck!
--
Jørn Andersen,
Brønshøj
| |
|
|