Solved

Filtering DataGridView with Date   Cannot perform '=' operation on System.DateTime and System.String

Posted on 2006-11-27
10
1,248 Views
Last Modified: 2008-01-09
Error Message: Cannot perform '=' operation on System.DateTime and System.String

I have a Dataset with date values that look like "11/23/2006" , that format.
I am trying to use a combobox to sort datagridview to only show things concerning tomorrow.

Pretty simple but I keep getting that error message. I have made my column in the dataset a String type

            string dt = DateTime.Today.AddDays(01).ToShortDateString() ;
            if (sortBox.Text == "Due Tomorrow")
            {
                dsAssignment.assignmentsTable.DefaultView.RowFilter = "dueDate = " + dt + "";
            }

            else
            {
            }
0
Comment
Question by:JasonWinn
  • 6
  • 3
10 Comments
 
LVL 9

Expert Comment

by:DrAske
ID: 18026021
>>  dsAssignment.assignmentsTable.DefaultView.RowFilter = "dueDate = " + dt + "";
add single quote
    dsAssignment.assignmentsTable.DefaultView.RowFilter = "dueDate = '" + dt + "'";
0
 
LVL 3

Author Comment

by:JasonWinn
ID: 18033402
hey DrAske,

I gave that a shot but it is not filtering for some reason. I get no error message but it does not filter. I have records in the "dueDate" column for tomorrow (11/29/2006) and everything appears to be correct but not filtering happening

any ideas?

thanks

        private void sortBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            string dt = DateTime.Today.AddDays(01).ToShortDateString() ;
         
            if (sortBox.Text == "Due Tomorrow")
            {
                dsAssignment.assignmentsTable.DefaultView.RowFilter = "dueDate = '" + dt + "'";
                this.assingmentListDataGridView.Refresh();
            }

            else
            {
            }
        }
0
 
LVL 9

Expert Comment

by:DrAske
ID: 18034836
>>I gave that a shot but it is not filtering for some reason
That means the first Error Msg has gone.
>> I get no error message but it does not filter
what kind of errors?? compile-time error or it gives you an exception??
>> string dt = DateTime.Today.AddDays(01).ToShortDateString() ;
If you try to print out *dt* you will get something like this "11/29/2006 12:00:00 AM", and I think that's why no filtering happens !! So try this:

private void sortBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            string dt = DateTime.Today.AddDays(01).ToShortDateString() ;
           string[] d = dt.split(' '); // tokenize the string
            if (sortBox.Text == "Due Tomorrow")
            {
                dsAssignment.assignmentsTable.DefaultView.RowFilter = "dueDate = '" + d[0]+ "'"; // d[0] is "11/29/2006"
                this.assingmentListDataGridView.Refresh();
            }

            else
            {
          /// ...
            }
        }

try it, and post back the result..
regards,Ahmad;
0
 
LVL 3

Author Comment

by:JasonWinn
ID: 18042098
Hey Ahmad,
I gave it a shot, and no error message, but no filtering.

I made a label.Text = d[0]; and the result was "11/30/2006" so its doing the correct date, but not sure why it isnt actually filtering.

Jason
0
 
LVL 3

Author Comment

by:JasonWinn
ID: 18042962
Maybe there is an easier way? All I would like to be able to do is filter out date's/ranges of my datagridview/dataset.

my goal is to have the user click "filter by things for tomorrow" or "filter for things this week".

maybe there is something easier for filtering with dates?

Jason
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 3

Author Comment

by:JasonWinn
ID: 18042975
Maybe the problem is elsewhere, even doing this not filter out things for 11/30/2006, everything remains visible

            if (sortBox.Text == "Due Tomorrow")
            {
                dsAssignment.assignmentsTable.DefaultView.RowFilter = "dueDate = '11/30/2006'"; // d[0] is "11/29/2006"
                assingmentListDataGridView.Refresh();
     
            }

            else
            {
                /// ...
            }
0
 
LVL 3

Author Comment

by:JasonWinn
ID: 18043015
I am really confused now.... even a simple statement like this is not working.

 If I have this right, this should only display rows containing "hi" in the description column in my DataGridView?

 this.dsAssignment.assignmentsTable.DefaultView.RowFilter = "description = 'hi'";
// Does Not Work
0
 
LVL 9

Expert Comment

by:DrAske
ID: 18043357
OK!! I can't see anything wrong in your code!! but try to add output statement inside the *if* statement to notify you when it is executed. If it doesn't!! then the problem is in the *if* condition.

 if (sortBox.Text == "Due Tomorrow")
            {
                MessageBox.Show("IT'S OK!!");
                dsAssignment.assignmentsTable.DefaultView.RowFilter = "dueDate = '11/30/2006'"; // d[0] is "11/29/2006"
                assingmentListDataGridView.Refresh();
     
            }
0
 
LVL 3

Author Comment

by:JasonWinn
ID: 18046017
Hey DrAske,
I did that and that works fine and the messagebox comes up.

Whats really interesting is, I made label1.Text = d[0], and the label would show 11/30/2006....
im wondernig if it is because my dataset is being loaded from an xml file? the xml file shows 11/30/2006, without any hours, minutes or seconds.

Thanks for your help so far!
jason
0
 
LVL 3

Accepted Solution

by:
bromose earned 500 total points
ID: 18066701
Hi

Your date string in your filter needs to be formatet as:

#" + date.Month + "/" + date.Day + "/" + date.Year + "#"

Regards,
Kaj Bromose
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Extention Methods in C# 3.0 by Ivo Stoykov C# 3.0 offers extension methods. They allow extending existing classes without changing the class's source code or relying on inheritance. These are static methods invoked as instance method. This…
Article by: Najam
Having new technologies does not mean they will completely replace old components.  Recently I had to create WCF that will be called by VB6 component.  Here I will describe what steps one should follow while doing so, please feel free to post any qu…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.
I designed this idea while studying technology in the classroom.  This is a semester long project.  Students are asked to take photographs on a specific topic which they find meaningful, it can be a place or situation such as travel or homelessness.…

929 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now