Buscar un dato en access
Buenos dias!
tengo una planilla en excel y una base de datos en access
la idea de todo es ingresar datos en una planilla en excel, 1) enviar esos datos a access (parte completada), luego 2) recuperar los datos de una fila a traves de la comparacion con un rut (aqui logro traer los datos, pero la tabla completa) y luego 3) modificar un dato en la base da datos (aun no me meto en eso)
1) completo
2) a medias
3) aun por
ver
en el punto 2 tengo este codigo, pero necesito hacer la diferenciacion, solo traer und ato a la planilla y no la tabla completa
este es el codigo y esta en un modulo, que luego se ejecuta con un boton que cree en la hoja (sheet1)
'\\ -- Incluir la referencia de ADO
'--------------------------------------------------------------------------
Sub Main()
Dim sDBPath As String
' -- Ruta de la base de datos
sDBPath = "D:\Documents and Settings\Administrador\Escritorio\ficha_Alumno\base.mdb"
' -- Ejecutar el procedimiento
Call Query_Access_to_excel(sDBPath, "Sheet1", "Select * from alumno")
End Sub
Sub Query_Access_to_excel( _
sBd As String, _
sHoja As String, _
sSQL As String)
On Error GoTo error_handler
Dim rs As ADODB.Recordset ' -- Variable recordset
Dim sConnection As String ' -- Cadena de con .
Dim Range_Destino As Range ' -- Variable de tipo Range
Dim i As Integer
' -- Bloquear la actualización de pantalla para acelerar el proceso
Application.ScreenUpdating = False
Set Range_Destino = ActiveWorkbook.Sheets(sHoja).Cells(1, 1)
' -- Asignar la Cadena de conexión
sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & sBd & ";"
' -- Crear un nuevo recordset
Set rs = New ADODB.Recordset
' -- traer los registros
Call rs.Open(sSQL, sConnection, adOpenForwardOnly, adLockReadOnly)
' -- .. Si hay registros
If Not rs.EOF Then
' -- Nombre de los encabezados
For i = 0 To rs.Fields.Count - 1
Range_Destino.Offset(0, i).Value = rs.Fields(i).Name
Next
' -- Copiar los registros
Range_Destino.Offset(1, 0).CopyFromRecordset rs
DoEvents
' -- Listo
MsgBox "Importación Completa", vbInformation
Else
' -- No hay datos
MsgBox "No hay registros activos para importar", vbInformation
End If
' -- Liberar el recordset y referencias
If Not rs Is Nothing Then
If rs.State = adStateOpen Then
rs.Close ' -- close
End If
Set rs = Nothing
End If
If Not Range_Destino Is Nothing Then
Set Range_Destino = Nothing
End If
' -- Error --
Exit Sub
error_handler:
MsgBox Err.Description, vbCritical
End Sub
espero me puedas ayudar!!
tengo una planilla en excel y una base de datos en access
la idea de todo es ingresar datos en una planilla en excel, 1) enviar esos datos a access (parte completada), luego 2) recuperar los datos de una fila a traves de la comparacion con un rut (aqui logro traer los datos, pero la tabla completa) y luego 3) modificar un dato en la base da datos (aun no me meto en eso)
1) completo
2) a medias
3) aun por
ver
en el punto 2 tengo este codigo, pero necesito hacer la diferenciacion, solo traer und ato a la planilla y no la tabla completa
este es el codigo y esta en un modulo, que luego se ejecuta con un boton que cree en la hoja (sheet1)
'\\ -- Incluir la referencia de ADO
'--------------------------------------------------------------------------
Sub Main()
Dim sDBPath As String
' -- Ruta de la base de datos
sDBPath = "D:\Documents and Settings\Administrador\Escritorio\ficha_Alumno\base.mdb"
' -- Ejecutar el procedimiento
Call Query_Access_to_excel(sDBPath, "Sheet1", "Select * from alumno")
End Sub
Sub Query_Access_to_excel( _
sBd As String, _
sHoja As String, _
sSQL As String)
On Error GoTo error_handler
Dim rs As ADODB.Recordset ' -- Variable recordset
Dim sConnection As String ' -- Cadena de con .
Dim Range_Destino As Range ' -- Variable de tipo Range
Dim i As Integer
' -- Bloquear la actualización de pantalla para acelerar el proceso
Application.ScreenUpdating = False
Set Range_Destino = ActiveWorkbook.Sheets(sHoja).Cells(1, 1)
' -- Asignar la Cadena de conexión
sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & sBd & ";"
' -- Crear un nuevo recordset
Set rs = New ADODB.Recordset
' -- traer los registros
Call rs.Open(sSQL, sConnection, adOpenForwardOnly, adLockReadOnly)
' -- .. Si hay registros
If Not rs.EOF Then
' -- Nombre de los encabezados
For i = 0 To rs.Fields.Count - 1
Range_Destino.Offset(0, i).Value = rs.Fields(i).Name
Next
' -- Copiar los registros
Range_Destino.Offset(1, 0).CopyFromRecordset rs
DoEvents
' -- Listo
MsgBox "Importación Completa", vbInformation
Else
' -- No hay datos
MsgBox "No hay registros activos para importar", vbInformation
End If
' -- Liberar el recordset y referencias
If Not rs Is Nothing Then
If rs.State = adStateOpen Then
rs.Close ' -- close
End If
Set rs = Nothing
End If
If Not Range_Destino Is Nothing Then
Set Range_Destino = Nothing
End If
' -- Error --
Exit Sub
error_handler:
MsgBox Err.Description, vbCritical
End Sub
espero me puedas ayudar!!