vb用dataset 更新数据并触发触发器,简体中文与繁体中文的转换

本文介绍了一个基于Visual Basic的应用程序中对于CPM_Remark表的数据管理操作,包括加载特定记录、显示数据、更新记录等功能。应用程序通过SQL查询从数据库获取数据,并使用DataGrid进行展示,同时支持数据的新增、编辑、删除操作。
Dim SQL_Header As String = "CP Reference No.,CP Version No.,Call Lot,Remark ID,Remarks,UPDUSER"
    Dim SQL_Where As String = ""
    Dim SQL As String = "SELECT  CPREFNO, CPVERNO,CLOT,REMLIN,REMARK,UPDUSER FROM CPM_Remark"
    Dim netDs As New DataSet
    Dim tn As String = "TB"
    Dim m As Int32
Private Sub Frm_CP_Management_Remark_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Me.txtCPREF.Text = CPREF
            Me.txtCPVER.Text = CPVERSION
            Me.txtCallLot.Text = CPCLOT
            Me.txtCustomer.Text = CPEKEY
            Me.txtGroupName.Text = CPGROUP
            Me.txtLocation.Text = CPLOCATION

            SQL_Where = " WHERE CPREFNO='" & CPREF & "' AND CPVERNO='" & CPVERSION & "'"
            netDs = gData.GetDataSet(SQL & SQL_Where & " ORDER BY REMLIN", sqlConn, tn)
            If netDs.Tables(tn).Rows.Count > 0 Then
                m = netDs.Tables(tn).Compute("max(remlin)", "") + 1
            Else
                m = 1
            End If

            netDs.Tables(tn).DefaultView.AllowNew = True
            netDs.Tables(tn).DefaultView.AllowDelete = True
            netDs.Tables(tn).DefaultView.AllowEdit = True
            dgv.DataSource = netDs.Tables(tn)
            dgv.AllowDrop = False
            Dim myGridStyle As DataGridTableStyle = New DataGridTableStyle
            myGridStyle.AllowSorting = False
            myGridStyle.ColumnHeadersVisible = False
            myGridStyle.RowHeadersVisible = False
            myGridStyle.AlternatingBackColor = Color.WhiteSmoke
            myGridStyle.MappingName = tn
            myGridStyle.RowHeadersVisible = True
            myGridStyle.SelectionForeColor = Color.DarkSeaGreen

            For i As Integer = 0 To netDs.Tables(tn).Columns.Count - 1
                Select Case i
                    Case 0
                        myGridStyle.GridColumnStyles.Add(TextBoxColumnStyle("CLOT", "Call Lot", 0, True))
                    Case 1
                        myGridStyle.GridColumnStyles.Add(TextBoxColumnStyle("REMLIN", "Remark ID", 0, True))
                    Case 2
                        myGridStyle.GridColumnStyles.Add(TextBoxColumnStyle("REMARK", "Remarks", 700, False))
                End Select
            Next
            dgv.TableStyles.Add(myGridStyle)
            dgv.CaptionVisible = False
            gMainForm.StatusBar1.Panels(1).Text = "Total Records: " & netDs.Tables(tn).Rows.Count & "   Current: " & dgv.CurrentCell.RowNumber + 1
        Catch ex As Exception
            MsgBox(ex.ToString(), MsgBoxStyle.Information, Me.Text)
        End Try
    End Sub

 

Public Function SaveSub() As String
        If Not netDs.HasChanges Then
            Return "No data change."
        End If
        Dim mytran As OleDb.OleDbTransaction
        Dim n As Int16 = m
        Try
            For Each r As DataRow In netDs.Tables(tn).Rows
                If r.RowState = DataRowState.Added Or r.RowState = DataRowState.Modified Then
                    If r.RowState = DataRowState.Added Then
                        r.BeginEdit()
                        r.Item("CPREFNO") = Me.CPREF
                        r.Item("CPVERNO") = Me.CPVERSION
                        r("clot") = Me.CPCLOT
                        r("remlin") = n
                        r("UPDUSER") = g.gUserId
                        r("remark") = StrConv(r("remark"), Microsoft.VisualBasic.VbStrConv.TraditionalChinese)
                        r.EndEdit()
                        n = n + 1
                    End If
                    If r.RowState = DataRowState.Modified Then
                        r.BeginEdit()
                        r("clot") = Me.CPCLOT
                        r("UPDUSER") = g.gUserId
                        r("remark") = StrConv(r("remark"), Microsoft.VisualBasic.VbStrConv.TraditionalChinese)
                        r.EndEdit()

                    End If

                    If r("remark").ToString().Length > 120 Then
                        Return "Max 120 characters for each line!"
                    ElseIf r("remark").ToString().Length <= 0 Then
                        Return "The record can not be blank."
                    End If
                End If
            Next
            Dim chds As DataSet = netDs.GetChanges(DataRowState.Deleted + DataRowState.Added + DataRowState.Modified)
            mytran = sqlConn.BeginTransaction()
            Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(SQL, sqlConn)
            Dim cmb As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(da)
            da.SelectCommand.Connection = sqlConn
            da.SelectCommand.Transaction = mytran
            da.UpdateCommand = cmb.GetUpdateCommand()
            da.DeleteCommand = cmb.GetDeleteCommand()
            da.InsertCommand = cmb.GetInsertCommand()
            da.Update(chds, tn)
            netDs.AcceptChanges()
            mytran.Commit()
            Me.dgv.Refresh()
            m = n
            Return "Save successfully!"
        Catch ex As Exception
            Return "Commit Exception!" & vbCrLf & ex.ToString()
            Try
                mytran.Rollback()
            Catch ex2 As Exception
                Return "Rollback Exception!" & vbCrLf & ex.ToString()
            End Try
        End Try
    End Function

字符编码转换函数:StrConv(str,字符编码)
eg:把简体中文转换成繁体中文   StrConv(r("remark"), Microsoft.VisualBasic.VbStrConv.TraditionalChinese)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值