为什么在“配置数据源”时的ADVANCE部分中,“GENERATE INSERT UPDATE AND SELECT STATEMENT”是否为灰色?在某些表格上,它不是灰色的,工作正常。
我知道可以通过在属性中将autogenerateeditbutton标记更改为true来实现此方法,并且可以通过这种方式进行编辑 - 但是当这样做时,您尝试时不会更新数据库。
还有人提到,当我在论坛上查看此问题时,这可能与设置主键有关。我无法得到一个确凿的答案。
浏览器中的错误如下:
NotSupportedException: Updating is not supported by data source 'AccessDataSource1' unless UpdateCommand is specified.
有关如何使用这些有问题的表更新数据库的任何想法?为什么他们有问题?
如何将主键分配给表。这应该在Access中完成吗?可以在VS08中完成吗?
答案 0 :(得分:9)
为了自动生成insert / select / update语句,表必须有一个主键,以便在插入或更新时选择正确行的代码知道要选择哪一行。如果表中没有具有唯一值的列,则可以使多个行匹配应更新的列。使用主键允许设计人员生成可靠地选择要更新的正确行的代码。
答案 1 :(得分:1)
看到tvanfosson的答案是主键,这是一种可能性。如果select语句使用视图而不是直接表,则也会出现此行为。
你可以通过在.xsd文件中生成或手动编码xml来解决这个问题,但这是一个相当硬核的解决方案; - )
答案 2 :(得分: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>