以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  Insert 语句如何循环?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=138349)

--  作者:石四
--  发布时间:2019/7/29 14:47:00
--  Insert 语句如何循环?
If MsgBox("确认保存数据?",65,"提示") = 1 Then
    Dim cmd As New SQLCommand
    cmd.Conn e
    Dim i As Integer
    For i = 0 To 2
        cmd.CommandText = "Insert Into {销售单} ([日期],[出库单号],[客户名称]) Values(?,?,?)"
        cmd.Parameters.Add("@日期",2019-07-29)
        cmd.Parameters.Add("@出库单号",i)
        cmd.Parameters.Add("@客户名称","kumc")
    Next
    If cmd.ExecuteNonQuery = 1 Then \'返回1表示增加成功
        MessageBox.Show("销售单保存成功")
    End If
End If

提示“...已添加相同的键”

--  作者:有点蓝
--  发布时间:2019/7/29 14:48:00
--  
For i = 0 To 2
cmd.Parameters.clear
        cmd.CommandText = "Insert Into {销售单} ([日期],[出库单号],[客户名称]) Values(?,?,?)"
        cmd.Parameters.Add("@日期",2019-07-29)
        cmd.Parameters.Add("@出库单号",i)
        cmd.Parameters.Add("@客户名称","kumc")
    Next

--  作者:石四
--  发布时间:2019/7/29 15:12:00
--  
If MsgBox("确认保存数据?",65,"提示") = 1 Then
    Dim cmd As New SQLCommand
    cmd.Connecti
    Dim i As Integer
    For i = 1 To 4
        cmd.Parameters.clear
        cmd.CommandText = "Insert Into {销售单} ([日期],[出库单号],[客户名称]) Values(?,?,?)"
        cmd.Parameters.Add("@日期",Date.Today())
        cmd.Parameters.Add("@出库单号",i)
        cmd.Parameters.Add("@客户名称","kumc")
    Next
    If cmd.ExecuteNonQuery = 1 Then \'返回1表示增加成功
        MessageBox.Show("销售单保存成功")
    End If
End If

这样的结果只Insert最后一行,“出库单号=4”.

--  作者:有点蓝
--  发布时间:2019/7/29 15:19:00
--  
If MsgBox("确认保存数据?",65,"提示") = 1 Then
    Dim cmd As New SQLCommand
    cmd.Connecti
    Dim i As Integer
    For i = 1 To 4
        cmd.Parameters.clear
        cmd.CommandText = "Insert Into {销售单} ([日期],[出库单号],[客户名称]) Values(?,?,?)"
        cmd.Parameters.Add("@日期",Date.Today())
        cmd.Parameters.Add("@出库单号",i)
        cmd.Parameters.Add("@客户名称","kumc")
cmd.ExecuteNonQuery
    Next
End If

--  作者:石四
--  发布时间:2019/7/29 16:03:00
--  
蓝版,添加cmd.ExecuteNonQuery后最后一行会重复Insert.
 比如:For i = 1 To 2,会Insert三行,两行的“出库单号”=2


--  作者:石四
--  发布时间:2019/7/29 16:05:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=138336&page=2
--  作者:有点蓝
--  发布时间:2019/7/29 16:18:00
--  
4楼的代码不可能有这个问题。贴出有问题的代码
--  作者:石四
--  发布时间:2019/7/29 16:50:00
--  
测试4楼的代码,确实没有问题。
--  作者:石四
--  发布时间:2019/7/29 16:52:00
--  
If MsgBox("确认保存数据?",65,"提示") = 1 Then
    Dim cmd As New SQLCommand
    cmd.Connectio
    Dim i As Integer
    For i = 1 To 2
        cmd.Parameters.clear
        cmd.CommandText = "Insert Into {销售单} ([日期],[出库单号],[客户名称]) Values(?,?,?)"
        cmd.Parameters.Add("@日期",Date.Today())
        cmd.Parameters.Add("@出库单号",i)
        cmd.Parameters.Add("@客户名称","kumc")
        cmd.ExecuteNonQuery
    Next
    If cmd.ExecuteNonQuery = 1 Then \'返回1表示增加成功
        MessageBox.Show("销售单保存成功")
    End If
End If

这个多了:
 If cmd.ExecuteNonQuery = 1 Then \'返回1表示增加成功
        MessageBox.Show("销售单保存成功")
    End If

会重复

--  作者:有点蓝
--  发布时间:2019/7/29 17:14:00
--  
既然知道会重复就不要了咯。