Excel - CONSULTA A PARTIR 2 RECORDSET

 
Vista:
sin imagen de perfil

CONSULTA A PARTIR 2 RECORDSET

Publicado por Carlos Junior (1 intervención) el 29/03/2023 18:33:13
Hola con todos, espero puedan ayudarme con este problema que llevo varios días sin poder solucionar. Bueno, lo que quiero hacer es lo siguiente: Estoy trabajando con tablas .dbf que están en diferentes ubicaciones, pero siendo mas concreto solo estoy trabajando con 2 de ellas, al estar en diferentes ubicaciones he creado 2 conexiones ADOBD diferentes y las he almacenados en 2 recordset. Lo que necesito es hacer un Inner JOIN a partir de estos 2 recordset, pero estoy un poco perdido con respecto a la sintaxis, tengo la idea que dentro del primer recordset puedo referenciar al segundo Recorset en la consulta sql, pero no he dado con la correcta sintaxis de la consulta. Puede ser que haya otra forma pero no he encontrado mucha referencias, espero puedan ayudarme con esta consulta. Dejo mi Código par mas detalle:
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
60
61
62
63
64
Dim dbConn As ADODB.Connection
Dim dbConn2 As ADODB.Connection
Dim dbRS As ADODB.Recordset
Dim dbRS2 As ADODB.Recordset
Dim strSQL As String
Dim strSQL2 As String
'//PRIMERA CONEXION
Set dbConn = New ADODB.Connection
 
dbConn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=z:\subvenci;Extended Properties=dBASE IV;User ID=Admin;"
 
Set dbRS = New ADODB.Recordset
dbRS.CursorType = adOpenKeyset
strSQL = "SELECT * FROM  SPUMTD04"
 
dbRS.Open strSQL, dbConn
 
 
'//SEGUNDA CONEXION
Set dbConn2 = New ADODB.Connection
 
dbConn2.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=z:\anual;Extended Properties=dBASE IV;User ID=Admin;"
 
 
'¿AQUI VIENE EL PROBLEMA COMO REFERENCIO EN LA CONSULTA LO QUE CONTIENE dbRS PARA REALIZAR UN LEFT JOIN?
 
strSQL2 = "SELECT H.HA_TIPCON, H.HA_CODIGO, H.HA_CATEGO, H.HA_CODREM FROM HABE H LEFT JOIN " -->     AQUI TENDRIA QUE IR LO QUE HAY EN dbRs <--- " S ON H.HA_CODREM = S.D04_CODREM WHERE HA_CODIGO = '0166' and HA_CODREM <> '058'"
 
 Set dbRS2 = New ADODB.Recordset
 dbRS2.CursorType = adOpenKeyset
 
dbRS2.Open strSQL2, dbConn2
 
 
If dbRS.EOF And dbRS.BOF Then GoTo CleanUp
 
intFieldCount = dbRS.Fields.Count
intRowCount = CStr(dbRS.RecordCount)
dbRS.MoveFirst
 
'Bucle para vaciar el resultado del primer recordset en una hoja excel
        For i = 0 To intFieldCount - 1
            With Sheets(1).Range("A1").Offset(0, i)
                .Font.Bold = True
                .Value = dbRS.Fields(i).Name
            End With
        Next
 
 
        While Not dbRS.EOF
            For i = 0 To intFieldCount - 1
                Sheets(1).Range("A1").Offset(j, i) = IIf(IsNull(dbRS.Fields(i).Value), "", dbRS.Fields(i).Value)
            Next
            j = j + 1
            dbRS.MoveNext
 
        Wend
 
 
        dbRS.Close
        Set dbRS = Nothing
        dbConn.Close
        Set dbRS = Nothing
        Set dbConn = Nothing
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