
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


0