Jump to content
Sign in to follow this  
marcosab

ANSWERED Macro para Consulta, Actualización desde ACCESS

Recommended Posts

Buenos días 

Primero que todo debo dar gracias por toda la ayuda de los miembros del foro.

Estoy iniciando con un sistema para registrar información de un proceso con macros en EXCEL que utiliza información de ACCESS, el sistema se debe utilizar por varias personas.

 

Tengo las siguientes dudas que acudo a ustedes para resolverlas.

Usuario admin

Contraseña 123

1 Logre que detecte usuario y contraseña de una hoja de Excel. requiero que esa información la tome de la base de datos "01.Adeudos" tabla "usuarios". Además que que dependiendo las horjas activas sean visualizadas o ocultas. solo el administrador debe tener acceso a todas las hojas.

2 En la hoja "Registro" debe consultar a la base de datos "01.Adeudos" tabla "pen" y completar datos. despues el usuario debe completar datos y permitir actualizar los datos en la base de datos "01.Adeudos" tabla "usuarios".

 

https://mega.nz/file/MB5HyTib#5TMCNyAY50kXBSkCSe29piGkEYL9hoxhVtUzUzfu3Xk

 

 

Saludos,

Share this post


Link to post
Share on other sites

Hola

Claro que se puede hacer ambas cosas, no recibes respuesta porque no has hecho preguntas puntuales y no necesariamente en los foros la gente tiene tiempo de hacer todo un desarrollo (algunos lo tienen a veces). Como para que vayas intentando, la clave está en las sentencias SQL que debes usar. Mira el ejemplo 8 de mi blog:

https://abrahamexcel.blogspot.com/

Saludos

Share this post


Link to post
Share on other sites

Buenos dias

 

Muchas gracias por su respuesta, disculpa si enfoque mal la pregunta fue que tenia la duda de que se pudiera hacer eso desde excel, gracias por aclarar y tener certeza de que si es posible.

Es un proyecto grande resolviendo esas consultas me parece puedo completar hacer de mi parte el resto del proyecto.

Gracias por sus aportes.

Saludos  

Share this post


Link to post
Share on other sites

Muchas gracias por el aporte

 

He estado trabajando en el registro

tengo este codigo para agregar datos pero no logro que me los agregue favor ayuda para detectar el problema

 

 

Function ingesarDatos_01() As Boolean
    Dim sSQL As String
    Dim sSQLIngreso_01 As String
    Dim nResultado As Long
    Dim nFila As Double
    Dim rCelda As Range
    Dim sTexto As String
    
    ingesarDatos_01 = False
    '--------------------------------------------------------------------------------
    'obtenemos la ultima fila con datos
    '--------------------------------------------------------------------------------
    
    '--------------------------------------------------------------------------------
    'Creamos el String de Ingreso de datos
    '--------------------------------------------------------------------------------
    sSQL = "INSERT INTO 02_morosos (Cedula, Carpeta, Funcionario_1, Fecha_1, Numero_Patrono, Nombre_Patrono) "
    sSQL = sSQL & "VALUES ('" & Worksheets("Registro_01").Range("C9").Value & "', "
    sSQL = sSQL & Worksheets("Registro_01").Range("J2").Value & ", "
    sSQL = sSQL & Worksheets("Registro_01").Range("C6").Value & ", "
    sSQL = sSQL & "#" & Format(Worksheets("Registro_01").Range("F6").Value) & "#, "
    sSQL = sSQL & Worksheets("Registro_01").Range("C13").Value & ", "
    sSQL = sSQL & Worksheets("Registro_01").Range("E13").Value & ", "

    '--------------------------------------------------------------------------------
    'realizamos el ingreso de los datos para cada linea
    'si todo salio OK, nResultado sera 0
    '--------------------------------------------------------------------------------

        If nResultado <> 0 Then
            MsgBox "Problemas al ingresar el registro", vbCritical, "SACI"
            Exit Function
        End If

    MsgBox "Datos actualizados con Exito!!!", vbInformation, "SACI"
    ingesarDatos_01 = True
End Function

 

Share this post


Link to post
Share on other sites

Te dejo la macro Consultar, cuando pueda iré por la macro Actualizar:

Sub Consultar()

Dim Cnn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Sql As String, Datos As Variant
Dim NumId As String

Application.ScreenUpdating = False
NumId = [C9]
Set Cnn = New ADODB.Connection
With Cnn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=" & ThisWorkbook.Path & "\Datos\01.Adeudos.accdb"
    .Open
End With
Set Rs = New ADODB.Recordset
Sql = "SELECT Riesgo, [Monto Caso], Nombre FROM pen WHERE [Num Id] = '" & NumId & "'"
Rs.Open Sql, Cnn, 3, 3, adCmdText
Application.EnableEvents = False
[E9] = ""
[G9] = ""
[C11] = ""
If Not Rs.EOF = True Then
   Datos = Rs.GetRows 'Matriz columna/fila
   [E9] = Datos(0, 0)
   [G9] = Datos(1, 0)
   [C11] = Datos(2, 0)
Else
   MsgBox "*** Cédula: " & [C9] & " no encontrada ***", vbInformation
End If
Cnn.Close
Application.EnableEvents = True

End Sub

 

Share this post


Link to post
Share on other sites
Hace 2 horas, Antoni dijo:

Te dejo la macro Consultar, cuando pueda iré por la macro Actualizar:


Sub Consultar()

Dim Cnn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Sql As String, Datos As Variant
Dim NumId As String

Application.ScreenUpdating = False
NumId = [C9]
Set Cnn = New ADODB.Connection
With Cnn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=" & ThisWorkbook.Path & "\Datos\01.Adeudos.accdb"
    .Open
End With
Set Rs = New ADODB.Recordset
Sql = "SELECT Riesgo, [Monto Caso], Nombre FROM pen WHERE [Num Id] = '" & NumId & "'"
Rs.Open Sql, Cnn, 3, 3, adCmdText
Application.EnableEvents = False
[E9] = ""
[G9] = ""
[C11] = ""
If Not Rs.EOF = True Then
   Datos = Rs.GetRows 'Matriz columna/fila
   [E9] = Datos(0, 0)
   [G9] = Datos(1, 0)
   [C11] = Datos(2, 0)
Else
   MsgBox "*** Cédula: " & [C9] & " no encontrada ***", vbInformation
End If
Cnn.Close
Application.EnableEvents = True

End Sub

 

Pues aquí está la macro Actualizar:

Sub Actualizar()

Dim Cnn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Sql As String
Dim NumId As String

Application.ScreenUpdating = False
If Not [G11] = "SI" And Not [G11] = "NO" Then
   MsgBox "*** Moroso: " & [G11] & " valores SI/NO ***", vbCritical
   Exit Sub
End If
If Trim([C13]) = "" Then
   MsgBox "*** Número Patronal en blanco ***", vbCritical
   Exit Sub
End If
If Trim([E13]) = "" Then
   MsgBox "*** Nombre Patronal en blanco ***", vbCritical
   Exit Sub
End If

NumId = [C9]
Set Cnn = New ADODB.Connection
With Cnn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=" & ThisWorkbook.Path & "\Datos\01.Adeudos.accdb"
    .Open
End With
Set Rs = New ADODB.Recordset
Sql = "SELECT Moroso, Nun_Patrono, Nom_Patrono FROM pen WHERE [Num Id] = '" & NumId & "'"
Rs.Open Sql, Cnn, 3, 3, adCmdText
If Not Rs.EOF = True Then
   Rs.Fields("Moroso").Value = [G11]
   Rs.Fields("Nun_Patrono").Value = [C13]
   Rs.Fields("Nom_Patrono").Value = [E13]
   Rs.Update
   Application.EnableEvents = False
   [G11] = ""
   [C13] = ""
   [E13] = ""
   Application.EnableEvents = True
Else
   MsgBox "*** Cédula: " & [C9] & " no encontrada ***", vbCritical
End If
Cnn.Close

End Sub

 

Edited by Antoni

Share this post


Link to post
Share on other sites

Muchas gracias 

Estaba revisando la información y requiero de la ayuda en lo siguiente:


1 Requiero que esa información la tome de la base de datos "01.Adeudos" tabla "usuarios". Además que que dependiendo las hojas activas sean visualizadas o ocultas. solo el administrador debe tener acceso a todas las hojas. Esto funciona solo si hay solo si el usuario activa una hoja pero si se requiere que estén activas mas de una hoja no funciona. ejemplo el user marco pass 123 debería tener activas las hojas "Registro, Registro1, Registro2". como esta ahorita solo visualiza la hoja "Registro"

Ademas un favor extra que dependiendo el usuario que inicie sección detecte el Nombre de la columna "Nombre" en ("01.Adeudos" tabla "usuarios") y lo pegue en la hoja "Principal" celda C7.

 

De nuevo muchas gracias por toda la ayuda en el proyecto.

Saludos

Share this post


Link to post
Share on other sites
Sign in to follow this  



×
×
  • Create New...

Important Information

Privacy Policy