解决“将数据类型nvarchar转换为日期时间”错误后得到此解决方案。使用Vb.net/SQL Server 2000中通过一个gridview/SqlDataSource的更新一行:对象必须实现IConvertible?
存储过程:
@ISTag varchar(10),
@PCISTag varchar(10),
@User varchar(50),
@Date_Start datetime,
@Date_End datetime,
@Status varchar(50),
@Cost money,
@Notes varchar(500),
@CreatedBy varchar(50),
@ModifiedBy varchar(50)
AS
BEGIN
SET NOCOUNT ON;
EXEC sp_changeLog 'HardDrive', @ISTag, @ModifiedBy
UPDATE T_HardDrive
SET PCIStag = @PCISTag,
[User] = @User,
Date_Start = @Date_Start,
Date_End = @Date_End,
[Status] = @Status,
Cost = @Cost,
Notes = @Notes,
ModifiedBy = @ModifiedBy
WHERE ISTag = @ISTag
SQL数据源:
<asp:SqlDataSource ID="InventoryHardDrive" runat="server"
ConnectionString="<%$ ConnectionStrings:InventoryConnectionString %>"
DeleteCommand="DELETE FROM [T_HardDrive] WHERE [ISTag] = @original_ISTag"
InsertCommand="sp_HardDriveInsert" InsertCommandType="StoredProcedure"
OldValuesParameterFormatString="original_{0}"
SelectCommand="sp_HardDriveSelect" SelectCommandType="StoredProcedure"
UpdateCommand="sp_HardDriveUpdate" UpdateCommandType="StoredProcedure">
<DeleteParameters>
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="ISTag" Type="String" />
<asp:Parameter Name="PCISTag" Type="String" />
<asp:Parameter Name="User" Type="String" />
<asp:Parameter Name="Date_Start" Type="DateTime" />
<asp:Parameter Name="Date_End" Type="DateTime" />
<asp:Parameter Name="Status" Type="String" />
<asp:Parameter Name="Cost" Type="Decimal" />
<asp:Parameter Name="Notes" Type="String" />
<asp:Parameter Name="CreatedBy" Type="String" />
<asp:Parameter Name="ModifiedBy" Type="String" />
</InsertParameters>
<SelectParameters>
<asp:ControlParameter ControlID="hideInactiveCheckBox" Name="Active"
PropertyName="Checked" Type="Boolean" />
<asp:ControlParameter ControlID="filterText" DefaultValue="%" Name="ISTag"
PropertyName="Text" Type="String" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="ISTag" Type="String" />
<asp:Parameter Name="PCISTag" Type="String" />
<asp:Parameter Name="User" Type="String" />
<asp:Parameter Name="Date_Start" Type="DateTime" />
<asp:Parameter Name="Date_End" Type="DateTime" />
<asp:Parameter Name="Status" Type="String" />
<asp:Parameter Name="Cost" Type="Decimal" />
<asp:Parameter Name="Notes" Type="String" />
<asp:Parameter Name="CreatedBy" Type="String" />
<asp:Parameter Name="ModifiedBy" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
我设置的DATE_START和DATE_END参数设置为现在的最短日期,直到我可以找出造成这种情况的原因。
Dim sqldatenull As SqlDateTime
sqldatenull = SqlDateTime.MinValue
e.NewValues("Date_Start") = sqldatenull
e.NewValues("Date_End") = sqldatenull
任何想法?
我想你需要转换为SQL日期类型,它可能适用于更高版本的SQL服务器 – 2010-09-02 16:45:55
DateTime是2000年的一种类型,所以我不认为这是问题? – Shawn 2010-09-02 16:52:22