user2715202
user2715202

Reputation: 43

Convert from string "" to 'double' is not valid

im just a newbie in vb.net, i've searched google but i can't connect those to my problem or let say i still can't figure it... Im getting error to "Convert from string "qwerty" to 'double' is not valid".....................qwerty = Username i would really appreciate any help.

Dim conn As New OleDbConnection
    Dim cmd As New OleDbCommand
    Dim sSQL As String = String.Empty
    Try
        conn = New OleDbConnection(Get_Constring)
        conn.Open()
        cmd.Connection = conn
        cmd.CommandType = CommandType.Text
        If Me.txtusername.Tag = 0 Then
            sSQL = "INSERT INTO Instructor ( fname,  lname, mname, [password], [level], Username, Question, answer)"
            cmd.CommandText = sSQL
        Else
            sSQL = "UPDATE Instructor set fname = @first,  lname =  @last, mname = @initial, [password] = @pass, [level] =  @lvl, Question = @quest, answer = @ans WHERE  Username = @user"
            cmd.CommandText = sSQL
        End If
        cmd.Parameters.Add("@first", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtfname.Text)) > 0, Me.txtfname.Text, DBNull.Value)
        cmd.Parameters.Add("@last", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtlname.Text)) > 0, Me.txtlname.Text, DBNull.Value)
        cmd.Parameters.Add("@initial", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtinitial.Text)) > 0, Me.txtinitial.Text, DBNull.Value)
        cmd.Parameters.Add("@pass", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtpassword.Text)) > 0, Me.txtpassword.Text, DBNull.Value)
        cmd.Parameters.Add("@lvl", OleDbType.VarChar).Value = IIf(Len(Trim(Me.lbllevel.Text)) > 0, Me.lbllevel.Text, DBNull.Value)
        cmd.Parameters.Add("@quest", OleDbType.VarChar).Value = IIf(Len(Trim(Me.cmbquestion.Text)) > 0, Me.cmbquestion.Text, DBNull.Value)
        cmd.Parameters.Add("@ans", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtanswer.Text)) > 0, Me.txtanswer.Text, DBNull.Value)
        cmd.Parameters.Add("@user", OleDbType.VarChar).Value = txtusername.tag
        cmd.ExecuteNonQuery()

        If Me.txtusername.Tag = 0 Then
            cmd.CommandText = "Select @@Identity"
            Me.txtusername.Tag = cmd.ExecuteScalar()
        End If
        MsgBox("Data has been save.")
    Catch ex As Exception
        MsgBox(ErrorToString)
    Finally
        conn.Close()
    End Try

heres the perfect code but i change the Contact_ID to Username but i got and error i think its in ".tag" by the way. txtusername.tag is not actually 0..it has already value so it will only choose the UPDATE statement.

    Dim conn As New OleDbConnection
    Dim cmd As New OleDbCommand
    Dim sSQL As String = String.Empty
    Try
        conn = New OleDbConnection(Get_Constring)
        conn.Open()
        cmd.Connection = conn
        cmd.CommandType = CommandType.Text
        If Me.txtFirstName.Tag = 0 Then
            sSQL = "INSERT INTO tblAddressBook ( last_name,  mid_name, birth_date, gender, home_adr, bus_adr, tel_no, mobile_no, email)"
            sSQL = sSQL & "  VALUES(@last_name,  @mid_name, @birth_date, @gender, @home_adr, @bus_adr, @tel_no, @mobile_no, @email)"
            cmd.CommandText = sSQL
        Else
            sSQL = "UPDATE tblAddressBook set last_name = @last_name,  mid_name =  @mid_name, birth_date = @birth_date, gender = @gender"
            sSQL = sSQL & " ,home_adr = @home_adr, bus_adr = @bus_adr, tel_no = @tel_no, mobile_no = @mobile_no, email =  @email where contact_id = @id"
            cmd.CommandText = sSQL
        End If
        cmd.Parameters.Add("@last_name", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtLastName.Text)) > 0, Me.txtLastName.Text, DBNull.Value)
        cmd.Parameters.Add("@mid_name", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtMidName.Text)) > 0, Me.txtMidName.Text, DBNull.Value)

        cmd.Parameters.Add("@home_adr", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtHomeAdr.Text)) > 0, Me.txtHomeAdr.Text, DBNull.Value)
        cmd.Parameters.Add("@bus_adr", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtBusAdr.Text)) > 0, Me.txtBusAdr.Text, DBNull.Value)
        cmd.Parameters.Add("@tel_no", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtTelNo.Text)) > 0, Me.txtTelNo.Text, DBNull.Value)
        cmd.Parameters.Add("@mobile_no", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtMobNo.Text)) > 0, Me.txtMobNo.Text, DBNull.Value)
        cmd.Parameters.Add("@email", OleDbType.VarChar).Value = IIf(Len(Trim(Me.txtEmail.Text)) > 0, Me.txtEmail.Text, DBNull.Value)
        cmd.Parameters.Add("@id", OleDbType.Numeric).Value = Me.txtFirstName.Tag
        cmd.ExecuteNonQuery()

        'If the record is new then we have to get its ID so that we can edit it rightaway after the insertion.
        If Me.txtFirstName.Tag = 0 Then
            cmd.CommandText = "Select @@Identity"
            'Set textbox tag property with the ID of new record
            Me.txtFirstName.Tag = cmd.ExecuteScalar()
        End If
        MsgBox("Data has been save.")

    Catch ex As Exception
        MsgBox(ErrorToString)
    Finally
        conn.Close()
    End Try

Upvotes: 1

Views: 882

Answers (2)

user2715202
user2715202

Reputation: 43

I missed If Me.txtFirstName.Tag = 0 Then to Me.txtusername.Tag.ToString().Trim() = "0" and now its working :)

Upvotes: 0

Karl Anderson
Karl Anderson

Reputation: 34834

You are missing the VALUES portion of your INSERT statement, try it like this:

INSERT INTO Instructor (fname,  lname, mname, [password], [level], Username, Question, answer) 
VALUES (@fname, @last, @initial, @pass, @lvl, @user, @quest, @ans)

You are also not casting the Tag value properly in your parameter:

cmd.Parameters.Add("@user", OleDbType.VarChar).Value = CType(txtusername.tag, String)

Upvotes: 0

Related Questions