/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
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

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408921
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste