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;