[vb 6.0] .mdb filteren op ingevoerde datum

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • white_panther
  • Registratie: Januari 2001
  • Laatst online: 30-04-2023

white_panther

Campzone here we come....

Topicstarter
In mijn database heb ik een tabel waar de colom datum bestaat.
De datum wordt opgeslagen als tekst (string).

Wanneer ik nu een overzicht wil van alle rijen die die dag zijn ingevoerd krijg ik het alleen voor elkaar door de datum vast in het programma te zetten, dus op deze mannier.
code:
1
2
3
4
5
6
7
8
    Dim query As String
    query = "select Pin, Kontant from factuur where Datum= '30-5-2009'"

    With Data1
    .RecordSource = query
    .Refresh
    End With
End Sub


Als ik het op de volgende mannier doe zoals ik het eigenlijk wil werkt het niet meer
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Command1_Click()    
    Dim query As String, datum As String
    datum = datuminvoer()
    If Len(datuminvoer) Then
    query = "select Pin, Kontant from factuur where Datum= '"
    query = query & datum
    query = query & "';"
    End If
    With Data1
    .RecordSource = query
    .Refresh
    End With
End Sub


Private Function datuminvoer() As String
naam1 = InputBox("Voer de datum in, bv. 30-5-2009")
End Function


Als ik hier in de inputbox ook gewoon 30-5-2009 typ, krijg ik niets als output.

Wat gaat er hier fout :?

achja wat zal ik zeggen .................. ik zeg wel niks............... voor de handleiding van dpad klik hier


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Print voor de grap de query eens (in een textbox of een msgbox ofzo).

Verder: als je aan het fiepen bent met mdb en visual basic, waarom doe je het dan niet in VBA in de access-file?

Verder II: datum als tekst? :X

Acties:
  • 0 Henk 'm!

  • white_panther
  • Registratie: Januari 2001
  • Laatst online: 30-04-2023

white_panther

Campzone here we come....

Topicstarter
Wat bedoel je presies met print de query eens.

de uitkomst van de query gaat naar een MSflexgrid

zie onderstaande bestanden:

Afbeeldingslocatie: http://white-panther.mine.nu/vol.bmpAfbeeldingslocatie: http://white-panther.mine.nu/leeg.bmp
Sorry dat het bmp's zijn, maar ik heb niets anders hier op deze pc

Verder1, ik heb de rest van het volledige programma al klaar :), een beetje zonde van de tijd als ik dat nu allemaal kan weg gooien en alles over VBA moet gaan leren.

Verder2, VB6.0 pakt de datum als string (voor zover ik het gevonden heb), het enigste wat ik misschien zou kunnen doen is een invoermasker maken in de database.

edit:

Ik heb net even de database verander van tekst naar datum tijd en dit geeft nog steeds het zelfde probleem, ook als ik de de datum declareer als date blijft het zelfde probleem bestaan, een lege grid.

code:
1
2
dim datum as date
datum = date$

[ Voor 16% gewijzigd door white_panther op 01-06-2009 23:47 ]

achja wat zal ik zeggen .................. ik zeg wel niks............... voor de handleiding van dpad klik hier


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
code:
1
2
3
query = "select Pin, Kontant from factuur where Datum= '"
    query = query & datum
    query = query & "';"
print de query.

Acties:
  • 0 Henk 'm!

  • stelling
  • Registratie: September 2004
  • Laatst online: 17-09 14:36
In VBA ken ik de oplossing, wellicht dat die in VB6 hetzelfde is. Probeer eens het volgende.
- Datum tussen hekjes (#) te zetten
- Datum in het amerikaanse formaat, dus MM/DD/YYYY.

Acties:
  • 0 Henk 'm!

  • white_panther
  • Registratie: Januari 2001
  • Laatst online: 30-04-2023

white_panther

Campzone here we come....

Topicstarter
Beide oplossingen leiden tot een lege grid.

code:
1
2
3
    Print -query = "select Pin, Kontant from factuur where Datum= '"
    query = query & datum
    query = query & "';"


Dit bedoelde je toch ValHallASW ?

achja wat zal ik zeggen .................. ik zeg wel niks............... voor de handleiding van dpad klik hier


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
white_panther schreef op dinsdag 02 juni 2009 @ 00:45:
Beide oplossingen leiden tot een lege grid.

code:
1
2
3
    Print -query = "select Pin, Kontant from factuur where Datum= '"
    query = query & datum
    query = query & "';"


Dit bedoelde je toch ValHallASW ?
Lijkt me dat ValHallASW bedoelt:

code:
1
2
3
4
query = "select Pin, Kontant from factuur where Datum= "
query = query & blablabla

debug.print query


Verder moet je inderdaad de datum tussen hashes (#) zetten voor access. Dus:

Visual Basic:
1
query = query & "#" & datum & "#"


En kun je 't best een iso-notatie gebruiken (dan heb je nooit een probleem met mm/dd/yyyy of dd/mm/yyyy notatie). Zie ook Getallen en talstelsels FAQ - Datums. Ik gebruik voor SQL server altijd gewoon 'yyyymmdd' maar ik meen dat access ook nog eens koppeltekens wil. Dan krijg je dus (als ik me goed herinner) #yyyy-mm-dd#.


Visual Basic:
1
2
3
datum = "2009-03-05"
query = "select Pin, Kontant from factuur where Datum= "
query = query & "#" & datum & "#"
stelling schreef op maandag 01 juni 2009 @ 23:55:
- Datum in het amerikaanse formaat, dus MM/DD/YYYY.
Dat is dus nogal afhankelijk van de gebruikte locales etc. (zie bovenstaande FAQ)

edit:

<zucht> En dit hele verhaal gaat natuurlijk niet op als je datums als strings op slaat, wat ik net pas zie in je TS... 8)7 Wie doet dat nou, en why zou je dat doen? 7(8)7

[ Voor 32% gewijzigd door RobIII op 02-06-2009 01:09 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • white_panther
  • Registratie: Januari 2001
  • Laatst online: 30-04-2023

white_panther

Campzone here we come....

Topicstarter
Ik had de datum al veranderd in de database naar datum/tijd

hier ging ik in eerste instantie vanuit: microsoft site
The Date$ and Time$ functions return the system date and time in String format

De uitkomst van deze string wordt opgeslagen in de database.

maar ik ga nu naar huis, morgen is er weer een dag :)

[ Voor 77% gewijzigd door white_panther op 02-06-2009 01:49 ]

achja wat zal ik zeggen .................. ik zeg wel niks............... voor de handleiding van dpad klik hier


Acties:
  • 0 Henk 'm!

  • white_panther
  • Registratie: Januari 2001
  • Laatst online: 30-04-2023

white_panther

Campzone here we come....

Topicstarter
Zoals het er nu naar uit ziet werkt de volgende code:

code:
1
    query = "select datum, Pin, Kontant from factuur where datum = " & "#" & Date & "#" & ""

achja wat zal ik zeggen .................. ik zeg wel niks............... voor de handleiding van dpad klik hier


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
white_panther schreef op dinsdag 02 juni 2009 @ 23:12:
Zoals het er nu naar uit ziet werkt de volgende code:

code:
1
    query = "select datum, Pin, Kontant from factuur where datum = " & "#" & Date & "#" & ""
Beetje vreemd met je quotes...

code:
1
query = "select datum, Pin, Kontant from factuur where datum = #" & Date & "#"

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • white_panther
  • Registratie: Januari 2001
  • Laatst online: 30-04-2023

white_panther

Campzone here we come....

Topicstarter
Ja maar ik ben al lang blij dat die werkt :)

Ik heb de code gebruikt die je me gisteren voorstelde:
code:
1
2
query = "select Pin, Kontant from factuur where Datum= " 
query = query & "#" & datum & "#"


En inplaats van de 'datum' eerst te declareren met datum = date gewoon direct 'date' gebruikt in de query.
Toen deed die nog niet wat ik wilde (leeg resultaat) en heb ik de 2e query bij de eerste ingestopt, en toen deed die het in één keer

[edit]
en zonder die eerste en laatste quote verwacht die een "end of statement"

[ Voor 8% gewijzigd door white_panther op 02-06-2009 23:44 ]

achja wat zal ik zeggen .................. ik zeg wel niks............... voor de handleiding van dpad klik hier


Acties:
  • 0 Henk 'm!

Verwijderd

opgelet, datumlitterals (=datums tussen #-jes) worden geïnterpreteerd in amerikaans formaat, MM-dd-yyyy, enkel omdat de dag toevallig groter is dan 12 gaat de interpretatie zoals jij wenst (dd-MM-yy)
doe eens
code:
1
2
3
?month(#12-4-2009#)
'en
?month(#13-4-2009#)
in het debugvenster (ctrl+g)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 02 juni 2009 @ 23:49:
opgelet, datumlitterals (=datums tussen #-jes) worden geïnterpreteerd in amerikaans formaat, MM-dd-yyyy, enkel omdat de dag toevallig groter is dan 12 gaat de interpretatie zoals jij wenst (dd-MM-yy)
doe eens
code:
1
2
3
?month(#12-4-2009#)
'en
?month(#13-4-2009#)
in het debugvenster (ctrl+g)
RobIII in "[vb 6.0] .mdb filteren op ingevoerde datum" ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1