OleDbSelectCommand1.CommandText = "SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '" & MonthCalendar1.SelectionRange.Start.Date.ToShortDateString() & "'"
OleDbSelectCommand1.Connection = OleDbConnection1
OleDbSelectCommand1.CommandText ="SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '"& MonthCalendar1.SelectionRange.Start.Date.ToShortDateString()&"'"
OleDbSelectCommand1.Connection = OleDbConnection1
Maar er komt dus niets in de datagrid te staan, de datasource van de datagrid staat ingesteld op de dataset van deze tabel.
Dus wat doe ik verkeerd?
10 antwoorden
Gesponsorde links
Abbas - 14/03/2008 11:18 (laatste wijziging 14/03/2008 11:19)
Crew .NET
Als je datumveld in je DB van het type Date is doe je het zo:
Dim datum As DateTime = MonthCalendar1.SelectionStart()
Dim strQuery As String = "SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '" & datum & "'"
Dim datum As DateTime = MonthCalendar1.SelectionStart()
Dim strQuery AsString="SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '"& datum &"'"
Als het van het type string is doe je gewoon .ToString / .ToShortDateString() achter die SelectionStart()
Dim datum As DateTime = MonthCalendar1.SelectionStart()
OleDbSelectCommand1.CommandText = "SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '" & datum & "'"
OleDbSelectCommand1.Connection = OleDbConnection1
Dim datum As DateTime = MonthCalendar1.SelectionStart()
OleDbSelectCommand1.CommandText="SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '"& datum &"'"
Nu denk ik eraan, je werkt met een DataGrid... Ik zou dan aan de hand van die query een DataSet vullen en die dan koppelen aan de DataGrid. De DataSet dan toewijzen als DataSource van de Grid:
Dim datum As DateTime = MonthCalendar1.SelectionStart()
Dim strQuery As String = "SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '" & datum & "'"
Dim mySet As New DataSet()
Dim myData As New OleDbDataAdapter(strQuery, OleDbConnection1)
myData.Fill(mySet)
Uw_DataGrid.DataSource = mySet
Dim datum As DateTime = MonthCalendar1.SelectionStart()
Dim strQuery AsString="SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '"& datum &"'"
Dim mySet AsNew DataSet()
Dim myData AsNew OleDbDataAdapter(strQuery, OleDbConnection1)
ik heb hem zowel boven als onder de inherits gezet, maar dan wordt imports blauw onderstreept en geeft hij een foutmelding, hoewel onlogischer, maar ook in de sub van monthcalendar geprobeerd, maar hetzelfde verhaal.
Hij geeft de foutmelding:
"Imports statement must precede any declarations"
Maar je hoeft die imports niet te doen. In C# is de "using" verplicht dacht ik, maar in vb.net wil die imports gewoon zeggen dat alle classes uit de geimporteerde namespace in u intellisense komen. Je kan de code die een aantal posts hoger werd geschreven ook schrijven als:
Dim datum As DateTime = MonthCalendar1.SelectionStart()
Dim strQuery As String = "SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '" & datum & "'"
Dim mySet As New DataSet()
Dim myData As New oledb.OleDbDataAdapter(strQuery, OleDbConnection1)
myData.Fill(mySet)
Uw_DataGrid.DataSource = mySet
Dim datum As DateTime = MonthCalendar1.SelectionStart()
Dim strQuery AsString="SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '"& datum &"'"
Dim mySet AsNew DataSet()
Dim myData AsNew oledb.OleDbDataAdapter(strQuery, OleDbConnection1)
myData.Fill(mySet)
Uw_DataGrid.DataSource= mySet
Let op de "oledb.oledbDataAdapter". Door die "oledb." ervoor te plaatsen, roep je de namespace oledb aan.
Nog even kleine opmerking:
Access gaat de datum waarden op zijn amerikaans opslaan. Je gaat dus moeten opletten want dit kan veroorzaken dat je maand en dag worden omgedraaid als je de gegevens terug opvraagt. Je kan die datum en tijd terug te goei laten zetten op deze manier: http://www.vbib...6804#16804
Er stond nu geen blauw lijntje meer onder toen ik oledb. had toegevoegd, en ik kon hem builden en uitvoeren.
Maar toen het draaide en ik klikte op een andere datum waardoor de sub datechanged werd geactiveerd liep het programma vast en kwam met de foutmelding:
An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll
Vanonder was er te zien in een vak genaamd autos wat rood was gemarkeerd:
name - value - type
datum - #3/14/2008# - Date
strQuery - "SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '14-3-2008'" - String
Ik denk dus dat het formaat van de datum die ingevoerd wordt in de query fout loopt.
Daarnaast was de regel myData.Fill(mySet) groen gemarkeerd.
En over die amerikaanse notatie, deze notatie ben ik wel gewend in mysql, maar access maakt er hoe je het ook invoert altijd een nederlandse notatie van (d-m-Y), heb het nog geprobeerd te wijzigen in een amerikaanse notatie, maar dat liet hij gewoon niet toe.