Toon posts:

C# DateTime in DataColumns vergelijken

Pagina: 1
Acties:
  • 107 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik probeer een soortemet SQL BETWEEN uit te voeren op 2 DataTables, maar ik krijg als error:

code:
1
'Cannot implicitly convert type 'System.Data.DataColumn' to 'System.DateTime'



De volgende datatables bestaan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//tabel 1:
DataTable dtCalendar = new DataTable("curCalendar");
dsSearch.Tables.Add(dtCalendar); // Add table to the DataSet
dtCalendar.Columns.Add("dDate",Type.GetType("System.DateTime"), "");
dtCalendar.Columns.Add("lFree", Type.GetType("System.Boolean"), "");
dtCalendar.Columns.Add("nDaysFree", Type.GetType("System.Int32"), "");

//tabel 2:
DataTable dtReservation = new DataTable("curReservation");
dsSearch.Tables.Add(dtReservation); // Add table to the DataSet
dtReservation.Columns.Add("id",Type.GetType("System.Int32"), "");
dtReservation.Columns.Add("iProduct",   Type.GetType("System.Int32"), "");
dtReservation.Columns.Add("dFrom",Type.GetType("System.DateTime"), "");
dtReservation.Columns.Add("dTill",Type.GetType("System.DateTime"), "");
dtReservation.Columns.Add("nCount",Type.GetType("System.Int32"), "");


nu wil dus dat de dDate in dtCalendar tussen dFrom en dTill in dtReservation ligt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
foreach(DataRow rwCalendar in dsSearch.Tables["curCalendar"].Rows){
foreach (DataRow rwReservation in dsSearch.Tables["curReservation"].Rows){
    DateTime __dFrom = rwReservation.Table.Columns["dFrom"];
    DateTime __dDate = rwCalendar.Table.Columns["dDate"];
    DateTime __dTill = rwReservation.Table.Columns["dTill"];
    int rel1 = DateTime.Compare(__dFrom, __dDate);
    int rel2 = DateTime.Compare(__dDate, __dTill);
    if(rel1 < 0 && rel2 < 0){
        // do some adding to a new datatable
    }
}
}


Een cast (DateTime) voor de columns in de vergelijking werkt ook niet

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Iets zegt met dat je
C#:
1
DateTime __dFrom = rwReservation.Item["dFrom"]; 

moet hebben.

[ Voor 43% gewijzigd door gorgi_19 op 05-06-2003 11:32 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Op welke regl krijg je die fout?

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 05 June 2003 @ 11:27:
Op welke regl krijg je die fout?
hierzo:

code:
1
DateTime __dFrom = rwReservation.Table.Columns["dFrom"];


Het Item Property kent ie niet in de DataColumnCollection, terwijl ie wel in de documentatie staat??? :?

[copy]
'System.Data.DataColumnCollection' does not contain a definition for 'Item'
[/code]

[ Voor 35% gewijzigd door Verwijderd op 05-06-2003 11:35 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Werkt het ook niet als je het op de volgende manier cast:

code:
1
DateTime __dFrom = Convert.ToDateTime (rwReser.......);


PS: waarom gebruik jij 2 underscores?

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 05 June 2003 @ 11:37:
Werkt het ook niet als je het op de volgende manier cast:

code:
1
DateTime __dFrom = Convert.ToDateTime (rwReser.......);


PS: waarom gebruik jij 2 underscores?
was even aan t testen geweest, en even daarvoor zat nog zo'n variable. Zie t als een stukje luiig heid....
:*)

P.S. Dat werkt!!!! Nu nog even kijken of ie t netjes omzet ....

[ Voor 9% gewijzigd door Verwijderd op 05-06-2003 11:41 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Verwijderd schreef op 05 June 2003 @ 11:34:
[...]


hierzo:

code:
1
DateTime __dFrom = rwReservation.Table.Columns["dFrom"];


Het Item Property kent ie niet in de DataColumnCollection, terwijl ie wel in de documentatie staat??? :?

[copy]
'System.Data.DataColumnCollection' does not contain a definition for 'Item'
[/code]
C# kent idd de property Item niet. In C# is dat de indexer voor de DataRow.

Als je dus in C# volgende code ziet:
code:
1
drMyDataRow["acolumn"]

is dat dus gelijk aan volgende vb.net code:
code:
1
drMyDataRow.Item["acolumn"]

https://fgheysels.github.io/


  • dominic
  • Registratie: Juli 2000
  • Laatst online: 21-08 19:07

dominic

will code for food

Probeer:

DateTime.Parse(args); (Gebruik ik meestal)
of
new DateTime(args);

Zet alles wel ff netjes in een try{}catch{} zodat je kunt checken of de datum wel geldig is etc..

Download my music on SoundCloud


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 05 June 2003 @ 11:43:
is dat dus gelijk aan volgende vb.net code:
code:
1
drMyDataRow.Item["acolumn"]
:+
Visual Basic .NET:
1
drMyDataRow.Item("acolumn")

Echter, vb.net kent ook:
Visual Basic .NET:
1
drMyDataRow("acolumn")

iig nooit geweten dat C# die property niet kende :?

[ Voor 31% gewijzigd door gorgi_19 op 05-06-2003 11:47 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
In C# moet je minder typen. :P :+
C# kent indexers ('k weet niet of VB.NET dat ook kent).

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 05 June 2003 @ 11:53:
In C# moet je minder typen. :P :+
C# kent indexers ('k weet niet of VB.NET dat ook kent).
gorgi_19 schreef op 05 June 2003 @ 11:46:
Echter, vb.net kent ook:
Visual Basic .NET:
1
drMyDataRow("acolumn")
Weinig verschil met de C# versie. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

stond in de documentatie (maar niet al te duidelijk...ofwel is m'n Engels niet zo goed):

Item Overloaded. Gets the value of a column in its native format.
In C#, this property is the indexer for the SqlDataReader class.

ik heb dat eergisteren ook uitgevogeld, ik vond het wel zéér raar.

nog raarder was dat een datareader.HasRows (en hoofdletters klopten en al) niet gekend was...terwijl hij ook zo in de documentatie staat.
Van onduidelijk naar fout?
Pagina: 1