4

「データ ソースを構成する」ときに、[ADVANCE] セクションで [GENERATE INSERT UPDATE AND SELECT STATEMENT] がグレー表示されるのはなぜですか? 一部のテーブルではグレー表示されず、正常に動作します。

プロパティでautogenerateeditbuttonタグをtrueに変更することでこれを回避できることを私は知っています。この方法で編集できますが、これを行ってもデータベースは更新されません。

この問題についてフォーラムを調べたところ、これは主キーの設定に関係している可能性があることも言及されました。とはいえ、決定的な答えは得られませんでした。

ブラウザのエラーは次のとおりです。

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

これらの問題のあるテーブルでデータベースを更新する方法はありますか? なぜ問題があるのですか?

主キーはどのようにテーブルに割り当てられますか。これは Access で行う必要がありますか? VS08でそれを行うことができますか?

4

3 に答える 3

9

挿入/選択/更新ステートメントを自動的に生成するには、挿入時に正しい行を選択するコードまたは更新するコードが選択する行を認識できるように、テーブルに主キーが必要です。テーブルに一意の値を持つ列がない場合、複数の行が更新する必要がある行と一致する可能性があります。主キーを使用すると、設計者は更新する正しい行を確実に選択するコードを生成できます。

于 2009-02-23T03:42:56.267 に答える
1

主キーに関するtvanfossonの回答を参照してください。これは1つの可能性です。select ステートメントが直接テーブルではなくビューを使用する場合にも、この動作が発生します。

.xsd ファイルで xml を生成またはハンドコーディングすることでこれを回避できますが、これはかなりハードコアなソリューションです ;-)

于 2009-02-23T04:42:10.510 に答える
1

次のようなビューでデータ ソースを作成します。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>
于 2011-02-22T10:31:56.530 に答える