login  Naam:   Wachtwoord: 
Registreer je!
 Forum

monthcalendar - geselecteerde dag

Offline Stefan14 - 14/03/2008 10:58
Avatar van Stefan14PHP gevorderde Ik wil vanuit een monthcalendar de geselecteerde dag halen en gebruiken om daarmee gegevens uit een database op te halen.

De verbinding met de database is gelegd, maar hoe stuur ik hier op de juiste manier een query naartoe?

ik heb nu het volgende in de sub van DateChanged staan:
  1. OleDbSelectCommand1.CommandText = "SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '" & MonthCalendar1.SelectionRange.Start.Date.ToShortDateString() & "'"
  2. 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
Offline Abbas - 14/03/2008 11:18 (laatste wijziging 14/03/2008 11:19)
Avatar van Abbas Gouden medaille

Crew .NET
Als je datumveld in je DB van het type Date is doe je het zo:
  1. Dim datum As DateTime = MonthCalendar1.SelectionStart()
  2. Dim strQuery As String = "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()
Offline Stefan14 - 14/03/2008 11:29 (laatste wijziging 14/03/2008 11:29)
Avatar van Stefan14 PHP gevorderde het veld in de database is uiteraard van het datum type.

maar wat voor regel moet er nog bij, want ik neem aan dat je het ook naar de database moet sturen net zoals je in php met mysql_query(); doet of niet?

Als ik namelijk de huidige regel pak:
  1. OleDbSelectCommand1.Connection = OleDbConnection1
en OleDbSelectCommand1 vervang door strQuery, dan zegt hij "Connection is not a member of String"
Offline Abbas - 14/03/2008 11:46
Avatar van Abbas Gouden medaille

Crew .NET
Vrij logisch dat je die melding krijgt. Een variabele van het type string heeft geen member 'Connection'.
Doe anders dit:
  1. Dim datum As DateTime = MonthCalendar1.SelectionStart()
  2. OleDbSelectCommand1.CommandText = "SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '" & datum & "'"
  3. OleDbSelectCommand1.Connection = OleDbConnection1

Offline Stefan14 - 14/03/2008 11:50
Avatar van Stefan14 PHP gevorderde het werkt nog niet, maar misschien dat dat aan het datagrid ligt?
dit is de windows generated code voor het datagrid:
  1. Me.DataGridAgenda.DataMember = ""
  2. Me.DataGridAgenda.DataSource = Me.DataSet12.agenda
  3. Me.DataGridAgenda.HeaderForeColor = System.Drawing.SystemColors.ControlText
  4. Me.DataGridAgenda.Location = New System.Drawing.Point(216, 16)
  5. Me.DataGridAgenda.Name = "DataGridAgenda"
  6. Me.DataGridAgenda.ReadOnly = True
  7. Me.DataGridAgenda.Size = New System.Drawing.Size(776, 632)
  8. Me.DataGridAgenda.TabIndex = 1
Offline Abbas - 14/03/2008 11:58
Avatar van Abbas Gouden medaille

Crew .NET
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:
  1. Dim datum As DateTime = MonthCalendar1.SelectionStart()
  2. Dim strQuery As String = "SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '" & datum & "'"
  3. Dim mySet As New DataSet()
  4. Dim myData As New OleDbDataAdapter(strQuery, OleDbConnection1)
  5. myData.Fill(mySet)
  6. Uw_DataGrid.DataSource = mySet
Offline Stefan14 - 14/03/2008 12:14
Avatar van Stefan14 PHP gevorderde inderdaad ja, fill, dat komt mij bekend voor.

Alleen nog een klein dingetje op regel 4, hij zegt Type OleDbDataAdapter is not defined.
Offline nemesiskoen - 14/03/2008 12:48
Avatar van nemesiskoen Gouden medaille

PHP expert
Vergeet niet "Imports System.Data.OleDB" vanboven te zetten. Anders gaat hem dat niet herkennen.
Offline Stefan14 - 14/03/2008 16:30
Avatar van Stefan14 PHP gevorderde 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"
Offline ArComAr - 15/03/2008 15:48 (laatste wijziging 15/03/2008 15:58)
Avatar van ArComAr VB.NET gevorderde Je moet die imports helemaal bovenaan je code blad plaatsen. Dus boven de klasse:

  1. imports system.data.oledb
  2.  
  3. public class class1
  4. ...


Je imports beginnen van lijn 1 in je code.

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:

  1. Dim datum As DateTime = MonthCalendar1.SelectionStart()
  2. Dim strQuery As String = "SELECT datum, start, eind, omschrijving FROM agenda WHERE datum = '" & datum & "'"
  3. Dim mySet As New DataSet()
  4. Dim myData As New oledb.OleDbDataAdapter(strQuery, OleDbConnection1)
  5. myData.Fill(mySet)
  6. 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
Offline Stefan14 - 15/03/2008 23:49 (laatste wijziging 15/03/2008 23:50)
Avatar van Stefan14 PHP gevorderde 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.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.223s