By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,960 Members | 987 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,960 IT Pros & Developers. It's quick & easy.

OleDbException was unhandled: Number of query values and destination fields are not t

P: 1
Dear fellow programmers,

I am coping with this problem for 6 days already and nearly gonna give up. All I want is when I click the 'Save' button it will add to the database and datagridview. This is my following code:

In Module 2:

Expand|Select|Wrap|Line Numbers
  1. Module Module2
  2.     Public con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\EncodingComplete.accdb")
  3. End Module
  4.  
In frmEncode:
Expand|Select|Wrap|Line Numbers
  1. Public Class frmEncode
  2.     Public Sub Add_Data()
  3.  
  4.         con.Open()
  5.  
  6.         Dim rs As New OleDb.OleDbCommand("Insert Into EncodingComplete(Client, Address, Date_Bill, BusStyle_Name, Vessel, TIN, Port, [Pier No], InterPleader1, InterPleader2, Call_Date, Call_Time, Call_VoyageNo, Call_ReceiveBy, VesselType, VesselCalls, FixedFee_ExcessCum, FixedFee_Amount, FixedFee_Rate, FixedFee_Total, OilyExcessCum, OilyRate, OilyAmnt, OilyTotal, GarbageExcessCum, GarbageRate, GarbageAmnt, GarbageTotal, NoxiousExcessCum, NoxiousRate, NoxiousAmnt, NoxiousTotal, Other, OtherExcessCum, OtherRate, OtherAmnt, OtherTotal, DollarConvers, AmountDue, PaymentDetails, TypeofPayment, DateofPayment, OrNo, Amount, Collector, BI, CSR) VALUES('" & ComboBoxEx1.Text & "', '" & TextBoxX1.Text & "', '" & DateTimePicker1.Text & "', '" & TextBoxX11.Text & "', '" & TextBoxX2.Text & "', '" & TextBoxX3.Text & "', '" & ComboBoxEx2.Text & "', '" & TextBoxX12.Text & "', '" & ComboBoxEx4.Text & "', '" & ComboBoxEx5.Text & "', '" & TextBoxX6.Text & "', '" & TextBoxX9.Text & "', '" & TextBoxX4.Text & "', '" & TextBoxX10.Text & "', '" & ComboBoxEx3.Text & "', '" & ComboBoxEx8.Text & "', '" & TextBoxX14.Text & "', '" & TextBoxX40.Text & "', '" & TextBoxX31.Text & "', '" & TextBoxX49.Text & "', '" & TextBoxX16.Text & "', '" & TextBoxX29.Text & "', '" & TextBoxX38.Text & "', '" & TextBoxX47.Text & "', '" & TextBoxX15.Text & "', '" & TextBoxX30.Text & "', '" & TextBoxX39.Text & "', '" & TextBoxX48.Text & "', '" & TextBoxX17.Text & "', '" & TextBoxX28.Text & "', '" & TextBoxX37.Text & "', '" & TextBoxX46.Text & "', '" & TextBoxX13.Text & "', '" & TextBoxX18.Text & "', '" & TextBoxX8.Text & "', '" & TextBoxX36.Text & "', '" & TextBoxX45.Text & "', '" & TextBoxX50.Text & "', '" & TextBoxX51.Text & "', '" & TextBoxX52.Text & "', '" & ComboBoxEx7.Text & "', '" & TextBoxX53.Text & "', '" & TextBoxX54.Text & "', '" & TextBoxX55.Text & "', '" & TextBoxX56.Text & "')", con)
  7.         rs.ExecuteNonQuery()
  8.         con.Close()
  9.         Display_Data()
  10.     End Sub
  11.  
  12.     Private Sub Display_Data()
  13.         con.Open()
  14.         Dim dt As New DataTable("EncodingComplete")
  15.         Dim rs As New OleDb.OleDbDataAdapter("Select * from EncodingComplete", con)
  16.         rs.Fill(dt)
  17.         DataGridViewX1.DataSource = dt
  18.         DataGridViewX1.Refresh()
  19.  
  20.         rs.Dispose()
  21.  
  22.         con.Close()
  23.  
  24.     End Sub
  25.  
  26.     Private Sub ButtonX10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonX10.Click
  27.         Add_Data()
  28.  
  29.  
  30.     End Sub
  31.  
The error throws at rs.ExecuteNonQuery() which says 'OleDbException was unhandled: Number of query values and destination fields are not the same.'

Please help me. Any suggestions would be appreciated.
Dec 28 '14 #1
Share this Question
Share on Google+
1 Reply


Frinavale
Expert Mod 5K+
P: 9,731
The Insert statement expects the number of values provided to match the number of columns that you are populating.

This is what you have:
Expand|Select|Wrap|Line Numbers
  1. Insert Into EncodingComplete(
  2. Client, Address, Date_Bill, BusStyle_Name, 
  3. Vessel, TIN, Port, [Pier No], 
  4. InterPleader1, InterPleader2, Call_Date, Call_Time, 
  5. Call_VoyageNo, Call_ReceiveBy, VesselType, VesselCalls, 
  6. FixedFee_ExcessCum, FixedFee_Amount, FixedFee_Rate, FixedFee_Total,
  7. OilyExcessCum, OilyRate, OilyAmnt, OilyTotal, 
  8. GarbageExcessCum, GarbageRate, GarbageAmnt, GarbageTotal, 
  9. NoxiousExcessCum, NoxiousRate, NoxiousAmnt, NoxiousTotal, 
  10. Other, OtherExcessCum, OtherRate, OtherAmnt, 
  11. OtherTotal, DollarConvers, AmountDue, PaymentDetails, 
  12. TypeofPayment, DateofPayment, OrNo, Amount, 
  13. Collector, BI, CSR) 
  14. VALUES('" & ComboBoxEx1.Text & "', '" & TextBoxX1.Text & "', '" & DateTimePicker1.Text & "', '" & TextBoxX11.Text & "', 
  15. '" & TextBoxX2.Text & "', '" & TextBoxX3.Text & "', '" & ComboBoxEx2.Text & "', '" & TextBoxX12.Text & "', 
  16. '" & ComboBoxEx4.Text & "', '" & ComboBoxEx5.Text & "', '" & TextBoxX6.Text & "', '" & TextBoxX9.Text & "', 
  17. '" & TextBoxX4.Text & "', '" & TextBoxX10.Text & "', '" & ComboBoxEx3.Text & "', '" & ComboBoxEx8.Text & "', 
  18. '" & TextBoxX14.Text & "', '" & TextBoxX40.Text & "', '" & TextBoxX31.Text & "', '" & TextBoxX49.Text & "', 
  19. '" & TextBoxX16.Text & "', '" & TextBoxX29.Text & "', '" & TextBoxX38.Text & "', '" & TextBoxX47.Text & "', 
  20. '" & TextBoxX15.Text & "', '" & TextBoxX30.Text & "', '" & TextBoxX39.Text & "', '" & TextBoxX48.Text & "', 
  21. '" & TextBoxX17.Text & "', '" & TextBoxX28.Text & "', '" & TextBoxX37.Text & "', '" & TextBoxX46.Text & "', 
  22. '" & TextBoxX13.Text & "', '" & TextBoxX18.Text & "', '" & TextBoxX8.Text & "', '" & TextBoxX36.Text & "', 
  23. '" & TextBoxX45.Text & "', '" & TextBoxX50.Text & "', '" & TextBoxX51.Text & "', '" & TextBoxX52.Text & "', 
  24. '" & ComboBoxEx7.Text & "', '" & TextBoxX53.Text & "', '" & TextBoxX54.Text & "', '" & TextBoxX55.Text & "', 
  25. '" & TextBoxX56.Text & "')
Notice how there are 47 column names and only 45 values supplied?

This is the root of your problem.


Please note that it is very hard to identify if you what you are supplying as the values to your SQL insert command.

You should be using OleDbCommand.Parameters Property instead. This not only helps with readability and debugging but also avoids SQL insertion attacks and uses cache...

Consider the following:
Expand|Select|Wrap|Line Numbers
  1. Dim cmdText As String = "Insert Into EncodingComplete(Client, Address, Date_Bill, BusStyle_Name, Vessel, TIN, Port, [Pier No], InterPleader1, InterPleader2, Call_Date, Call_Time, Call_VoyageNo, Call_ReceiveBy, VesselType, VesselCalls, FixedFee_ExcessCum, FixedFee_Amount, FixedFee_Rate, FixedFee_Total, OilyExcessCum, OilyRate, OilyAmnt, OilyTotal, GarbageExcessCum, GarbageRate, GarbageAmnt, GarbageTotal, NoxiousExcessCum, NoxiousRate, NoxiousAmnt, NoxiousTotal, Other, OtherExcessCum, OtherRate, OtherAmnt, OtherTotal, DollarConvers, AmountDue, PaymentDetails, TypeofPayment, DateofPayment, OrNo, Amount, Collector, BI, CSR) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
  2. Dim cmd As OleDbCommand = New OleDbCommand(cmdText, con)
  3. cmd.CommandType = CommandType.Text ‘ The default is CommandType.Text
  4. With cmd.Parameters
  5.   .Add("@Client", OleDbType.VarChar).Value = ComboBoxEx1.Text
  6.   .Add("@Address", OleDbType.VarChar).Value =  TextBoxX1.Text
  7.   '...
  8.   ' Continue adding parameters with values that match...
  9.   ' Please note that the order in which you add your
  10.   ' parameters must match the order of the columns
  11.   ' in your insert statement
  12. End With
  13. cmd.ExecuteNonQuery()
Jan 5 '15 #2

Post your reply

Sign in to post your reply or Sign up for a free account.