网站首页
手机版

vb.net用存储过程实现入库提交

更新时间:作者:小小条

首先在SQL SERVER数据库新建一个存储过程,名称为:sup_入库提交,代码如下:

CREATE PROCEDURE usp_入库操作

@部品番号 NVARCHAR(30),

vb.net用存储过程实现入库提交

@入库数量 decimal(18,0),

@库位号 NVARCHAR(20)

AS

BEGIN

SET NOCOUNT ON;

IF @入库数量<=0

BEGIN

RAISERROR('入库数量必须大于0',16,1);

RETURN;

END

BEGIN TRY

BEGIN TRANSACTION;

IF EXISTS(SELECT 1 FROM 结存 WHERE 部品番号=@部品番号 AND 库位号=@库位号)

BEGIN

UPDATE 结存 SET 结存数量=结存数量+@入库数量 WHERE 部品番号=@部品番号 AND 库位号=@库位号;

END

ELSE

BEGIN

INSERT INTO 结存(部品番号,结存数量,库位号,预用数量) VALUES(@部品番号,@入库数量,@库位号,0);

END

INSERT INTO 历史入库(部品番号,入库数量,库位号,入库日期) VALUES(@部品番号,@入库数量,@库位号,GETDATE());

COMMIT TRANSACTION

SELECT 0 AS 结果代码,'成功' AS 结果消息

END TRY

BEGIN CATCH

ROLLBACK TRANSACTION

SELECT -1 AS 结果代码,ERROR_MESSAGE() AS 结果消息

END CATCH

END

然后在窗体界面的提交按钮写如下代码:

Imports System.Data.SqlClient

Public Class Form1

Private connString As String = "Server=CW.shscth.com.cn;Database=SCTH;Integrated Security=True;"

Private da As SqlDataAdapter

Private dt As DataTable

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

InitializeDataGrisView()

End Sub


Private Sub InitializeDataGrisView()

DataGridView1.Columns.Clear()

DataGridView1.Columns.Add("部品番号", "部品番号")

DataGridView1.Columns.Add("数量", "数量")

DataGridView1.Columns.Add("库位号", "库位号")

DataGridView1.Columns("部品番号").Width = 150

DataGridView1.Columns("数量").Width = 100

DataGridView1.Columns("库位号").Width = 120

DataGridView1.Columns("数量").ValueType = GetType(Decimal)

End Sub

Private Sub Button提交入库_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button提交入库.Click

If Not ValidateData() Then

Return

End If

BulkUpdateDatabase()

End Sub

Private Function BulkUpdateDatabase() As Boolean

Dim conn As SqlConnection = Nothing

Dim transaction As SqlTransaction = Nothing

Try

conn = New SqlConnection(connString)

conn.Open()

transaction = conn.BeginTransaction()

'执行批量更新

Using cmd As New SqlCommand("usp_入库操作", conn, transaction)

cmd.CommandType = CommandType.StoredProcedure

cmd.Parameters.Add("@部品番号", SqlDbType.NVarChar, 30)

cmd.Parameters.Add("@入库数量", SqlDbType.Decimal)

cmd.Parameters.Add("@库位号", SqlDbType.NVarChar, 20)

For Each row As DataGridViewRow In DataGridView1.Rows

If row.IsNewRow Then Continue For

'设置参数值

cmd.Parameters("@部品番号").Value = row.Cells("部品番号").Value.ToString().Trim()

cmd.Parameters("@入库数量").Value = CDec(row.Cells("数量").Value)

cmd.Parameters("@库位号").Value = row.Cells("库位号").Value.ToString().Trim()

'执行存储过程

cmd.ExecuteNonQuery()

Next

End Using

'提交事务

transaction.Commit()

MessageBox.Show("提交成功!")

DataGridView1.Rows.Clear()

Return True

Catch ex As Exception

If transaction IsNot Nothing Then

Try

transaction.Rollback()

Catch rollbackEx As Exception

'记录回滚错误

End Try

End If

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

Return False

Finally

If conn IsNot Nothing AndAlso conn.State = ConnectionState.Open Then

conn.Close()

End If

End Try

End Function

End Class

版权声明:本文转载于今日头条,版权归作者所有,如果侵权,请联系本站编辑删除

为您推荐

vb.net窗体导入EXCEL数据到数据库表中,并在Datagridview中显示

Imports System.Data.SqlClientImports System.Data.OleDbPublic Class Form 1Private DBconnString As String = &#34;Server=CW.shscth.com.cn;Database=SCTH;Integrated

2026-01-25 16:40

VB.NET导入EXCEL实现代码(2)

Imports System.Data.OleDbPublic Class Form1Private Sub Button导入_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button导入.ClickTryD

2026-01-25 16:39

安装 Visual Studio 2022

Hi,很高兴认识你。我是职场编码,我推荐你使用“ Visual Studio 2022 “作为学习VB.NET的工具,下面跟着我一起安装吧! 在浏览器里搜索&#34;微软官网&#34;,在网页链接上点击鼠标左

2026-01-25 16:39

【VB.NET】编程分享:一键生成PPT目录

目录前言步骤1:制作PPT母版样式步骤2:在Visual Studio中创建一个外接程序步骤3:添加项目引用及绘制UI界面步骤4:编写VB.NET代码步骤5:发布程序步骤6:安装并确认效果结语前言随着科

2026-01-25 16:38

vb.net 点击DataGridView1的记录,DataGridView2显示相关记录

问题:数据库有2个表,两个表之间有2个字段相同,表1(HS编码,料件名称),表2(税则号,料件名称),窗体有2个DataGridView,点击DataGridView1的记录, DataGridView2显示相同字段的相

2026-01-25 16:38

vb.net 用datagridview控件录入数据界面,提交保存数据库的代码

Imports System.Data.SqlClientPublic Class Form1&#39;连接数据库Private connString As String = &#34;Server=CW.shscth.com.cn;Database=SCTH;Integrated Security=True

2026-01-25 16:37