Jakob Munck skrev:
> Tak for de gode råd.
Velbekomme. Du får lige et teknisk råd vedrørende nyhedsgrupperne
først: Det er lettere at læse og besvare dine kommentarer hvis du
følger de gængse retningslinjer for citater - dvs. skriv
kommentarer neden under det du kommenterer (gerne i flere blokke)
og klip overflødige citater væk. Se evt. også min signatur.
> jeg er naturligvis modtagelig for forslag til forbedring:
Jeg skal gerne komme med nogle.
> SQL = "SELECT * FROM tbBesoeg WHERE aar =" & Year(Now()) & "
> AND maaned=" & Month(Now()) & " AND dag =" & Day(Now())
Jeg ville gemme datoen som et datofelt og så skrive:
SQL = "SELECT COUNT(*) as antal FROM tbBesoeg WHERE " & _
" DateDiff('d', Now, datofelt) = 0"
Med din nuværende struktur kan man gøre det lidt enklere således:
SQL = "SELECT COUNT(*) FROM tbBesoeg WHERE aar = Year(Now) " & _
"AND maaned = Month(Now) AND dag = Day(Now)"
Hvis du ikke vil benytte COUNT her, kan du fx skrive:
SQL = "SELECT TOP 1 dag FROM tbBesoeg WHERE aar = Year(Now) " & _
"AND maaned = Month(Now) AND dag = Day(Now)"
- og så tjekke på rs.EOF igen. Det optimerer performance fordi du
højst henter én post og kun ét felt. Du tjekker jo egentlig bare
for eksistensen af poster fra dags dato - derfor er der ingen grund
til at hente dem alle sammen.
> if RS.EOF or RS.BOF then
If rs("antal") = 0 Then
> SQL = "SELECT COUNT(*) AS antal_medlemmer FROM tbMedlemmer"
Her tæller du samtlige medlemmer i tbMedlemmer - men det er måske
også meningen?
> Set RS = Conn.Execute(SQL)
Nu har du "tabt" det første postsæt - for du har ikke længere en
reference til det. Hvis du har flere postsæt åbne ad gangen, bør du
give dem forskellige navne:
Set rsMedlemmer = Conn.Execute(SQL)
(Vil man gøre det rigtig pænt, kan man også give sql-variablerne
mere sigende navne: Conn.Execute(SQLMedlemmer).
Det er vigtigt at beholde referencerne til "dyre" resurser som
postsæt, fordi man ellers ikke kan lukke og slukke efter sig
(rs.close/set rs = nothing).
> besoeg = 1
> aar = Year(Now())
> maaned = Month(Now())
> dag = Day(Now())
Alle disse værdier kunne fint være default-værdier for tabellen.
> SQL_insert = "INSERT INTO tbBesoeg (besoeg, aar, maaned, dag,
> antal_medl) values ('" & besoeg & "','
Registrerer du antal besøg i et tekstfelt? Det er en dårlig ide.
Hvis det er et talfelt, er syntaksen forkert - der skal ikke
anførselstegn om talfelter.
> SQL = "UPDATE tbBesoeg SET besoeg = besoeg + 1
- ah, du registrerer besoeg som et talfelt, fint nok. Men så er der
altså fejl i INSERT-sætningen.
--
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