【发布时间】:2010-12-19 05:49:06
【问题描述】:
我的 UPDATE 命令无法更改表中的任何日期,而非常相似的 SELECT 和 DELETE 命令工作。当我将 UpdateParameters 更改为无效选项时,命令后面的代码会引发错误,但是当参数正确时,什么也没有发生。
激活 DELETE 的代码(有效)
protected void Button2_Click(object sender, EventArgs e)
{
this.AccessDataSource6.Delete();
}
激活 UPDATE 的代码(这似乎对数据有任何影响)
protected void Button1_Click(object sender, EventArgs e)
{
this.AccessDataSource6.Update();
}
AccessDatasource、它的 SQL 命令和参数
<asp:AccessDataSource ID="AccessDataSource6" runat="server" DataFile="~/App_Data/ASPNetDB.mdb"
SelectCommand="SELECT [PracticeDate],
[StartTime],
[EndTime],
[Division],
[TeamStr],
[FieldName]
FROM [vw_fbScheduleFull]
WHERE (([LocationID] = ?)
AND ([DayName] = ?)
AND ([PracticeDate] >= ?)
AND ([PracticeDate] <= ?)
AND ([StartTime] = ?))
ORDER BY [PracticeDate], [FieldName]"
UpdateCommand="UPDATE fbPracticeSlot
SET StartTime = ?, EndTime = ?
WHERE ID IN (
SELECT [PracticeSlotID]
FROM [vw_fbScheduleFull]
WHERE (([LocationID] = ?)
AND ([DayName] = ?)
AND ([PracticeDate] >= ?)
AND ([PracticeDate] <= ?)
AND ([StartTime] = ?))
)"
DeleteCommand="DELETE FROM fbPracticeSlot
WHERE ID IN (
SELECT [PracticeSlotID]
FROM [vw_fbScheduleFull]
WHERE (([LocationID] = ?)
AND ([DayName] = ?)
AND ([PracticeDate] >= ?)
AND ([PracticeDate] <= ?)
AND ([StartTime] = ?))
)">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownListLocation" Name="LocationID" PropertyName="SelectedValue" Type="Int32" />
<asp:ControlParameter ControlID="DropDownListDOW" Name="DayName" PropertyName="SelectedValue" Type="String" />
<asp:ControlParameter ControlID="DropDownListStartDate" Name="PracticeDate" PropertyName="SelectedValue" Type="DateTime" />
<asp:ControlParameter ControlID="DropDownListEndDate" Name="PracticeDate2" PropertyName="SelectedValue" Type="DateTime" />
<asp:ControlParameter ControlID="DropDownListStartTime" Name="StartTime" PropertyName="SelectedValue" Type="DateTime" />
</SelectParameters>
<UpdateParameters>
<asp:ControlParameter ControlID="DropDownListNewStart" Name="NewStartTime" PropertyName="SelectedValue" Type="DateTime" />
<asp:ControlParameter ControlID="DropDownListNewEnd" Name="NewEndTime" PropertyName="SelectedValue" Type="DateTime" />
<asp:ControlParameter ControlID="DropDownListLocation" Name="LocationID" PropertyName="SelectedValue" Type="Int32" />
<asp:ControlParameter ControlID="DropDownListDOW" Name="DayName" PropertyName="SelectedValue" Type="String" />
<asp:ControlParameter ControlID="DropDownListStartDate" Name="PracticeDate" PropertyName="SelectedValue" Type="DateTime" />
<asp:ControlParameter ControlID="DropDownListEndDate" Name="PracticeDate2" PropertyName="SelectedValue" Type="DateTime" />
<asp:ControlParameter ControlID="DropDownListStartTime" Name="StartTime" PropertyName="SelectedValue" Type="DateTime" />
</UpdateParameters>
<DeleteParameters>
<asp:ControlParameter ControlID="DropDownListLocation" Name="LocationID" PropertyName="SelectedValue" Type="Int32" />
<asp:ControlParameter ControlID="DropDownListDOW" Name="DayName" PropertyName="SelectedValue" Type="String" />
<asp:ControlParameter ControlID="DropDownListStartDate" Name="PracticeDate" PropertyName="SelectedValue" Type="DateTime" />
<asp:ControlParameter ControlID="DropDownListEndDate" Name="PracticeDate2" PropertyName="SelectedValue" Type="DateTime" />
<asp:ControlParameter ControlID="DropDownListStartTime" Name="StartTime" PropertyName="SelectedValue" Type="DateTime" />
</DeleteParameters>
</asp:AccessDataSource>
请帮助我理解为什么更新没有改变数据。
看来我要么需要为要更改的值编写带有硬编码参数的 UpdateCommand,要么为要执行的每个更新编写 DeleteCommand 和 InsertCommand。请帮我想办法避免这种混乱。
【问题讨论】:
-
您能具体说明“什么都没有发生”是什么意思吗?你如何检查“什么都没有发生”?
-
什么都没有发生 = 更新命令不会更改任何行。我通过使用 SelectCommand 重新加载数据来查看数据进行检查。
-
硬编码要更改的值使 UpdateCommand 工作。也许 AccessDataSource UpdateCommand 不能接受要更改的值的参数? UpdateCommand="UPDATE [fbPracticeSlot] SET StartTime = #12/30/1899 3:45:00 PM#, EndTime = #12/30/1899 5:30:00 PM# WHERE ID IN (SELECT [PracticeSlotID] FROM [vw_fbScheduleFull ] WHERE (([LocationID] = ?) AND ([DayName] = ?) AND ([PracticeDate] >= ?) AND ([PracticeDate]
-
这看起来很有希望,但没有奏效:cosnetics.co.uk/articles/AccessDataSource-is-thick
-
这个问题的另一个答案是关于 OnUpdating 和 OnUpdated 事件的详细信息。怎么回事?