date exception -

Posted on 2014-08-05
Last Modified: 2014-08-05
I am using the following statement on one of the page and I get an error sometimes if the user is outside the GB format
            Dim Query As String = "UPDATE IQResults SET IsCompleted='True', EndTime=GetDate() Where resultid =(SELECT max(resultid) FROM IQResults  where CustomerID='" & CustomerID & "')"
                Dim MyCommand As SqlCommand = New SqlCommand(Query, MySqlConnection)
                pnlTestComplete.Visible = True

>>InvalidCastException: Conversion from string "26/03/1991" to type 'Date' is not valid.

Can someone please advice how can I fix this?
Question by:allanlorriman
    LVL 83

    Accepted Solution

    You can try and apply same date format on both sides

    so change


    Convert(DateTime, EndTime, 103)=Convert(DateTime, GetDate(), 103)

    Author Comment

    thanks Codecruiser, I have updated the code I still get the same error, this must be because I am fetching customers dob and passiing to the to the function to check date and perform certain actions. ..

    >> System.InvalidCastException: Conversion from string "19/07/1964" to type 'Date' is not valid.

    please can you advice whats wrong with this code?

      ds = GetCustomerContactDetails(CustomerID)
            If ds.Tables(0).Rows.Count > 0 Then
                      ContactDetails.DateOfBirth = ds.Tables(0).Rows(0).Item("CustDOB")
            End If
     GetResult = IsPass(CustomerID, TestID, GiftCodeID, ContactDetails.DateOfBirth)
      Public Shared Function IsPass(ByVal CustomerID As Integer, ByVal TestID As Integer, ByVal ID As String, ByVal DateOfBirth As Date) As Integer
            Dim dbconn As SqlConnection
            Dim dbcomm As SqlCommand
            Dim dbread As SqlDataReader
            Dim SQL As String
            Dim IQScore, VarF As Decimal
            Dim VarAge As Integer
            dbconn = New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
            SQL = "SELECT Count(*) As Total FROM Answers WHERE TestID = '" & TestID & "'" & _
                  " AND CustomerID = '" & CustomerID & "' AND Correct = '1'"
            dbcomm = New SqlCommand(SQL, dbconn)
            dbread = dbcomm.ExecuteReader()
            If dbread.HasRows Then
                'If dbread("Total") > 24 Then
                '    Return 1
                'End If
                IQScore = Int(dbread("Total").ToString()) 'get the total correct answers
                If IQScore > 35 Then
                    IQScore = "140+"
                ElseIf IQScore > 29 Then
                    IQScore = CLng(131 + ((IQScore - 30) * 1.6))
                ElseIf IQScore > 24 Then
                    IQScore = CLng(120 + ((IQScore - 25) * 2.5))
                ElseIf IQScore > 19 Then
                    IQScore = CLng(110 + ((IQScore - 20) * 2.25))
                ElseIf IQScore > 13 Then
                    IQScore = CLng(90 + ((IQScore - 14) * 1.8))
                ElseIf IQScore > 11 Then
                    IQScore = CLng(80 + ((IQScore - 12) * 9))
                ElseIf IQScore > 8 Then
                    IQScore = CLng(70 + ((IQScore - 9) * 4.5))
                ElseIf IQScore > 3 Then
                    IQScore = CLng(50 + ((IQScore - 4) * 4.75))
                    IQScore = "50"
                End If
                VarAge = WebFunctions.Age(DateOfBirth) 'certain age groups.
                If VarAge = 13 Then
                    VarF = 1.25
                ElseIf VarAge = 14 Then
                    VarF = 1.2
                ElseIf VarAge = 15 Then
                    VarF = 1.15
                ElseIf VarAge = 16 Then
                    VarF = 1.1
                ElseIf VarAge = 17 Then
                    VarF = 1.05
                    VarAge = 18
                    VarF = 1
                End If
                If IQScore = "140+" Then
                    IQScore = "140+"
                    IQScore = (IQScore * VarF)
                End If
                ' IQScore = (IQScore * VarF)   'until here
                Registration.StoreTest(ID, IQScore)
            End If
            Return 0
        End Function

    Open in new window


    Author Comment

    where as contactdetails.dateofbirth is

     Public Property DateOfBirth() As String
                Return Me._DateOfBirth
            End Get
            Set(ByVal value As String)
                Me._DateOfBirth = value
            End Set
        End Property

    Author Comment

      Public Shared Function Age(ByVal Birthdate As System.DateTime) As Long
                Dim CurrentDate As System.DateTime = System.DateTime.Today
                Select Case Month(Birthdate)
                    Case Is < Month(System.DateTime.Today)
                        Age = DateDiff("YYYY", Birthdate, Now())
                    Case Is = Month(CurrentDate)
                        Select Case Day(Birthdate)
                            Case Is < Day(CurrentDate)
                                Age = DateDiff("YYYY", Birthdate, Now())
                            Case Is = Day(CurrentDate)
                                Age = DateDiff("YYYY", Birthdate, Now())
                            Case Is > Day(CurrentDate)
                                Age = DateDiff("YYYY", Birthdate, Now()) - 1
                        End Select
                    Case Is > Month(CurrentDate)
                        Age = DateDiff("YYYY", Birthdate, Now()) - 1
                    Case Else
                        Age = 0
                End Select
            Catch ex As System.Exception
                'Error handling code does here
            End Try
        End Function

    Open in new window


    Author Closing Comment

    Thanks CodeCruiser

    For my other query I will open a new question...
    LVL 69

    Expert Comment

    by:Éric Moreau
    why is your property (Public Property DateOfBirth() As String) declared as a string?

    Author Comment


    Author Comment

    Hi Eric
    thanks for looking into  this for me, it was one of the old property which was being used elsewhere as well, I thought I could reuse in the code...
    this is causing a problem now, can you advice a solution please? do not want to change the property as its being in reference on other places...
    thank you
    LVL 69

    Expert Comment

    by:Éric Moreau
    Create another readonly property that would return a DateOfBirth in datetime format to pass to your methods

    Featured Post

    Why You Should Analyze Threat Actor TTPs

    After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

    Join & Write a Comment

    Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
    Microsoft Reports are based on a report definition, which is an XML file that describes data and layout for the report, with a different extension. You can create a client-side report definition language (*.rdlc) file with Visual Studio, and build g…
    To add imagery to an HTML email signature, you have two options available to you. You can either add a logo/image by embedding it directly into the signature or hosting it externally and linking to it. The vast majority of email clients display l…
    Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…

    733 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

    17 Experts available now in Live!

    Get 1:1 Help Now