/ 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
Lige eller ulige antal records ?
Fra : Jakob Munck


Dato : 18-06-03 12:08

Jeg udvælger alle records fra en tabel sådan:

SQL = "SELECT * FROM tbKunstnere"
set RS = Conn.execute(SQL)

Men jeg har brug for at vide, om antallet af records er et lige eller ulige
tal, og det kan jeg måske gøre ved at tælle antallet af records således:

SQL = "SELECT COUNT(*) AS antal_records FROM tbKunstnere"
Set RS = Conn.Execute(SQL)

antal_records = RS("antal_records")


Men hvordan finder jeg ud af om dette tal er lige eller ulige?

Kan det hele ikke gøres mere enkelt, uden at lave 2 recordsets?

v.h.
Jakob Munck




 
 
Jakob Munck (18-06-2003)
Kommentar
Fra : Jakob Munck


Dato : 18-06-03 12:28

man kan finde ud af om tallet er lige eller ulige sådan:

If antal_kunstnere/2 = Int(antal_kunstnere/2) Then
tal = "Lige"
else
tal = "Ulige"
end if

Men kan det hele ikke gøres mere enkelt, med kun et recordset?

v.h.
Jakob



Jens Gyldenkærne Cla~ (18-06-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-06-03 12:32

Jakob Munck skrev:

> Men jeg har brug for at vide, om antallet af records er et
> lige eller ulige tal, og det kan jeg måske gøre ved at tælle
> antallet af records således:

[select count...]

Det er en god metode.

> Men hvordan finder jeg ud af om dette tal er lige eller ulige?

Her er en funktion der undersøger om et tal er lige:

function erLige(tal)
   erLige = Cbool((tal mod 2) = 0)
end function

Man bruger modulus 2 - dvs. rest af division med to - til at
undersøge om et tal er lige eller ulige.


> Kan det hele ikke gøres mere enkelt, uden at lave 2
> recordsets?

Du kan evt. benytte en recordsettype der understøtter recordcount-
egenskaben (uden først at skulle gennemløbe alle posterne). Men der
er ikke noget galt i at benytte to postsæt - bare de lukkes så
snart du er færdig med dem (det postsæt som henter antallet af
poster kan lukkes umiddelbart efter at værdien er lagt i en
variabel).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jakob Andersen (18-06-2003)
Kommentar
Fra : Jakob Andersen


Dato : 18-06-03 20:14

Jens Gyldenkærne Clausen skrev:
> Her er en funktion der undersøger om et tal er lige:
>
> function erLige(tal)
>    erLige = Cbool((tal mod 2) = 0)
> end function
>
> Man bruger modulus 2 - dvs. rest af division med to - til at
> undersøge om et tal er lige eller ulige.

Nu når der er alligevel er gået "hellighed" i tråden, ville det hvis man
tænker lidt mere low-level nok være performancemæssig bedre at bruge en
binær operator i ovenstående udtryk altså:

Function erlige(tal)
erlige = Not(CBool(tal AND 1))
End Function

Dog tror jeg ikke at det i et sprog som ASP har en betydning, men jeg
skulle jo lige være hellig :)

--
Jakob Andersen

Jesper Stocholm (18-06-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 18-06-03 20:25

Jakob Andersen wrote :

> Jens Gyldenkærne Clausen skrev:
>> Her er en funktion der undersøger om et tal er lige:
>>
>> function erLige(tal)
>> erLige = Cbool((tal mod 2) = 0)
>> end function
>>
>> Man bruger modulus 2 - dvs. rest af division med to - til at
>> undersøge om et tal er lige eller ulige.
>
> Nu når der er alligevel er gået "hellighed" i tråden, ville det hvis
> man tænker lidt mere low-level nok være performancemæssig bedre at
> bruge en binær operator i ovenstående udtryk altså:
>
> Function erlige(tal)
> erlige = Not(CBool(tal AND 1))
> End Function
>
> Dog tror jeg ikke at det i et sprog som ASP har en betydning, men jeg
> skulle jo lige være hellig :)

Det er da i orden - binærer operatorer er for seje !



PS: Hvad er der blevet af din signatur ?

--
Jesper Stocholm
* asp-faq.dk er den officielle OSS for nyhedsgruppen for ASP-udviklere. *
* Vi mangler nu en ansvarlig for vedligeholdelse af HTML-brugerfladen, *
* så hvis du kunne tænke dig at hjælpe os, så kig på www.asp-faq.dk/job *

Peter Lykkegaard (18-06-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 18-06-03 20:26


"Jakob Andersen" <jakob@effectus.dk> wrote in message
news:slrnbf1ef1.o5s.jakob@dolomit.but.auc.dk...

> Function erlige(tal)
> erlige = Not(CBool(tal AND 1))
> End Function

Hmm, jeg ville nu stadig indlægge et check for numeric/alphanumeric og
mulighed for overflow...

Hvad er egentlig "hurtigst"
22222 and 1
Eller
22222 mod 2

- eller er det af rent akademisk interesse?

Peter Lykkegaard



Jakob Andersen (18-06-2003)
Kommentar
Fra : Jakob Andersen


Dato : 18-06-03 21:43

Peter Lykkegaard skrev:
> Hvad er egentlig "hurtigst"
> 22222 and 1
> Eller
> 22222 mod 2
>
> - eller er det af rent akademisk interesse?

Det var nok mest akademisk interresse, men en hurtig lille test(i C) viser at
der er en meget lille afvigelse:

Mod
0m0.020s

And
0m0.010s

--
Jakob Andersen
*Nu med signatur*
http://www.asp-faq.dk/job/ - Er du vores HTML mand?

Peter Lykkegaard (19-06-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 19-06-03 06:27


"Jakob Andersen" <jakob@effectus.dk> wrote in message
news:slrnbf1jn8.o5s.jakob@dolomit.but.auc.dk...
> Peter Lykkegaard skrev:
> > Hvad er egentlig "hurtigst"
> > 22222 and 1
> > Eller
> > 22222 mod 2
> >
> > - eller er det af rent akademisk interesse?
>
> Det var nok mest akademisk interresse, men en hurtig lille test(i C) viser
at
> der er en meget lille afvigelse:
>
> Mod
> 0m0.020s
>
> And
> 0m0.010s
>
Tænkte nok at "and" var hurtigst
Det er da ikke uinteressant i en løkke

mvh/Peter Lykkegaard



Jens Gyldenkærne Cla~ (19-06-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-06-03 12:01

Jakob Andersen skrev:

> Function erlige(tal)
> erlige = Not(CBool(tal AND 1))
> End Function

[lyden af hoved (str. 62) der rammer skrivebord]

Jeg forsøgte faktisk at lave ovenstående udgave - men havde lige
glemt at det er 1 der skal "and-es" med (mine forsøg med tal AND 2
gav nogle uheldige resultater).

> men jeg skulle jo lige være hellig :)

Du skal være velkommen.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jesper Stocholm (18-06-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 18-06-03 12:51

Jakob Munck wrote :

> Men jeg har brug for at vide, om antallet af records er et lige eller
> ulige tal, og det kan jeg måske gøre ved at tælle antallet af records
> således:
> SQL = "SELECT COUNT(*) AS antal_records FROM tbKunstnere"
> Set RS = Conn.Execute(SQL)
> antal_records = RS("antal_records")
> Men hvordan finder jeg ud af om dette tal er lige eller ulige?
>
> Kan det hele ikke gøres mere enkelt, uden at lave 2 recordsets?

Måske ... hvorfor har du behov for at kunne se om tallet af lige eller
ulige ? Har det noget at gøre med udskrivning af data i en tabel eller
lignende ?

--
Jesper Stocholm
* asp-faq.dk er den officielle OSS for nyhedsgruppen for ASP-udviklere. *
* Vi mangler nu en ansvarlig for vedligeholdelse af HTML-brugerfladen, *
* så hvis du kunne tænke dig at hjælpe os, så kig på www.asp-faq.dk/job *

Jakob Munck (18-06-2003)
Kommentar
Fra : Jakob Munck


Dato : 18-06-03 13:06

Tak for svarene.

>
> Måske ... hvorfor har du behov for at kunne se om tallet af lige eller
> ulige ? Har det noget at gøre med udskrivning af data i en tabel eller
> lignende ?
>

Det har jeg fordi at jeg skal udskrive en tabel på forsiden af www.art4you
og hvis der er et ulige antal kunstnere, så bliver der et tomt felt nederst
til højre. Det vil jeg udfylde med et eller andet.

Derfor skal jeg vide, om antallet af kunstnere er lige eller ulige.

v.h.
Jakob



Jesper Stocholm (18-06-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 18-06-03 13:09

Jakob Munck wrote :

>> Måske ... hvorfor har du behov for at kunne se om tallet af lige
>> eller ulige ? Har det noget at gøre med udskrivning af data i en
>> tabel eller lignende ?
>>
> Det har jeg fordi at jeg skal udskrive en tabel på forsiden af
> www.art4you og hvis der er et ulige antal kunstnere, så bliver der et
> tomt felt nederst til højre. Det vil jeg udfylde med et eller andet.

Ok - det anede mig nok.

En anden måde at løse det på er at have en løbende tæller imens du løber
igennem dit recordset. Når du så er færdig med at løbe igennem dine data,
kan du teste på denne værdi om den er ulige eller lige. Derefter kan du så
enten lukke tabellen normalt eller tage hånd om det ulige antal.

--
Jesper Stocholm
* asp-faq.dk er den officielle OSS for nyhedsgruppen for ASP-udviklere. *
* Vi mangler nu en ansvarlig for vedligeholdelse af HTML-brugerfladen, *
* så hvis du kunne tænke dig at hjælpe os, så kig på www.asp-faq.dk/job *

Jakob Munck (18-06-2003)
Kommentar
Fra : Jakob Munck


Dato : 18-06-03 13:42

> En anden måde at løse det på er at have en løbende tæller imens du løber
> igennem dit recordset. Når du så er færdig med at løbe igennem dine data,
> kan du teste på denne værdi om den er ulige eller lige. Derefter kan du så
> enten lukke tabellen normalt eller tage hånd om det ulige antal.
>

Det er netop den metode jeg har valgt. Tak for det.

v.h.
Jakob



Jens Gyldenkærne Cla~ (18-06-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-06-03 13:43

Jakob Munck skrev:

> Det har jeg fordi at jeg skal udskrive en tabel på forsiden af
> www.art4you og hvis der er et ulige antal kunstnere, så bliver
> der et tomt felt nederst til højre. Det vil jeg udfylde med et
> eller andet.

Med hvilket formål? Hvis du har kanter på dine celler, vil man
kunne se at der mangler én - ellers ikke. Og HTML-standarden kræver
ikke at der er samme antal celler (fraregnet evt. colspan-
parametre) i en række. Følgende tabel er fx helt legal:

<table>
<tr>
   <td>nr. 1</td>
   <td>nr. 2</td>
</tr>
<tr>
   <td>nr. 3</td>
</tr>
</table>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jakob Munck (18-06-2003)
Kommentar
Fra : Jakob Munck


Dato : 18-06-03 16:18

> > Det har jeg fordi at jeg skal udskrive en tabel på forsiden af
> > www.art4you og hvis der er et ulige antal kunstnere, så bliver
> > der et tomt felt nederst til højre. Det vil jeg udfylde med et
> > eller andet.
>
> Med hvilket formål? Hvis du har kanter på dine celler, vil man
> kunne se at der mangler én - ellers ikke. Og HTML-standarden kræver
> ikke at der er samme antal celler (fraregnet evt. colspan-
> parametre) i en række. Følgende tabel er fx helt legal:
>
> <table>
> <tr>
> <td>nr. 1</td>
> <td>nr. 2</td>
> </tr>
> <tr>
> <td>nr. 3</td>
> </tr>
> </table>

ja, ok. Men hvis der mangler noget i det sidste felt, skal jeg jo lave et
eller andet til at fylde det ud, uanset om jeg så laver en særlig celle til
det eller ej. Derfor skal jeg vide, om antallet af records er lige eller
ulige.

v.h.
Jakob



Jens Gyldenkærne Cla~ (18-06-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-06-03 13:56

Jakob Munck skrev:

>> En anden måde at løse det på er at have en løbende tæller
>> imens du løber igennem dit recordset.

> Det er netop den metode jeg har valgt. Tak for det.

Nu skal jeg ikke spille hellig - jeg har selv brugt metoden flere
gange - men det frarådes (af hensyn til performance) at bruge en
variabeltæller i artiklen her:
<http://www.4guysfromrolla.com/webtech/120898-1.shtml>.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jesper Stocholm (18-06-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 18-06-03 14:21

Jens Gyldenkærne Clausen wrote :

> Jakob Munck skrev:
>
>>> En anden måde at løse det på er at have en løbende tæller
>>> imens du løber igennem dit recordset.
>
>> Det er netop den metode jeg har valgt. Tak for det.
>
> Nu skal jeg ikke spille hellig

Det gør såmænd ikke noget - det er jo sådan vi allesammen bliver bedre.

> - jeg har selv brugt metoden flere
> gange - men det frarådes (af hensyn til performance) at bruge en
> variabeltæller i artiklen her:
> <http://www.4guysfromrolla.com/webtech/120898-1.shtml>.

Det er søreme rigtigt. Man kan så vælge andre måder at løbe igennem sit
recordset på end en while-loop - det kunne jo også være i en FOR-løkke.
Her vil man så til sidst have adgang til den løbende variabel - uden at
addere undervejs.

--
Jesper Stocholm
* asp-faq.dk er den officielle OSS for nyhedsgruppen for ASP-udviklere. *
* Vi mangler nu en ansvarlig for vedligeholdelse af HTML-brugerfladen, *
* så hvis du kunne tænke dig at hjælpe os, så kig på www.asp-faq.dk/job *

Peter Lykkegaard (18-06-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 18-06-03 15:47


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns939E97F2DD29Ajcdmfdk@gyrosmod.cybercity.dk...
> Jakob Munck skrev:
>
> >> En anden måde at løse det på er at have en løbende tæller
> >> imens du løber igennem dit recordset.
>
> > Det er netop den metode jeg har valgt. Tak for det.
>
> Nu skal jeg ikke spille hellig - jeg har selv brugt metoden flere
> gange - men det frarådes (af hensyn til performance) at bruge en
> variabeltæller i artiklen her:
> <http://www.4guysfromrolla.com/webtech/120898-1.shtml>.

Øhh, har du ikke misforstået artiklen?
Den siger at du _ikke_ skal lave en løkke med det foremål at tælle antallet
af poster
Men der er ikke noget i vejen for at have en tæller mens du laver andet
arbejde med dit recordset

Det er jo Movenext der kan være problemet og ikke tælleren i sig selv
Btw så hænger artiklen lidt i vandskorpen da det ser ud til at man
forudsætter at der bruges en serverside cursor
Resultatet ser jo anderledes ud hvis man bruger et firehose/disconnected
recordset
Her laves ikke roundtrips til serveren

Just my two cents

mvh/Peter Lykkegaard



Jørn Andersen (18-06-2003)
Kommentar
Fra : Jørn Andersen


Dato : 18-06-03 17:55

On Wed, 18 Jun 2003 16:47:29 +0200, "Peter Lykkegaard"
<polonline@hot.mail.com> wrote:

>"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
>news:Xns939E97F2DD29Ajcdmfdk@gyrosmod.cybercity.dk...
>> Nu skal jeg ikke spille hellig - jeg har selv brugt metoden flere
>> gange - men det frarådes (af hensyn til performance) at bruge en
>> variabeltæller i artiklen her:
>> <http://www.4guysfromrolla.com/webtech/120898-1.shtml>.
>
>Øhh, har du ikke misforstået artiklen?
>Den siger at du _ikke_ skal lave en løkke med det foremål at tælle antallet
>af poster
>Men der er ikke noget i vejen for at have en tæller mens du laver andet
>arbejde med dit recordset

Sådan forstår jeg det også.

I øvrigt er en anden metode at bruge
arrResult = rs.getrows
så belastes datbasen minimalt, og man kan tælle med
intAntal = UBound(arrResult) + 1
(UBound er 0-nummereret)

>Just my two cents
Ditto

--
Jørn Andersen,
Brønshøj

Peter Lykkegaard (18-06-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 18-06-03 18:51


"Jørn Andersen" <jorn@jorna.dk> wrote in message
news:u261fvofvi25l57fruuant95a1h0ee1bcv@4ax.com...

> I øvrigt er en anden metode at bruge
> arrResult = rs.getrows
> så belastes datbasen minimalt,

Ahh ja den gode gamle getRows
Men har man et disconnected recordset så er der vel ingen forskel mht
belastning af databasen?
NB! - Med GetRows har man mulighed for at traverse frem og tilbage på et
firehose recordset - ikke dårligt

Btw man kan jo bruge ADO til at konvertere recordsettet til XML...
Der er mange muligheder

mvh/Peter Lykkegaard



Jens Gyldenkærne Cla~ (19-06-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-06-03 09:41

Peter Lykkegaard skrev:

>> <http://www.4guysfromrolla.com/webtech/120898-1.shtml>.

> Øhh, har du ikke misforstået artiklen?

Det tyder det på.

> Den siger at du _ikke_ skal lave en løkke med det foremål at
> tælle antallet af poster

Den havde jeg også fanget.

> Men der er ikke noget i vejen for at have en tæller mens du
> laver andet arbejde med dit recordset

Nej - og her fejllæste jeg artiklen.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jesper Stocholm (19-06-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 19-06-03 09:59

Jens Gyldenkærne Clausen wrote :

> Peter Lykkegaard skrev:

>> Men der er ikke noget i vejen for at have en tæller mens du
>> laver andet arbejde med dit recordset
>
> Nej - og her fejllæste jeg artiklen.

Men derfor er det jo fint at have øje for hvor man kan forbedre sit
design - hvilket jo i bund og grund er hvad der skiller fårene fra
bukkene. Man kan komme grueligt galt afsted hvis man ikke tænker sig om.
Jeg implementerede engang en digital signaturløsning, og her havde vi
lavet vores initielle demo på en sådan måde, at vi i bund og grund lagde
to heltal sammen på hver 100 cifre ved først af udregne det ene som

for i = 0 to 1^100
next

for j = 0 to 1^100
next

sum = i+j

(vi regnede senere ud at hvis vi ikke havde ændret designet, så ville
universet have trukket sig sammen og eksploderet op til flere gange inden
vi var kommet videre).



--
Jesper Stocholm
* asp-faq.dk er den officielle OSS for nyhedsgruppen for ASP-udviklere. *
* Vi mangler nu en ansvarlig for vedligeholdelse af HTML-brugerfladen, *
* så hvis du kunne tænke dig at hjælpe os, så kig på www.asp-faq.dk/job *

Jørn Andersen (19-06-2003)
Kommentar
Fra : Jørn Andersen


Dato : 19-06-03 15:39

On Thu, 19 Jun 2003 08:59:22 +0000 (UTC), Jesper Stocholm
<jespers@stocholm.invalid> wrote:

>for i = 0 to 1^100
>next
>
>for j = 0 to 1^100
>next
>
>sum = i+j
>
>(vi regnede senere ud at hvis vi ikke havde ændret designet, så ville
>universet have trukket sig sammen og eksploderet op til flere gange inden
>vi var kommet videre).

Skal det ikke være 2^100 - ?
Det andet kan vel ikke tage så lang tid ...

Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Jesper Stocholm (19-06-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 19-06-03 16:31

Jørn Andersen wrote :

> On Thu, 19 Jun 2003 08:59:22 +0000 (UTC), Jesper Stocholm
> <jespers@stocholm.invalid> wrote:
>
>>for i = 0 to 1^100
>>next
>>
>>for j = 0 to 1^100
>>next
>>
>>sum = i+j
>>
>>(vi regnede senere ud at hvis vi ikke havde ændret designet, så ville
>>universet have trukket sig sammen og eksploderet op til flere gange
>>inden vi var kommet videre).
>
> Skal det ikke være 2^100 - ?

Det har du faktisk ret i - det var faktisk 2^192-1

> Det andet kan vel ikke tage så lang tid ...



Det jeg mente var naturligvis 10^100 .

--
Jesper Stocholm
* asp-faq.dk er den officielle OSS for nyhedsgruppen for ASP-udviklere. *
* Vi mangler nu en ansvarlig for vedligeholdelse af HTML-brugerfladen, *
* så hvis du kunne tænke dig at hjælpe os, så kig på www.asp-faq.dk/job *

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste