ERROR: No value given for one or more required parameters

Hi:

We're creating a web application with VS 2010 using Visual Basic.

We'd like to update an record in an access database table using GridView

For some reason, when we run the code, the program crashed with the following error: No value is given for one or more required parameters

We've checked again and again but could not find anything missing: each record in GridView has 3 fields: OrderID (text - primary key), Amount (double), and Tax (double). We wanted to update the field Amount of the 1st record in GridView. When we click "Update", it crashed.

If you've some idea why it crashed, please help.

We added the code below.

Thanks a lot,

Somits

//----------------------------------------------------------------


 <asp:Panel ID="Panel1" runat="server"


           style="z-index: 1; left: 197px; top: 242px; position:
absolute; height: 57px; width: 531px">
           <asp:AccessDataSource ID="AccessDataSource1" runat="server"
               DataFile="~/App_Data/ACCESSDB_8.accdb"
               DeleteCommand="DELETE FROM [vb_access_db8_tb1] WHERE
(([OrderID] = ?) OR ([OrderID] IS NULL AND ? IS NULL))"
               InsertCommand="INSERT INTO [vb_access_db8_tb1]
([OrderID], [Amount], [Tax]) VALUES (?, ?, ?)"
               SelectCommand="SELECT * FROM [vb_access_db8_tb1]"
               UpdateCommand="UPDATE [vb_access_db8_tb1] SET [Amount]
= ?, [Tax] = ? WHERE (([OrderID] = ?) OR ([OrderID] IS NULL AND ? IS
NULL))">
               <DeleteParameters>
                   <asp:Parameter Name="OrderID" Type="String" />
               </DeleteParameters>
               <InsertParameters>
                   <asp:Parameter Name="OrderID" Type="String" />
                   <asp:Parameter Name="Amount" Type="Double" />
                   <asp:Parameter Name="Tax" Type="Double" />
               </InsertParameters>
               <UpdateParameters>
                   <asp:Parameter Name="Amount" Type="Double" />
                   <asp:Parameter Name="Tax" Type="Double" />
                   <asp:Parameter Name="OrderID" Type="String" />
               </UpdateParameters>
           </asp:AccessDataSource>
       </asp:Panel>

       <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
           AllowSorting="True" AutoGenerateColumns="False"
AutoGenerateDeleteButton="True"
           AutoGenerateEditButton="True" AutoGenerateSelectButton="True"
           DataKeyNames="OrderID" DataSourceID="AccessDataSource1"
           style="z-index: 1; left: 204px; top: 354px; position:
absolute; height: 127px; width: 470px">
           <Columns>
               <asp:BoundField DataField="OrderID"
HeaderText="OrderID" ReadOnly="True"
                   SortExpression="OrderID" />
               <asp:BoundField DataField="Amount" HeaderText="Amount"
                   SortExpression="Amount" />
               <asp:BoundField DataField="Tax" HeaderText="Tax"
SortExpression="Tax" />
           </Columns>
       </asp:GridView>
somitsAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
PaulHewsConnect With a Mentor Commented:
Your Update command has 4 parameters.

UpdateCommand="UPDATE [vb_access_db8_tb1] SET [Amount]
= ?, [Tax] = ? WHERE (([OrderID] = ?) OR ([OrderID] IS NULL AND ? IS
NULL))"

You must provide a value for every parameter or change your command.
0
 
somitsAuthor Commented:
Hi PaulHews:

You're right. I didn't set the Primary Key field OrderID as Required in the Access table.
Therefore, VS generates more ? in the command statement of update.

Thanks so much for your help.

Somits
0
 
somitsAuthor Commented:
Everything works correctly now.

Really appreciated,

Somits
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.