|
| SQL-fejl Fra : Søren Melgaard |
Dato : 06-07-04 21:39 |
|
Hej NG,
I et lille program jeg har lavet, indgår en database med tabellen
"ArbjedsTid", hvor jeg har en række poster, sorteret efter feltet
"DATO"
Hvis jeg ønsker at se et udsnit af disse datoer, fra en "STARTDATO"
til en "SLUTDATO", har jeg lavet følgende udtryk:
Dim dStartDato as Date
Dim dSlutDato as Date
.....
Form1.Data1.RecordSource = ("SELECT * FROM [ArbejdsTid] WHERE [Dato] <
" & dStartDato & " AND [Dato] > " & dSlutDato)
form1.data1.refresh
Men hver gang får jeg 0 poster, selv om jeg positivt kan se, at der er
poster i intervallet jeg indtaster.
Er der nogen, der kan fortælle mig, hvad der går galt? Er det noget
med datoformatet og SQL? Med Debug, kan jeg se, at datoen der
indtastes, står som i databasen.
Håber nogen kan hjælpe mig!
På fohånd tak!
Søren Melgaard
| |
Thomas Bøjstrup Joha~ (06-07-2004)
| Kommentar Fra : Thomas Bøjstrup Joha~ |
Dato : 06-07-04 22:07 |
|
> Dim dStartDato as Date
> Dim dSlutDato as Date
> ....
> Form1.Data1.RecordSource = ("SELECT * FROM [ArbejdsTid] WHERE [Dato] <
> " & dStartDato & " AND [Dato] > " & dSlutDato)
hej søren
nu er jeg ikke nogen haj til sql, men hvad med denne
noget = ("SELECT * FROM ArbejdsTid WHERE (Dato<'" & dStartDato & "' AND
Dato>'" & dSlutDato & "')")
jeg bruger ' til at pakke ind med
| |
Kim Jørgensen (07-07-2004)
| Kommentar Fra : Kim Jørgensen |
Dato : 07-07-04 11:56 |
|
"Søren Melgaard" <s.melgaard@mobilixnet.dk> wrote in message
news:0e2me055p6l8m38ojibh5l4e1a0h25k7q4@4ax.com...
> Hej NG,
>
> I et lille program jeg har lavet, indgår en database med tabellen
> "ArbjedsTid", hvor jeg har en række poster, sorteret efter feltet
> "DATO"
>
> Hvis jeg ønsker at se et udsnit af disse datoer, fra en "STARTDATO"
> til en "SLUTDATO", har jeg lavet følgende udtryk:
>
> Dim dStartDato as Date
> Dim dSlutDato as Date
> ....
> Form1.Data1.RecordSource = ("SELECT * FROM [ArbejdsTid] WHERE [Dato] <
> " & dStartDato & " AND [Dato] > " & dSlutDato)
>
> form1.data1.refresh
>
>
>
> Men hver gang får jeg 0 poster, selv om jeg positivt kan se, at der er
> poster i intervallet jeg indtaster.
>
> Er der nogen, der kan fortælle mig, hvad der går galt? Er det noget
> med datoformatet og SQL? Med Debug, kan jeg se, at datoen der
> indtastes, står som i databasen.
>
>
>
> Håber nogen kan hjælpe mig!
>
>
> På fohånd tak!
>
> Søren Melgaard
Hej Søren
Har du prøvet at vende dine "<" og ">"? dSlutDato er vel større end
dStartDato, så [Dato] skal være > dStartDato og < dSlutDato.
Mvh
Kim
| |
Søren Melgaard (07-07-2004)
| Kommentar Fra : Søren Melgaard |
Dato : 07-07-04 12:35 |
|
Hej Thomas og Kim,
Jeg har prøvet begge jeres forslag.....og selvfølgelig skal "<" og ">"
vende, som Kim beksrev det....MEN desværre bliver resultatet det
samme?!? Jeg får ikke én post frem!
Jeg er heller ikke selv nogen ekspert til SQL og ved derfor ikke, om
der er noget specielt, når man anvender datoer.
Mvh.
Søren Melgaard
| |
Harald Staff (07-07-2004)
| Kommentar Fra : Harald Staff |
Dato : 07-07-04 13:14 |
|
"Søren Melgaard" <s.melgaard@mobilixnet.dk> skrev i melding
news:6onne05ukco8h1amhjjcknvfqgnb9j5mbi@4ax.com...
> Jeg er heller ikke selv nogen ekspert til SQL og ved derfor ikke, om
> der er noget specielt, når man anvender datoer.
Hei Søren
Forskjellige databaser skal ha litt forskjellig datoformat. Hvilken database
har du anvendt ?
Forsøk også å erstatte dStartDato med
Format$(dStartDato, "yyyy.mm.dd hh:mm:ss")
likeledes
Format$(dSlutDato, "yyyy.mm.dd hh:mm:ss")
HTH. Beste hilsen Harald
| |
Thomas Bøjstrup Joha~ (07-07-2004)
| Kommentar Fra : Thomas Bøjstrup Joha~ |
Dato : 07-07-04 16:34 |
|
> Jeg har prøvet begge jeres forslag.....og selvfølgelig skal "<" og ">"
> vende, som Kim beksrev det....MEN desværre bliver resultatet det
> samme?!? Jeg får ikke én post frem!
>
> Jeg er heller ikke selv nogen ekspert til SQL og ved derfor ikke, om
> der er noget specielt, når man anvender datoer.
det kan også være fordi din col. hedder "dato", prøve at omdøbe den til
noget andet.
| |
Nyhedskigger (11-07-2004)
| Kommentar Fra : Nyhedskigger |
Dato : 11-07-04 13:43 |
|
Det kunne være tilgang til db via sql der gi´r problemer.
Jeg har selv haft det samme problem og opdagede at sql strengen
omformateres.
(Hvis det er Access, kan man lave en forespørgsel og sette et kriterie for
dato-feltet, klik derefter på sql-visning og se at kriteriet er ændret)
Jeg løste det på denne måde (klippet ud af mit program):
Dim SQL_Tid As String 'Dato skal omformateres for at kunne læses i
sql-streng
SQL_Tid = "#" & Format(varTid, "m") & "/" & Format(varTid, "d") & "/" &
Format(varTid, "yyyy") & "#"
varTid er variablen med dato (varTid As Date)
Bemærk at når man kigger i tabellen eller gennem en forespørgsel er datoen:
11-07-2004
Når man kigger på sql-strengen er datoformatet: #7/11/2004#
Det er en dansk Access xp (2000 format) jeg kører med og alligevel vil den
ha´ det på dén måde - det virker i hvert fald hos mig.
Men pas på alligevel. Sørg for at alle datoer bliver gemt i felter erklæret
som dato-felter. Og sørg ligeledes for at alle datoer indlæses i variabler
der er erklæret 'As Date' . KUN når data skal vises for bruger skal DU
formater: fx Format(varTid, "dddd mmmm yyyy") - nåja og så lige når datoen
skal bruges i en sql-sætning.
mvh/kks
"Søren Melgaard" <s.melgaard@mobilixnet.dk> skrev i en meddelelse
news:0e2me055p6l8m38ojibh5l4e1a0h25k7q4@4ax.com...
> Hej NG,
>
> I et lille program jeg har lavet, indgår en database med tabellen
> "ArbjedsTid", hvor jeg har en række poster, sorteret efter feltet
> "DATO"
>
> Hvis jeg ønsker at se et udsnit af disse datoer, fra en "STARTDATO"
> til en "SLUTDATO", har jeg lavet følgende udtryk:
>
> Dim dStartDato as Date
> Dim dSlutDato as Date
> ....
> Form1.Data1.RecordSource = ("SELECT * FROM [ArbejdsTid] WHERE [Dato] <
> " & dStartDato & " AND [Dato] > " & dSlutDato)
>
> form1.data1.refresh
>
>
>
> Men hver gang får jeg 0 poster, selv om jeg positivt kan se, at der er
> poster i intervallet jeg indtaster.
>
> Er der nogen, der kan fortælle mig, hvad der går galt? Er det noget
> med datoformatet og SQL? Med Debug, kan jeg se, at datoen der
> indtastes, står som i databasen.
>
>
>
> Håber nogen kan hjælpe mig!
>
>
> På fohånd tak!
>
> Søren Melgaard
| |
Søren Melgaard (18-07-2004)
| Kommentar Fra : Søren Melgaard |
Dato : 18-07-04 14:40 |
|
SÅ FLOT!
DET VIRKER!
TAK FOR HJÆLPEN!
SUPER! TAK!
| |
Andy Dufresne (21-07-2004)
| Kommentar Fra : Andy Dufresne |
Dato : 21-07-04 11:57 |
|
"Søren Melgaard" <s.melgaard@mobilixnet.dk> skrev i en meddelelse
news:0e2me055p6l8m38ojibh5l4e1a0h25k7q4@4ax.com...
> Hej NG,
>
> I et lille program jeg har lavet, indgår en database med tabellen
> "ArbjedsTid", hvor jeg har en række poster, sorteret efter feltet
> "DATO"
>
Hvad med at lade være med at bruge datoen som date, men som tal i stedet.
Der findes vist IKKE en direkte kommando til det i VB, det er kun i stort
set alle andre sprog der gør.
Noget med en datediff
Normalt bruger man viste noget med antallet af sekunder siden 1/1-1970 kl.
00:00:00
Det burde datediff kunne klare..
Når du så skal bruge det i sql er det jo bare tal diu skal sammenligne med..
Når du skal vise det, skal du bare lægge tallet i sekunder til 1/1-1970 kl.
00:00:00 - Det kan jeg ikke lige huske hvordan man gør, men jeg er ret
sikker på, at der i VB er funktioner til at lægge sekunder til et tidspunkt.
På den måde er du ude over alle problemerne med datoer i databaser.....
| |
|
|