Error updating SQL server table with vb.net

I get a syntax error near dtTo. Not sure if dates are handled differently or if it is something else. The select statement is hitting the Case False. Code below...

 Dim con As New SqlConnection
        Dim cmd As New SqlCommand

        Try
            con.ConnectionString = sqlComm
            con.Open()
            cmd.Connection = con
            Select Case ysnNew
                Case False
                    cmd.CommandText = "Update tblLeads " & vbCrLf &
                       "SET strType  = @strType," & vbCrLf &
                            "numClient  = @numClient," & vbCrLf &
                            "strLast = @strLast," & vbCrLf &
                            "strFirst = @strFirst" & vbCrLf &
                            "dtTo = @dtTo, SqlDbTypes.DateTime" & vbCrLf &
                            "tmTo = @tmTo, sqldbtypes.Time" & vbCrLf &
                            "dtCTC = @dtCT, SqlDbTypes.DateTime" & vbCrLf &
                            "tmCTC = @tmCT, sqldbtypes.Time " & vbCrLf &
                            "strNotes = @strNotes" & vbCrLf &
                            "strResponse = @strResponse" & vbCrLf &
                            "strLeadType = @strLeadType" & vbCrLf &
                            "ysnBad = @ysnBad" & vbCrLf &
                            "ysnPhone = @ysnPhone" & vbCrLf &
                       "Where numLeadID = @numLeadID"
                Case Else
                    cmd.CommandText = "Insert Into tblLeads " & vbCrLf &
                            "strType  = @strType," & vbCrLf &
                            "numClient  = @numClient," & vbCrLf &
                            "strLast = @strLast," & vbCrLf &
                            "strFirst = @strFirst" & vbCrLf &
                            "dtTo = @dtTo, SqlDbTypes.DateTime" & vbCrLf &
                            "tmTo = @tmTo, sqldbtypes.Time" & vbCrLf &
                            "dtCTC = @dtCT, SqlDbTypes.DateTime" & vbCrLf &
                            "tmCTC = @tmCT, sqldbtypes.Time " & vbCrLf &
                            "strNotes = @strNotes" & vbCrLf &
                            "strResponse = @strResponse" & vbCrLf &
                            "strLeadType = @strLeadType" & vbCrLf &
                            "ysnBad = @ysnBad" & vbCrLf &
                            "ysnPhone = @ysnPhone" & vbCrLf & ""
            End Select
            cmd.Parameters.AddWithValue("@strType", Me.txtType.Text)
            cmd.Parameters.AddWithValue("@numClient", Me.txtClient.Text)
            cmd.Parameters.AddWithValue("@strLast", Me.txtlast.Text)
            cmd.Parameters.AddWithValue("@strFirst", Me.txtFirst.Text)
            cmd.Parameters.AddWithValue("@dtTo", Me.dtTO.Text)
            cmd.Parameters.AddWithValue("@tmTO", Me.tmTO.Text)
            cmd.Parameters.AddWithValue("@dtCT", Me.dtCT.Text)
            cmd.Parameters.AddWithValue("@tmCT", Me.dtCT.Text)
            cmd.Parameters.AddWithValue("@strNotes", Me.txtNotes.Text)
            cmd.Parameters.AddWithValue("@strResponse", Me.txtEmail.Text)
            cmd.Parameters.AddWithValue("@strLeadType", Me.cboVehicle.Text)
            cmd.Parameters.AddWithValue("@ysnBad", Me.chkBad.Text)
            cmd.Parameters.AddWithValue("@ysnPhone", Me.ysnPhone.Text)
            Select Case ysnNew
                Case False
                    cmd.Parameters.AddWithValue("@numLeadID", Me.txtID.Text)
            End Select
            cmd.ExecuteNonQuery()

        Catch ex As Exception
            MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records")
        Finally
            con.Close()
        End Try
smm6809Asked:
Who is Participating?
 
Éric MoreauConnect With a Mentor Senior .Net ConsultantCommented:
your date & time fields are surely incorrectly formatted. Can you try something like this (for all your date & time fields):
cmd.Parameters.AddWithValue("@dtTo", Me.dtTO.Value)

Open in new window


Here I suppose that dtTO is a datetimepicker control.
0
 
Éric MoreauSenior .Net ConsultantCommented:
one thing for sure, you are missing a comma on this line:

"strFirst = @strFirst," & vbCrLf &

Open in new window

0
 
Éric MoreauSenior .Net ConsultantCommented:
also, it is the fist time I see this syntax:

"dtTo = @dtTo, SqlDbTypes.DateTime" & vbCrLf &

Open in new window


I would be very surprised if you can specify a datatype like this! and I don't see any trace of if in the sql-bible: https://msdn.microsoft.com/en-us/library/ms177523.aspx
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
smm6809Author Commented:
Took SqlDbTypes.DateTime out of all places I referenced it. Fixed the comma issues and now getting: Error while inserting record... Conversion failed when converting date and/or time from character string.
0
 
smm6809Author Commented:
My time fields tmTO and tmCT don't like that. It says value is not a member of a textbox. I use a textbox for the user to enter the times (ie. 3:15 PM) because I have to measure how long it took for a task to be completed. Should I be doing it differently?
0
 
Éric MoreauSenior .Net ConsultantCommented:
and what is the datatype in the database?

You will need to convert your text to a datetime value probably
0
 
smm6809Author Commented:
In the database those fields are time(7)
0
 
Éric MoreauSenior .Net ConsultantCommented:
I never tried those. There is no real .Net equivalent. You could at least try to convert from text to datetime:
Dim dtmTime As DateTime = DateTime.Parse(tmTO.Text)
cmd.Parameters.AddWithValue("@tmTO", dtmTime)

Open in new window

0
 
smm6809Author Commented:
That worked. Just have one question. Is there a way to format date and time to read month/day/year instead of the other way around?
0
 
Éric MoreauSenior .Net ConsultantCommented:
read/format from where?
0
 
smm6809Author Commented:
In the sql table the date is formatted 2016-05-09. Does that have to be the format or can it be 05-09-2016?
0
 
Éric MoreauSenior .Net ConsultantCommented:
it is usually not the job of SQL server to format dates.

but if you really need, you can use Format:
SELECT FORMAT(GETDATE(), 'MM-dd-yyyy')

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.