Título: (ayuda vb2008)
Publicado por: themonsterbest en 14 Diciembre 2011, 15:54 pm
Hola como están?... quería ver si no podrían aclararme una duda... estoy trabajando en un formulario de Vb .net conectado a una base de datos en Oracle... el tema es que cuando se realice una modificación en una de las filas de la grilla guarde la fecha y la hora de dicha modificación en los campos correspondientes, ya hice una clase para dicho proceso pero tengo problemas para que se guarde en la grilla disculpen mi ignorancia soy algo nuevo en esto Desde ya gracias El codigo en el formulario #Region "para modificar" Private Function dt_modificar() As DataTable Dim myDataTable As DataTable = New DataTable()
Dim myDataColumn As DataColumn
myDataColumn = New DataColumn() myDataColumn.DataType = Type.GetType("System.String" ) myDataColumn.ColumnName = "cod_empresa" myDataTable.Columns.Add(myDataColumn)
myDataColumn = New DataColumn() myDataColumn.DataType = Type.GetType("System.String" ) myDataColumn.ColumnName = "nro_perfil" myDataTable.Columns.Add(myDataColumn)
myDataColumn = New DataColumn() myDataColumn.DataType = Type.GetType("System.String" ) myDataColumn.ColumnName = "fecha_creacion" myDataTable.Columns.Add(myDataColumn)
myDataColumn = New DataColumn() myDataColumn.DataType = Type.GetType("System.String" ) myDataColumn.ColumnName = "cod_persona" myDataTable.Columns.Add(myDataColumn)
myDataColumn = New DataColumn() myDataColumn.DataType = Type.GetType("System.String" ) myDataColumn.ColumnName = "nro_matricula" myDataTable.Columns.Add(myDataColumn)
myDataColumn = New DataColumn() myDataColumn.DataType = Type.GetType("System.String" ) myDataColumn.ColumnName = "usr_alta" myDataTable.Columns.Add(myDataColumn)
myDataColumn = New DataColumn() myDataColumn.DataType = Type.GetType("System.String" ) myDataColumn.ColumnName = "usr_modif" myDataTable.Columns.Add(myDataColumn)
myDataColumn = New DataColumn() myDataColumn.DataType = Type.GetType("System.String" ) myDataColumn.ColumnName = "fec_modif" myDataTable.Columns.Add(myDataColumn)
myDataColumn = New DataColumn() myDataColumn.DataType = Type.GetType("System.String" ) myDataColumn.ColumnName = "observacion" myDataTable.Columns.Add(myDataColumn)
myDataColumn = New DataColumn() myDataColumn.DataType = Type.GetType("System.String" ) myDataColumn.ColumnName = "carga_operacion" myDataTable.Columns.Add(myDataColumn)
myDataColumn = New DataColumn() myDataColumn.DataType = Type.GetType("System.String" ) myDataColumn.ColumnName = "tipo_documento" myDataTable.Columns.Add(myDataColumn)
myDataColumn = New DataColumn() myDataColumn.DataType = Type.GetType("System.String" ) myDataColumn.ColumnName = "nro_documento" myDataTable.Columns.Add(myDataColumn)
Return myDataTable End Function
Private Function add_dt_modificar(ByVal cod_empresa As String, ByVal nro_perfil As String, ByVal cod_persona As String, ByVal nro_matricula As String, ByVal usr_modif As String, ByVal fec_modif As Date, ByVal observacion As String, ByVal carga_operacion As String, ByVal tipo_documento As String, ByVal nro_documento As String, ByVal myTable As DataTable) Dim row As DataRow row = myTable.NewRow() row("cod_empresa" ) = cod_empresa row("nro_perfil" ) = nro_perfil
row("cod_persona" ) = cod_persona row("nro_matricula" ) = nro_matricula
row("usr_modif" ) = usr_modif row("fec_modif" ) = fec_modif row("observacion" ) = observacion row("carga_operacion" ) = carga_operacion row("tipo_documento" ) = tipo_documento row("nro_documento" ) = nro_documento
myTable.Rows.Add(row) Return 0 End Function
Private Sub CargarTablaActualizar() If txt_nro_perfil.Text <> String.Empty And txt_cod_persona.Text <> String.Empty And txt_nro_matricula.Text <> String.Empty And txt_observacion.Text <> String.Empty And txt_carga_operacion.Text <> String.Empty And cb_tipo_documento.SelectedValue <> String.Empty And txt_nro_documento.Text <> String.Empty And My.Settings.validacion = 3 Then
Dim va As Boolean = False If para_modificar.Rows.Count < -1 Then add_dt_modificar(My.Settings.cod_empresa.Trim(), Me.txt_nro_perfil.Text.Trim(), Me.txt_cod_persona.Text.Trim(), Me.txt_nro_matricula.Text.Trim(), Me.txt_usr_modif.Text.Trim(), Me.txt_fec_modif.Text.Trim(), Me.txt_observacion.Text.Trim(), Me.txt_carga_operacion.Text.Trim(), Me.cb_tipo_documento.SelectedValue.ToString(), Me.txt_nro_documento.Text.Trim(), para_modificar) Else For i = 0 To para_modificar.Rows.Count - 1 If va = False Then If para_modificar.Rows(i)("nro_perfil" ).ToString() = txt_nro_perfil.Text Then
para_modificar.Rows(i)("cod_persona" ) = txt_cod_persona.Text para_modificar.Rows(i)("nro_matricula" ) = txt_nro_matricula.Text
para_modificar.Rows(i)("usr_modif" ) = txt_usr_modif.Text para_modificar.Rows(i)("fec_modif" ) = txt_fec_modif.Text para_modificar.Rows(i)("observacion" ) = txt_observacion.Text para_modificar.Rows(i)("carga_operacion" ) = txt_carga_operacion.Text para_modificar.Rows(i)("tipo_documento" ) = cb_tipo_documento.SelectedValue para_modificar.Rows(i)("nro_documento" ) = txt_nro_documento.Text va = True End If End If Next If va = False Then add_dt_modificar(My.Settings.cod_empresa.Trim(), Me.txt_nro_perfil.Text.Trim(), Me.txt_cod_persona.Text.Trim(), Me.txt_nro_matricula.Text.Trim(), Me.txt_usr_modif.Text.Trim(), Me.txt_fec_modif.Text.Trim(), Me.txt_observacion.Text.Trim(), Me.txt_carga_operacion.Text.Trim(), Me.cb_tipo_documento.SelectedValue, Me.txt_nro_documento.Text.Trim(), para_modificar) End If End If End If End Sub #End Region
' El proceso de guardar
ElseIf para_modificar.Rows.Count - 1 > -1 Or My.Settings.validacion = 3 Then Try Dim listas As List(Of ClassLibrary1.DLL.ClsSysDate) = SqlBSPERSOC.SysData() txt_usr_modif.Text = My.Settings.cod_usuario txt_fec_modif.DataBindings.Clear() txt_fec_modif.DataBindings.Add("Text", listas, "mSysDate" ) Actualizar() mensaje() My.Settings.validacion = 0 txt_nro_perfil.Text = String.Empty CargarDatos() Catch ex As Exception para_modificar.Rows.Clear()
End Try End If 'en todos los casos txt_nro_perfil.Focus()
End Sub
' El Sub actualizar
Private Sub Actualizar() Dim lista As String = ClassLibrary1.DAL.DataAccess.SqlPermisos.Pre_Update(My.Settings.vderecho) If Not lista.Equals("S", StringComparison.OrdinalIgnoreCase) Then MessageBox.Show(lista.ToString, "Problemas de Permiso", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1) Else Try For i = 0 To para_modificar.Rows.Count - 1
SqlBSPERSOC.Modificar(My.Settings.cod_empresa, para_modificar.Rows(i)("nro_perfil" ).ToString, para_modificar.Rows(i)("cod_persona" ).ToString, para_modificar.Rows(i)("nro_matricula" ).ToString, para_modificar.Rows(i)("usr_modif" ).ToString, para_modificar.Rows(i)("fec_modif" ).ToString, para_modificar.Rows(i)("observacion" ).ToString, para_modificar.Rows(i)("carga_operacion" ).ToString, para_modificar.Rows(i)("tipo_documento" ).ToString, para_modificar.Rows(i)("nro_documento" ).ToString) Next para_modificar.Rows.Clear() Catch ex As Exception Throw New Exception End Try End If End Sub
El Sql #Region "Modificar" Public Shared Function Modificar(ByVal cod_empresa As String, ByVal nro_perfil As String, ByVal cod_persona As String, ByVal nro_matricula As String, ByVal usr_modif As String, ByVal fec_modif As Date, ByVal observacion As String, ByVal carga_operacion As String, ByVal tipo_documento As String, ByVal nro_documento As String) As Integer Dim filas As Integer = 0 Try Dim cmd As New OracleCommand("PKG_BASE.MBSPERSOC", conn) cmd.Parameters.Add("p_cod_empresa", cod_empresa) cmd.Parameters.Add("p_nro_perfil", nro_perfil) cmd.Parameters.Add("p_cod_persona", cod_persona) cmd.Parameters.Add("p_nro_matricula", nro_matricula) cmd.Parameters.Add("p_usr_modif", usr_modif) cmd.Parameters.Add("p_fec_modif", fec_modif) cmd.Parameters.Add("p_observacion", observacion) cmd.Parameters.Add("p_carga_operacion", carga_operacion) cmd.Parameters.Add("p_tipo_documento", tipo_documento) cmd.Parameters.Add("p_nro_documento", nro_documento)
cmd.Parameters.Add(New OracleParameter("p_mensaje", OracleDbType.NVarchar2, ParameterDirection.Output, "", ParameterDirection.Output)) cmd.CommandType = CommandType.StoredProcedure conn.Open() filas = cmd.ExecuteNonQuery() If (conn.State <> ConnectionState.Closed) Then conn.Close() End If Catch ex As Exception MessageBox.Show(ex.Message, "Error en Actualización", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1) conn.Close() Throw New Exception Finally End Try Return filas End Function
#End Region
El Cls Namespace DLL
Public Class ClsBSPERSOC Dim f As Nullable(Of Date) Private cod_empresa As String Private nro_perfil As String Private fecha_creacion As Date Private cod_persona As String Private nro_matricula As String Private usr_alta As String Private usr_modif As String Private fec_modif As Date Private observacion As String Private carga_operacion As String Private tipo_documento As String Private nro_documento As String
Public Property mcod_empresa() Get Return cod_empresa End Get Set(ByVal value) cod_empresa = value End Set End Property
Public Property mnro_perfil() Get Return nro_perfil End Get Set(ByVal value) nro_perfil = value End Set End Property
Public Property mfecha_creacion() Get Return If(fecha_creacion.ToString("dd/MM/yyyy" ) = "01/01/0001", f.ToString, fecha_creacion.ToString("dd/MM/yyyy" )) End Get Set(ByVal value) fecha_creacion = value End Set End Property
Public Property mcod_persona() Get Return cod_persona End Get Set(ByVal value) cod_persona = value End Set End Property
Public Property mnro_matricula() Get Return nro_matricula End Get Set(ByVal value) nro_matricula = value End Set End Property
Public Property musr_alta() Get Return usr_alta End Get Set(ByVal value) usr_alta = value End Set End Property
Public Property musr_modif() Get Return usr_modif End Get Set(ByVal value) usr_modif = value End Set End Property
Public Property mfec_modif() Get Return If(fec_modif.ToString("dd/MM/yyyy" ) = "01/01/0001", f.ToString, fec_modif.ToString("dd/MM/yyyy" )) End Get Set(ByVal value) fec_modif = value End Set End Property
Public Property mobservacion() Get Return observacion End Get Set(ByVal value) observacion = value End Set End Property
Public Property mcarga_operacion() Get Return carga_operacion End Get Set(ByVal value) carga_operacion = value End Set End Property
Public Property mtipo_documento() Get Return tipo_documento End Get Set(ByVal value) tipo_documento = value End Set End Property
Public Property mnro_documento() Get Return nro_documento End Get Set(ByVal value) nro_documento = value End Set End Property
Sub New() fecha_creacion = Now()
End Sub
Sub New(ByVal cod_empresa As String, ByVal nro_perfil As String, ByVal fecha_creacion As String, ByVal cod_persona As String, ByVal nro_matricula As String, ByVal usr_alta As String, ByVal usr_modif As String, ByVal fec_modif As String, ByVal observacion As String, ByVal carga_operacion As String, ByVal tipo_documento As String, ByVal nro_documento As String) Me.cod_empresa = cod_empresa Me.nro_perfil = nro_perfil Me.fecha_creacion = fecha_creacion Me.cod_persona = cod_persona Me.nro_matricula = nro_matricula Me.usr_alta = usr_alta Me.usr_modif = usr_modif Me.fec_modif = fec_modif Me.observacion = observacion Me.carga_operacion = carga_operacion Me.tipo_documento = tipo_documento Me.nro_documento = nro_documento
End Sub End Class End Namespace
El Procedure del PL/SQL
Procedure MBSPERSOC( p_cod_empresa in Varchar2, p_nro_perfil in Number, p_cod_persona in Varchar2, p_nro_matricula in Varchar2, p_usr_modif in Varchar2, p_fec_modif in Date, p_observacion in Varchar2, p_carga_operacion in Varchar2, p_tipo_documento in Varchar2, p_nro_documento in Varchar2, p_mensaje Out Varchar2) Is
vcod_empresa Varchar2(5) := p_cod_empresa; vnro_perfil Number := p_nro_perfil; vcod_persona Varchar2(15) := p_cod_persona; vnro_matricula Varchar2(15) := p_nro_matricula; vusr_modif Varchar2(40) := p_usr_modif; vfec_modif Date := p_fec_modif; vobservacion Varchar2(1000) := p_observacion; vcarga_operacion Varchar2(1) := p_carga_operacion; vtipo_documento Varchar2(1) := p_tipo_documento; vnro_documento Varchar2(15) := p_nro_documento;
Begin Update BS_PERFIL_CABECERA Set cod_persona = vcod_persona, nro_matricula = vnro_matricula, usr_modif = vusr_modif, fec_modif = vfec_modif, observacion = vobservacion, carga_operacion = vcarga_operacion, tipo_documento = vtipo_documento, nro_documento = vnro_documento
Where cod_empresa = vcod_empresa and nro_perfil = vnro_perfil;
If sql%Rowcount = 0 Then p_mensaje := ('No se ha actualizado ningún registro. '); Rollback; End If; Exception When Others Then p_mensaje := ('Error durante la actualización del registro. '||Sqlerrm); End;
|