Click here to Skip to main content
15,888,610 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
whenever I run the form I got an error that "data type mismatch in criteria expression"

What I have tried:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a As Integer
        a = EMI_AmountTextBox.Text
        Dim b As Integer
        b = Late_Fine_ChargeTextBox.Text

        Total_AmountTextBox.Text = a + b 'Late_Fine_ChargeTextBox.Text + EMI_AmountTextBox.Text

        provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
        datafile = "C:\asp.net\Loan Management System\Database\Receive_emi.mdb"
        connString = provider & datafile
        myConnection.ConnectionString = connString
        myConnection.Open()
        Dim str As String
        str = "Insert into Receive_emi([C_ID],[ReceiptNo],[No_of_payment],[Receipt_Date],[EMI__Date],[EMI_Amount],[Late_Fine_Charge],[Total_Amount])values(?,?,?,?,?,?,?,?)"
        Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)

        cmd.Parameters.Add(New OleDbParameter("C_ID", CType(C_IDTextBox.Text, String)))
        cmd.Parameters.Add(New OleDbParameter("ReceiptNo", CType(ReceiptNoTextBox.Text, String)))
        cmd.Parameters.Add(New OleDbParameter("No_of_payment", CType(No_of_paymentTextBox.Text, String)))
        cmd.Parameters.Add(New OleDbParameter("Receipt_Date", CType(Receipt_DateDateTimePicker.Text, String)))
        cmd.Parameters.Add(New OleDbParameter("EMI__Date", CType(EMI__DateDateTimePicker.Text, String)))
        cmd.Parameters.Add(New OleDbParameter("EMI_Amount", CType(EMI_AmountTextBox.Text, String)))
        cmd.Parameters.Add(New OleDbParameter("Late_Fine_Charge", CType(Late_Fine_ChargeTextBox.Text, String)))
        cmd.Parameters.Add(New OleDbParameter("Total_Amount", CType(Total_AmountTextBox.Text, String)))
        Try
            cmd.ExecuteNonQuery()
            cmd.Dispose()
            myConnection.Close()
            Me.Hide()

            User_Home_page.Show()


        Catch ex As Exception

            MsgBox(ex.Message)
       End Try

    End Sub
Posted
Updated 14-Apr-17 4:15am
v2
Comments
CHill60 12-Apr-17 15:24pm    
In which line of code?
And why are you converting Text to String when it is already a string?

Ok .. I think it is the way you are handling your parameters. Try this instead:
VB
cmd.Parameters.AddWithValue("C_ID", C_IDTextBox.Text)
cmd.Parameters.AddWithValue("ReceiptNo", ReceiptNoTextBox.Text)
cmd.Parameters.AddWithValue("No_of_payment", No_of_paymentTextBox.Text)
cmd.Parameters.AddWithValue("Receipt_Date", Receipt_DateDateTimePicker.Value)
cmd.Parameters.AddWithValue("EMI__Date", EMI__DateDateTimePicker.Value)
cmd.Parameters.AddWithValue("EMI_Amount", EMI_AmountTextBox.Text)
cmd.Parameters.AddWithValue("Late_Fine_Charge", Late_Fine_ChargeTextBox.Text)
cmd.Parameters.AddWithValue("Total_Amount", Total_AmountTextBox.Text)
 
Share this answer
 
Comments
Ralf Meier 14-Apr-17 10:17am    
I'm not sure if your approach is right.
Normally an (un-necessary) conversion from String to String doesn't result an Error ...
CHill60 17-Apr-17 8:12am    
In my solution I'm advocating use of AddWithValue rather than just Add. The comment about unnecessary conversion was in an earlier...er...comment
Ralf Meier 17-Apr-17 8:18am    
I'm sorry ... you are right ... I haven't realized that :(
ZurdoDev 14-Apr-17 11:04am    
+5. Much simpler code. Less prone to errors.
My intension is this :
VB
Dim a As Integer = cint(EMI_AmountTextBox.Text)
Dim b As Integer = cint(Late_Fine_ChargeTextBox.Text)

Total_AmountTextBox.Text = (a + b).toString   'Late_Fine_ChargeTextBox.Text + EMI_AmountTextBox.Text
 
Share this answer
 
Comments
ZurdoDev 14-Apr-17 11:05am    
Is this a solution for the question? It does not look like one.
Ralf Meier 14-Apr-17 11:26am    
No ... it is a (I think the) Solution.
I'm sorry if you understood it as question ...
ZurdoDev 14-Apr-17 11:29am    
It does not look like a solution for the question that was asked.
Ralf Meier 14-Apr-17 11:37am    
Of course ... it is :
You cant assign the addition of 2 Integers to a String(-Variable) without conversion.

Because I don't have the whole source-code I can't check if the cmd.Parameters really accept strings or something complete different ...
ZurdoDev 14-Apr-17 11:44am    
TryParse would be better, in my opinion.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900