|
| 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 *
| |
|
|