【发布时间】:2016-04-12 10:50:15
【问题描述】:
我有下表
[Department] [Location] [Project] [Job Title] [Qty]
-------------------------------------------------------------
HR Jeddah Andalusia JT2 5
IT Jeddah Head Office JT1 3
我正在尝试使用 SqlDataSource 运行排序过程,如下所示
CREATE PROCEDURE [dbo].[MManPowerUpdate]
@Dept nvarchar(350),
@Loca nvarchar(350),
@Proj nvarchar(350),
@JobT nvarchar(350)
AS
IF (SELECT QTY FROM [MANPOWER] WHERE ([Department] = @Dept) AND ([Location] = @Loca) AND ([Project] = @Proj) AND ([JobTitle] = @JobT)) > 0
Begin
SELECT 'Operation Completed Successfully.' AS [Result]
UPDATE [MANPOWER] SET QTY = QTY - 1 WHERE ([Department] = @Dept) AND ([Location] = @Loca) AND ([Project] = @Proj) AND ([JobTitle] = @JobT)
End
Else
Begin
SELECT 'Can''t Execute Operation.' AS [Result]
End
Return 0
ASP.net 代码:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:_JOOBERConnectionString %>" SelectCommandType="StoredProcedure" SelectCommand="MManPowerUpdate">
<SelectParameters>
<asp:ControlParameter ControlID="txtDept" Name="Dept" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="txtLoca" Name="Loca" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="txtProj" Name="Proj" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="txtJobT" Name="JobT" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Result" HeaderText="Result" ReadOnly="True" SortExpression="Result" />
</Columns>
</asp:GridView>
vb.net 后面的代码:
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
SqlDataSource1.Select(New DataSourceSelectArguments)
End Sub
当我使用此值执行代码时,例如。
@Dept = HR
@Loca = Jeddah
@proj = Andalus
@JobT = JT2
我希望更新后的数量为 4 并检索“操作已成功完成”。但我曾经在更新后得到 3,这意味着当我调用该过程时更新语句运行了两次。 所以我希望能和你一起找到解决办法。
【问题讨论】:
标签: asp.net sql-server vb.net stored-procedures