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.
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.
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


0