2013-06-17 6 views
3

У меня есть сетка моего стола. Я создал базу данных AccsessDataSource в моей базе данных. Источник данных Accsess настроен так, что sql-аспект: SELECT * FROM [Users] В расширенных настройках я проверил «Сгенерировать инструкции INSERT, UPDATE и delete». Я включил редактирование и удаление. Мой исходный код показывает это:GridView update/delete crashes

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

Каждый раз, когда я запускаю мой сайт я получаю сообщение об ошибке, которое говорит: Вы не имеют значения для одного или нескольких требуемых параметров.

Спасибо ..

ответ

4

Ваша проблема здесь:

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

Параметры команды не могут быть использованы для указания имен (поля) таблицы или столбца; они указывают только столбец значения. Вам нужно будет отредактировать строки UpdateCommand и DeleteCommand, чтобы явно указать имя столбца.

+0

YESS !! оно работает! Большое спасибо. Тогда я не понимаю, почему визуальная студия делает это, если она вызывает сбои! – GolanTheAce