【发布时间】:2016-02-12 08:08:59
【问题描述】:
我有这个存储过程:
ALTER PROCEDURE [dbo].[spInsertAttendanceDetail]
@ConstituentIdNo nvarchar(15),
@AttendanceID nvarchar(15)
AS
BEGIN
INSERT INTO tblAttendanceDetail (AttendanceID,ConstituentIdNo)
VALUES (@AttendanceID,@ConstituentIdNo)
END
我使用 vb.net 脚本执行存储过程:
For Each id As Object In Arguments.SelectedValues
Using sql As New SqlProcedure("spInsertAttendanceDetail")
sql.AddParameter("@ConstituentIdNo", constituentIdNo)
sql.AddParameter("@AttendanceID", attendanceID)
sql.ExecuteNonQuery()
End Using
Next
如果我从多个选择网格中选择三个记录,它会插入 9 个记录,如果我选择四个,它会插入 16 个记录,其中四个相同的值。有什么方法可以根据我选择的记录数插入记录,假设我从网格中选择三个记录,那么它也应该只插入三个记录?谢谢。
【问题讨论】:
-
问题不在 SQL 端。您在 Arguments.SelectedValues 中有多少条记录?顺便说一句,您最好将创建过程的“使用”部分移出循环,创建 SqlProcedure 然后填充参数并在循环内执行。
-
看起来你在每行触发的事件处理程序中编写了 FOR 循环
-
@Flicker 感谢您的回复和建议。我的网格中有大约 9,000 条记录。