Springen naar inhoud


- - - - -
VS 2015

Command Filtert Niet Tussen Datum Is.

VS2015

  • Log in a.u.b. om te beantwoorden
Er zijn 6 reacties in dit onderwerp

#1 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4344 berichten
    Laatst bezocht vandaag, 07:20
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 06 oktober 2017 - 12:23

Ik heb de volgende regel.:
Visual Basic Code:
   Dim da1 As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM xxxx where Datum BETWEEN #" + Label1.Text + "# and #" + Label2.Text + "# and Product = '" + ComboBox1.Text + "'", con)

In mijn access db waar alle gegevens staan van 2 maanden, zijn gegevens verwerkt van september en oktober.
label1 laat de eerste datum zien van de maand en label2 de einddatum van die maand.
In huidig geval zou hij dus eigenlijk alle waarde alleen mogen laten zien van de maand oktober, maar ipv laat hij gewoon alle waarden zien wat ik zelf vreemd vind.
Deze gegevens laat hij me dan zien in een datagridview.

Bijlage  tabelfout.png   3,28K   0 downloads

Iemand een idee hoe dit kan?

Wat is het gezegde in Ontwikkeling van software.: Er zijn vele wegen die naar Rome leiden, de kunst is de goede te vinden.
email : pascalbianca@vbib.be
of email : webmaster@vbib.be
MSN.:: pmhaschuffelers@hotmail.com
Volg ook mijn Raspberry Pi Blog.:: link


Geplaatste afbeelding


Huisregels - Tutorials - VS 2012 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


*** If you like you're solution or appriciate the crew's effort, please click on the facebook like or the Google + button ***


#2 Dirk Andries

Dirk Andries

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 977 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 06 oktober 2017 - 15:21

1. Gebruik DbParameters ! (Is niet de eerste maal dat ik je dit probeer wijs te maken).
2. Wat is het type van je Datum veld in je databank?
3. Wat zijn de exacte (literal) waarden van je labels?
Trust me, I have no idea what I'm talking about.

#3 Dirk Andries

Dirk Andries

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 977 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 06 oktober 2017 - 15:26

Bericht bekijkenDirk Andries, op 06 oktober 2017 - 15:21, zei:

3. Wat zijn de exacte (literal) waarden van je labels?
MS Access verwacht datums als #MM/dd/yyyy#
Trust me, I have no idea what I'm talking about.

#4 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4344 berichten
    Laatst bezocht vandaag, 07:20
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 06 oktober 2017 - 16:14

Citeren

1. Gebruik DbParameters ! (Is niet de eerste maal dat ik je dit probeer wijs te maken).
Klopt maar dat gebruik ik ook bij opslaan, laden zou ik niet weten.

In access staat het als dd-mm-yyyy

Bijlage  2017-10-06.png   9,84K   1 downloads

Wat is het gezegde in Ontwikkeling van software.: Er zijn vele wegen die naar Rome leiden, de kunst is de goede te vinden.
email : pascalbianca@vbib.be
of email : webmaster@vbib.be
MSN.:: pmhaschuffelers@hotmail.com
Volg ook mijn Raspberry Pi Blog.:: link


Geplaatste afbeelding


Huisregels - Tutorials - VS 2012 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


*** If you like you're solution or appriciate the crew's effort, please click on the facebook like or the Google + button ***


#5 Dirk Andries

Dirk Andries

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 977 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 06 oktober 2017 - 17:12

Bericht bekijkenpascalbianca, op 06 oktober 2017 - 16:14, zei:

In access staat het als dd-mm-yyyy

Nogmaals: MS Access verwacht in je query standaard het formaat #MM/dd/yyyy#
Tenzij je "geluk" hebt en de datum in dat formaat geen geldige datum zou zijn, dan kan het eventueel omgezet worden naar het formaat dat toevallig het formaat was dat je beoogde.

Dus 01/10/2017 tot 31/10/2017 wordt geïnterpreteerd als 10 januari 2017 tot 31 oktober 2017 (dus ook september er bij).


Oplossing: gebruik Parameters.
Uit het hoofd:
Visual Basic Code:
Const query As String = "SELECT * FROM xxxx where Datum BETWEEN ? and ? and Product = ?"
Dim da1 = New OleDbDataAdapter(query, con)
da1.SelectCommand.Parameters.AddWithValue("van", New DateTime(2017, 10, 1))
da1.SelectCommand.Parameters.AddWithValue("tot", New DateTime(2017, 10, 31))
da1.SelectCommand.Parameters.AddWithValue("product", "iPhone 8")

Trust me, I have no idea what I'm talking about.

#6 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4344 berichten
    Laatst bezocht vandaag, 07:20
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 07 oktober 2017 - 09:28

Citeren

Nogmaals: MS Access verwacht in je query standaard het formaat #MM/dd/yyyy#
Ik heb diverse senarios getest in access met de datum en in de vb code.

Het enigste dat dus werkt is als ik in de code de datum notatie omdraai.:
Visual Basic Code:
bsData.Filter = "Datum > #10-01-2017# and Datum < #10-12-2017#"

Maar dan zit ik met het volgende.
Ik wil telkens de data laten zien van de huidige maand als die ook begonnen is en niet van eerdere maanden.
Door dit te doen gebruik ik de volgende code (gevonden via google) die mij de eerste dag van de huidige maand laat zien en de laatste dag van de huidige maand.:
Visual Basic Code:
'This year, this month, first day
Dim FirstDay = DateSerial(Today.Year, Today.Month, 1)
'This year, next month, 0th day is this month's last day
Dim LastDay = DateSerial(Today.Year, Today.Month + 1, 0)

Deze zet ik als test in 2 labels en deze toont me nu, zoals het hoort 01-10-2017 en 31-10-2017 weer.

Maar in filter wil ik die beide hebben, dus dag en maand moet omgedraaid worden.
Hoe krijg ik dat gefix?

[update]
opgelost met
.:
Visual Basic Code:
Format(FirstDay, "MM-dd-yyyy")

Wat is het gezegde in Ontwikkeling van software.: Er zijn vele wegen die naar Rome leiden, de kunst is de goede te vinden.
email : pascalbianca@vbib.be
of email : webmaster@vbib.be
MSN.:: pmhaschuffelers@hotmail.com
Volg ook mijn Raspberry Pi Blog.:: link


Geplaatste afbeelding


Huisregels - Tutorials - VS 2012 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


*** If you like you're solution or appriciate the crew's effort, please click on the facebook like or the Google + button ***


#7 Dirk Andries

Dirk Andries

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 977 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 07 oktober 2017 - 13:15

Bericht bekijkenpascalbianca, op 07 oktober 2017 - 09:28, zei:

Ik heb diverse senarios getest in access met de datum en in de vb code.

Het enigste dat dus werkt is als ik in de code de datum notatie omdraai.:
Visual Basic Code:
bsData.Filter = "Datum > #10-01-2017# and Datum < #10-12-2017#"

Ja, dat is dus wat ik al twee maal zei.

Bericht bekijkenpascalbianca, op 07 oktober 2017 - 09:28, zei:

Door dit te doen gebruik ik de volgende code (gevonden via google) die mij de eerste dag van de huidige maand laat zien en de laatste dag van de huidige maand.:
Visual Basic Code:
'This year, this month, first day
Dim FirstDay = DateSerial(Today.Year, Today.Month, 1)
'This year, next month, 0th day is this month's last day
Dim LastDay = DateSerial(Today.Year, Today.Month + 1, 0)
Wat is er mis met New DateTime?
Visual Basic Code:
 Dim eerste = New Date(Today.Year, Today.Month, 1)
 Dim laatste = eerste.AddMonths(1).AddDays(-1)


Bericht bekijkenpascalbianca, op 07 oktober 2017 - 09:28, zei:

Deze zet ik als test in 2 labels en deze toont me nu, zoals het hoort 01-10-2017 en 31-10-2017 weer.

Maar in filter wil ik die beide hebben, dus dag en maand moet omgedraaid worden.
Hoe krijg ik dat gefix?

[update]
opgelost met
.:
Visual Basic Code:
Format(FirstDay, "MM-dd-yyyy")
ToString werkt ook.

Visual Basic Code:
VanTotLabel.Text = eerste.ToString("MM/dd/yyyy") + " tot " + laatste.ToString("MM/dd/yyyy")


Maar nogmaals: gebruik parameters. Dan geef je een DateTime mee en de OleDbProvider trekt er zijn plan mee en zal automagisch het juiste formaat voor Access (of een andere db engine) kiezen.
Trust me, I have no idea what I'm talking about.





Ook met taq VS 2015, VS2015 voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[VS 2015] Untitled 1

Met dank aan J├╝rgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)