ПОЧЕМУ - «ОБНОВИТЬ ВСТАВИТЬ ОБНОВЛЕНИЕ И ВЫБРАТЬ ЗАЯВЛЕНИЕ» серым цветом? - PullRequest
4 голосов
/ 23 февраля 2009

Почему в разделе ADVANCE, когда я 'настраиваю источник данных', отображается 'ОБНОВЛЕНИЕ ГЕНЕРАЦИИ ВСТАВКИ И ВЫБОР ОТВЕТА'? На некоторых таблицах он не закрашен и работает нормально.

Я знаю, что можно обойти это, изменив тег autogenerateeditbutton на true в свойствах, и вы можете редактировать этот способ, но когда это будет сделано, при попытке обновить базу данных не будет.

Также было упомянуто, что это может быть связано с настройкой первичного ключа, когда я просматривал форумы по этому вопросу. Я не мог получить окончательный ответ, хотя.

Ошибка в браузере выглядит следующим образом:

NotSupportedException: Updating is not supported by data source 'AccessDataSource1' unless UpdateCommand is specified.

Есть идеи, как обновить базу данных этими проблемными таблицами? Почему они проблемные?

Как первичный ключ размещен в таблице. Должно ли это быть сделано в Access? Это можно сделать в VS08 и как?

Ответы [ 3 ]

9 голосов
/ 23 февраля 2009

Чтобы операторы вставки / выбора / обновления генерировались автоматически, таблица должна иметь первичный ключ, чтобы код для выбора правильной строки при вставке или для обновления знал, какую строку выбрать. Если в таблице нет столбца с уникальными значениями, возможно, что более одной строки будет соответствовать той, которая должна быть обновлена. Использование первичного ключа позволяет разработчику создавать код, который надежно выбирает правильную строку для обновления.

1 голос
/ 22 февраля 2011

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

» DeleteCommand = "DELETE FROM [VW_Security_UK_UserAccess] WHERE [MainKey] = @MainKey"

                InsertCommand="INSERT INTO [VW_Security_UK_UserAccess] ([UserName], [HasAccess], [ApplicationDefinitionmainkey], [SortOrder]) VALUES (@UserName, @HasAccess, @ApplicationDefinitionmainkey, @SortOrder)" 
                SelectCommand="SELECT [MainKey], [UserName], [HasAccess], [ApplicationDefinitionmainkey], [SortOrder] FROM [VW_Security_UK_UserAccess]" 
                UpdateCommand="UPDATE [VW_Security_UK_UserAccess] SET [UserName] = @UserName, [HasAccess] = @HasAccess, [ApplicationDefinitionmainkey] = @ApplicationDefinitionmainkey, [SortOrder] = @SortOrder WHERE [MainKey] = @MainKey">
                <DeleteParameters>
                    <asp:Parameter Name="MainKey" Type="Int16" />
                </DeleteParameters>
                <InsertParameters>
                    <asp:Parameter Name="UserName" Type="String" />
                    <asp:Parameter Name="HasAccess" Type="String" />
                    <asp:Parameter Name="ApplicationDefinitionmainkey" Type="Byte" />
                    <asp:Parameter Name="SortOrder" Type="Int32" />
                </InsertParameters>
                <UpdateParameters>
                    <asp:Parameter Name="UserName" Type="String" />
                    <asp:Parameter Name="HasAccess" Type="String" />
                    <asp:Parameter Name="ApplicationDefinitionmainkey" Type="Byte" />
                    <asp:Parameter Name="SortOrder" Type="Int32" />
                    <asp:Parameter Name="MainKey" Type="Int16" />
                </UpdateParameters>
            </asp:SqlDataSource>
1 голос
/ 23 февраля 2009

см. Ответ tvanfosson о первичном ключе, это одна возможность. Вы также получите такое поведение, если ваш оператор выбора использует представление вместо прямой таблицы.

Вы можете обойти это, сгенерировав или кодировав вручную xml в файле .xsd, но это довольно жесткое решение; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...