/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
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.....





Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste