3
votes

I have a gridview of my table. I established a AccsessDataSource to my database. The Accsess datasource is configured so the sql scentance is: SELECT * FROM [Users] In the advanced settings I checked "Generate INSERT, UPDATE, and delete statements" I enabled editing and deleting. My source code shows this:

<asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/App_Data/RunRunDB.mdb" 
    DeleteCommand="DELETE FROM [Users] WHERE (([username] = ?) OR ([username] IS NULL AND ? IS NULL))" 
    InsertCommand="INSERT INTO [Users] ([Fname], [Lname], [Email], [Bday], [pswrd], [admin], [username]) VALUES (?, ?, ?, ?, ?, ?, ?)" 
    OldValuesParameterFormatString="original_{0}" 
    SelectCommand="SELECT * FROM [Users]" 

    UpdateCommand="UPDATE [Users] SET [Fname] = ?, [Lname] = ?, [Email] = ?, [Bday] = ?, [pswrd] = ?, [admin] = ? WHERE (([username] = ?) OR ([username] IS NULL AND ? IS NULL))">` 
     <DeleteParameters>
        <asp:Parameter Name="original_username" Type="String" />
    </DeleteParameters>
    <InsertParameters>
        <asp:Parameter Name="Fname" Type="String" />
        <asp:Parameter Name="Lname" Type="String" />
        <asp:Parameter Name="Email" Type="String" />
        <asp:Parameter Name="Bday" Type="DateTime" />
        <asp:Parameter Name="pswrd" Type="String" />
        <asp:Parameter Name="admin" Type="Boolean" />
        <asp:Parameter Name="username" Type="String" />
    </InsertParameters>
    <UpdateParameters>
        <asp:Parameter Name="Fname" Type="String" />
        <asp:Parameter Name="Lname" Type="String" />
        <asp:Parameter Name="Email" Type="String" />
        <asp:Parameter Name="Bday" Type="DateTime" />
        <asp:Parameter Name="pswrd" Type="String" />
        <asp:Parameter Name="admin" Type="Boolean" />
        <asp:Parameter Name="original_username" Type="String" />
    </UpdateParameters>
</asp:AccessDataSource>

Each time i run my website i get an error that says: You do not have a value for one or more of the required parameters.

Thanks..

1

1 Answers

4
votes

Your problem is here:

WHERE (([username] = ?) OR ([username] IS NULL AND ? IS NULL))

Command parameters cannot be used to specify table or column (field) names; they only specify column values. You will have to adjust your UpdateCommand and DeleteCommand strings to specify the column name explicitly.