Mark Fiedel i Styrelsen for Samfundssikkerhed påpeger behovet for, at Danmark kigger kritisk på leverandørafhængighed.
13. juni 2025
Slettet bruger
02. september 2011 - 20:53#1
Det er nemmere hvis du bruger prepared statements, for så behøver du ikke bekymre dig om at få lavet din datetime om til en tekst streng, og du beskytter dig mod sql injection. Jeg bruger ikke selv VB, så jeg ved ikke hvordan det gøres der.
Er din dato en streng eller en datetime? Har du prøvet med datoformattet 'yyyy-MM-dd HH:mm:ss', f.eks. '2011-09-02 20:50:00'?
både last_visit og dato er datetime, og når de bliver udskrevet står de i format 25-08-2011 14:14:28. Det skyldes måske jeg i toppen af side har <% Session.LCID = 1030 %>.
[MySQL][ODBC 3.51 Driver][mysqld-5.1.51-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) AS antal FROM gaester WHERE brugerID = '43' AND last_visit > '20110902213300'' at line 1
når jeg bruger denne: strSQL = "SELECT COUNT (*) AS antal FROM gaester WHERE brugerID = '" & id & "' AND last_visit > '20110902213300' & "'"
udover dette skal feltet dato ind fra tabellen med indlæg? Det er jo dato indput fra 2 tabeller?
Synes godt om
Slettet bruger
02. september 2011 - 21:58#7
Fjern mellemrum mellem "COUNT" og "(":
"COUNT (*)" -> "COUNT(*)"
Måske skal din forespørgsel udformes således?
SELECT COUNT(*) AS `antal` FROM `gaester` INNER JOIN `indlaeg` ON( `gaester`.`brugerID` = '" & id & "' AND `indlaeg`.`date` > `gaester`.`last_visit` )
Synes godt om
Slettet bruger
02. september 2011 - 22:06#8
Hvis du kun har dato som en tekst streng og i formattet '25-08-2011 14:14:28', så prøv med:
StrSQL = "Select count(*) as antal from gaester WHERE brugerID= '" & id & "' and last_visit> str_to_date('" & dato & "', %d-%m-%Y %H:%i:%s')"
Jeg ved ikke om VB syntaxen er rigtig, men ideen er at du konverterer datoen på denne måde:
jeg kan ikke rigtig gennemskue den kode, jeg har datetime fra tabellen bruger med feltet last_visit og så er der tabellen gaester med dato som også er datetime. Men jeg kan ikke rigtig for det til at passe, de små tegn ' skal de være der?
StrSQL = "Select count(*) as antal from gaester WHERE brugerID= '" & id & "' and last_visit> str_to_date('" & dato & "', %d-%m-%Y %H:%i:%s')"
set rs = Conn.execute(strSQL)
og fik fejlbesked som her:
Microsoft OLE DB Provider for ODBC Drivers
error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-5.1.51-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%d-%m-%Y %H:%i:%s')' at line 1
som er denne her linie set rs = Conn.execute(strSQL)
Synes godt om
Slettet bruger
02. september 2011 - 22:14#12
Og hvis du kan bruge kvadratrodenaf1's forslag med inner join, så er det en meget bedre løsning at gå efter.
Synes godt om
Slettet bruger
02. september 2011 - 22:17#13
Du mangler en ' lige før %d i det du postede: StrSQL = "Select count(*) as antal from gaester WHERE brugerID= '" & id & "' and last_visit> str_to_date('" & dato & "', '%d-%m-%Y %H:%i:%s')"
jeg bruger gerne det bedste, hvis jeg kan - med hjælp - få det til at virke. Er overrasket over, at det er så svært at sammenligne 2 ens formater:-)
Synes godt om
Slettet bruger
02. september 2011 - 22:18#15
Faktisk var det mig der glemte at tilføje den. :)
Synes godt om
Slettet bruger
02. september 2011 - 22:19#16
Hvis du vil tælle antal indlæg, der har været siden sidste login, arbejder du på den forkerte tabel.
Udgangspunktet er "Select count(*) as antal from gaester WHERE "... Her er du i gang med at tælle gæster (formentligt brugere), hvor du faktisk vil tælle indlæg - du skal altså arbejde på en tabel, der hedder indlaeg, ell. lign.
Prøv mit forslag fra før. Tilret naturligvis tabelnavn og kolonnenavn, hhv. indlaeg og date:
SELECT COUNT(*) AS `antal` FROM `gaester` INNER JOIN `indlaeg` ON( `gaester`.`brugerID` = '" & id & "' AND `indlaeg`.`date` > `gaester`.`last_visit` )
jeg forsøgte en del tid med kvadratrodensaf1's forslag med INNER JOIN, men kunne desværre ikke få det til at spille, må være fordi det er første gang jeg stifter bekendtskab med funktion.
herefter prøvede jeg så tolamaps løsning og den virkede efter en lille justering og ser nu sådan ud:
StrSQL = "Select count(*) as antal from gaester WHERE brugerID= '" & id & "' and dato > str_to_date('" & last_visit & "', '%d-%m-%Y %H:%i:%s')"'"
tak for hjælpen til begge, og det er tolamaps som få pointene, så smid et svar:-)
God weekend til alle på eksperten.dk.
mvh. S
Synes godt om
Slettet bruger
03. september 2011 - 17:52#19
Pointene må du godt beholde eller give til en anden. Håber du finder ud af det med inner join en dag. God weekend. :)
Ja, inner join skal være et af mine næste opgaver:-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.