Excel - Consulta a base datos Access, recogida de datos de varios registros

 
Vista:
Imágen de perfil de Juan Jose
Val: 9
Ha aumentado su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

Consulta a base datos Access, recogida de datos de varios registros

Publicado por Juan Jose (6 intervenciones) el 04/09/2022 19:30:08
Buenos Dias:

Tengo en Excel una funcion de consulta a una base de datos a acess.

La cuestion es que recoge los datos de un select a una tabla , y ese select tiene varios resultados, pero solo me guarda en el objeto el primer registro del select, y no consigo ver nada mas .

Este es el codigo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
'consulta de ticket
Function ConsultaTicket(ticket As String) As Object
    Dim cn As Object
    Dim conexion As String
    Dim ruta As String
    Dim baseDatos As String
    Dim datos As Object
    Dim resultado(4) As String
    Dim codticket As String
    Dim cantidad As String
    Dim concepto As String
    Dim precioUnitario As String
    Dim importe As String
    Dim datosConcepto As String
 
    ruta = ActiveWorkbook.Path
    baseDatos = "hotel.accdb"
 
    Set cn = CreateObject("ADODB.connection")
    conexion = " Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & ActiveWorkbook.Path & "\" & baseDatos
 
    cn.Open conexion
 
    'consulta
    consultaSql = "SELECT TICKET_DETALLE.[Codigo_Ticket], TICKET_DETALLE.[Cantidad], TICKET_DETALLE.[Concepto], TICKET_DETALLE.[Precio_Unitario], TICKET_DETALLE.[Importe] FROM TICKET_DETALLE WHERE ((TICKET_DETALLE.[Codigo_Ticket])= " & Chr(34) & ticket & Chr(34) & ")"
 
    'ejecutamos la consulta
    Set datos = cn.Execute(consultaSql)
 
    If Not datos.EOF Then
 
    'contamos los resultados para crear el array
    Dim numResultados As Integer
    numResultados = datos.RecordCount
    'creamos el array de datos
    ReDim arrayDatos(numResultados - 1, 5) As String
    i = 0
    Do Until rs.EOF
    'recogemos el resultado en un array
 
    arrayDatos(i, 0) = datos.Fields(0) 'id ticket
    arrayDatos(i, 1) = datos.Fields(1) 'cantidad
    arrayDatos(i, 2) = datos.Fields(2) 'concepto
    arrayDatos(i, 3) = datos.Fields(3) 'precio unitario
    arrayDatos(i, 4) = datos.Fields(4) 'importe
 
    i = i + 1
    datos.MoveNext
    Loop
    Else
    ReDim arrayDatos(0, 0) As String
    arrayDatos(0, 0) = 0
    End If
    'retorno
    ConsultaTicket = arrayDatos
    'Cierre de la conexion
    cn.Close: Set datos = Nothing
 
End Function

He Intentado utilizar un objeto DAO.Recordset pero me da error utilizar esa libreria.

Se os ocurre como puedo recoger los datos de varios registros.

Gracias y espero vuestra respuesta.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder