明星八卦
executenonquery(Vb.net实现将窗体记录逐条插入到数据库表里再清空窗体的完整代码)

有5张表,表1(HS编码,料件名称,数量,金额,原产地,手册号,供应商,日期,料件序号,判定ID),表2(HS编码, 料件名称, 料件序号, 数量,金额,原产地,手册号,供应商,日期,流水号,分配ID),表3(部品番号,数量,金额,原产地,是否汇总),表4(部品番号, 数量,金额,原产地,日期,流水号,历史ID),表5(手册号,料件序号,料件料号,税则号,料件名称,规格型号,备案数量,实扣数量,预扣数量,可进量,备注),窗体上有流水号文本框,DateTimePicker1为日期,点击按钮,将表1的记录逐条插入到表2,其中分配ID为自定义增长字段,然后将表3的记录逐条插入到表4,最后将表5的预扣数量更新到实扣数量,VB.NET实现的代码如下:

imports System.Data.SqlClient

rivate Sub Button确认_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button确认.Click

If String.IsNullOrEmpty(TextBox1.Text) Then

MessageBox.Show("请先接单")

Return

End If

Dim 流水号 As String = TextBox1.Text.Trim()

Dim 日期 As DateTime = DateTimePicker1.Value

Using conn As New SqlConnection(DBconnString)

conn.Open()

Using tran As SqlTransaction = conn.BeginTransaction() '开启事务

Try

Dim dtTable1 As New DataTable()

Dim dtTable2 As New DataTable()


'步骤1,先将料件判定清单的记录保存至进口分配历史

Dim query料件判定清单 As String = "SELECt HS编码,料件名称,数量,净重,毛重,金额,币制,原产地,手册号,供应商,日期,料件序号,判定ID FROM 料件判定清单"

Using cmd料件判定清单 As New SqlCommand(query料件判定清单, conn, tran)

Using da料件判定清单 As New SqlDataAdapter(cmd料件判定清单)

da料件判定清单.Fill(dtTable1)

End Using


'先查找分配ID的最大值,+1作为新值;

Dim max分配ID As Integer = 0

Dim sqlGetMax分配ID As String = "SELECt ISNULL(MAX(分配ID),0) FROM 进口分配历史"

Using cmdMax进口分配历史 As New SqlCommand(sqlGetMax分配ID, conn, tran)

max分配ID = CInt(cmdMax进口分配历史.ExecuteScalar())

End Using


For Each row As DataRow In dtTable1.Rows


Dim cmdInsert进口分配历史 As New SqlCommand("INSERT INTO 进口分配历史(HS编码,料件名称,料件序号,数量,净重,毛重,金额,原产地,手册号,供应商,日期,流水号,分配ID)" _

& "VALUES(@HS编码,@料件名称,@料件序号,@数量,@净重,@毛重,@金额,@原产地,@手册号,@供应商,@日期,@流水号,@分配ID)", conn, tran)

cmdInsert进口分配历史.Parameters.AddWithValue("@HS编码", row("HS编码"))

cmdInsert进口分配历史.Parameters.AddWithValue("@料件名称", row("料件名称"))

cmdInsert进口分配历史.Parameters.AddWithValue("@料件序号", row("料件序号"))

cmdInsert进口分配历史.Parameters.AddWithValue("@数量", row("数量"))

cmdInsert进口分配历史.Parameters.AddWithValue("@净重", row("净重"))

cmdInsert进口分配历史.Parameters.AddWithValue("@毛重", row("毛重"))

cmdInsert进口分配历史.Parameters.AddWithValue("@金额", row("金额"))

cmdInsert进口分配历史.Parameters.AddWithValue("@原产地", row("原产地"))

cmdInsert进口分配历史.Parameters.AddWithValue("@手册号", row("手册号"))

cmdInsert进口分配历史.Parameters.AddWithValue("@供应商", row("供应商"))

cmdInsert进口分配历史.Parameters.AddWithValue("@日期", 日期)

cmdInsert进口分配历史.Parameters.AddWithValue("@流水号", 流水号)

max分配ID += 1

cmdInsert进口分配历史.Parameters.AddWithValue("@分配ID", max分配ID)

cmdInsert进口分配历史.ExecuteNonQuery()

Next

End Using


'步骤2,将进口清单的记录保存至进口清单历史

Dim query进口清单 As String = "SELECt 部品番号,数量,净重,毛重,金额,原产地,是否汇总 FROM 进口清单"

Using cmd进口清单 As New SqlCommand(query进口清单, conn, tran)

Using da进口清单 As New SqlDataAdapter(cmd进口清单)

da进口清单.Fill(dtTable2)

End Using


'先查找历史ID的最大值,+1作为新值

Dim max历史ID As Integer = 0

Dim sqlGetMax历史ID As String = "SELECt ISNULL(MAX(历史ID),0) FROM 进口清单历史 "

Using cmdMax进口清单历史 As New SqlCommand(sqlGetMax历史ID, conn, tran)

max历史ID = CInt(cmdMax进口清单历史.ExecuteScalar())

End Using


For Each row As DataRow In dtTable2.Rows

Dim cmdInsert进口清单历史 As New SqlCommand("INSERT INTO 进口清单历史(部品番号,数量,净重,毛重,金额,原产地,日期,流水号,历史ID)" _

& " VALUES(@部品番号,@数量,@净重,@毛重,@金额,@原产地,@日期,@流水号,@历史ID)", conn, tran)

cmdInsert进口清单历史.Parameters.AddWithValue("@部品番号", row("部品番号"))

cmdInsert进口清单历史.Parameters.AddWithValue("@数量", row("数量"))

cmdInsert进口清单历史.Parameters.AddWithValue("@净重", row("净重"))

cmdInsert进口清单历史.Parameters.AddWithValue("@毛重", row("毛重"))

cmdInsert进口清单历史.Parameters.AddWithValue("@金额", row("金额"))

cmdInsert进口清单历史.Parameters.AddWithValue("@原产地", row("原产地"))

cmdInsert进口清单历史.Parameters.AddWithValue("@日期", 日期)

cmdInsert进口清单历史.Parameters.AddWithValue("@流水号", 流水号)

max历史ID += 1

cmdInsert进口清单历史.Parameters.AddWithValue("@历史ID", max历史ID)

cmdInsert进口清单历史.ExecuteNonQuery()

Next

End Using


'步骤3,更新手册实扣数量

Dim sqlUpdate手册料件清单 As String = "UPDATE 手册料件清单 SET 实扣数量=实扣数量+预扣数量,预扣数量=0" _

& "WHERe 手册号 IN (SELECT 手册号 FROM 料件判定清单) AND 料件序号 IN (SELECt 料件序号 FROM 料件判定清单)"

Using cmdUpdate手册料件清单 As New SqlCommand(sqlUpdate手册料件清单, conn, tran)

cmdUpdate手册料件清单.ExecuteNonQuery()

End Using


'步骤4,删除料件判定清单记录,删除进口清单记录,删除进口料件汇总

Dim sqlDelete料件判定清单 As String = "DELETE FROM 料件判定清单"

Using cmdDel料件判定清单 As New SqlCommand(sqlDelete料件判定清单, conn, tran)

cmdDel料件判定清单.ExecuteNonQuery()

End Using

Dim sqlDelete进口清单 As String = "DELETE FROM 进口清单"

Using cmdDel进口清单 As New SqlCommand(sqlDelete进口清单, conn, tran)

cmdDel进口清单.ExecuteNonQuery()

End Using

Dim sqlDelete进口料件汇总 As String = "DELETE FROM 进口料件汇总"

Using cmdDel进口料件汇总 As New SqlCommand(sqlDelete进口料件汇总, conn, tran)

cmdDel进口料件汇总.ExecuteNonQuery()

End Using


tran.Commit()


'步骤5,DataGridView刷新

Dim dt1 As New DataTable()

Dim sql1 As String = "SELECT * FROM 进口清单"

Dim da1 As New SqlDataAdapter(sql1, conn)

da1.Fill(dt1)

DataGridView1.DataSource = dt1

Dim dt2 As New DataTable()

Dim sql2 As String = "SELECt * FROM 进口料件汇总"

Dim da2 As New SqlDataAdapter(sql2, conn)

da2.Fill(dt2)

DataGridView2.DataSource = dt2

Dim dt3 As New DataTable()

Dim sql3 As String = "SELECt * FROM 料件判定清单"

Dim da3 As New SqlDataAdapter(sql3, conn)

da3.Fill(dt3)

DataGridView3.DataSource = dt3

MessageBox.Show("提交成功")

Catch ex As Exception

tran.Rollback()

MessageBox.Show("提交失败" & ex.Message)

Finally

conn.Close()

End Try

End Using

End Using

End Sub


顶一下()     踩一下()

热门推荐

发表评论
0评