consulta dbf transponer datos

14/03/2005 - 18:23 por fredy | Informe spam
hola grupo tengo la siguiente situacion:
estoy haciendo una consulta a dos bases de datos obteniendo los resultados
esperados ( gracias a Manuel y KL) estos datos estan en la hoja "C_pla_pun"
lo siguiente que quiero hacer es otra consulta para cada uno de los registros
de la hoja "C_pla_pun", pero esta vez transponiendo los datos es decir los
datos que obtengo de otra consulta y que pongo en la hoja "C_adiciona"( no
mas de 10 registros)pegarlos a cada registro de la hoja "C_pla_pun",
actualmente lo estoy haciendo con el siguiente codigo ( pero es super lento)

Sub datos_adiciona()
Application.ScreenUpdating = False
Application.EnableEvents = False

cn.Open "Driver={Microsoft dBASE Driver
(*.dbf)};DriverID'7;Dbq=C:\BORREME\2;"

Sheets("C_ADICIONA").Select
For i = 2 To 8000
MATRICULA = Sheets("c_pla_pun").Cells(i, 1)
FACTURA = Sheets("c_pla_pun").Cells(i, 3)

rs.Open "select adiciona.ADI_MATR,
adiciona.ADI_NFAC,adiciona.ADI_CODI,adiciona.ADI_VALO" & Chr(13) & "" &
Chr(10) & "FROM adiciona adiciona" & Chr(13) & "" & Chr(10) &
"WHERE(adiciona.ADI_MATR='" & MATRICULA & "') AND (adiciona.ADI_NFAC=" &
FACTURA & ")", cn, adlockoptimistic, adcmdtext

Range("A1").CopyFromRecordset rs

Sheets("c_adiCiona").Range("C1:C10).Copy
Sheets("c_pla_pun").Cells(i, 26).PasteSpecial Paste:=xlValues, Transpose:=True
Sheets("c_adiCiona").Range("D1:D10).Copy
Sheets("c_pla_pun").Cells(i, 36).PasteSpecial Paste:=xlValues, Transpose:=True
Sheets("c_adiCiona").Cells.Clear
rs.Close

Next i

cn.Close
End Sub

existe alguna forma de agilizar este proceso
es posible algo como copyfromrecordset ( pero transponerlo) los campos que
necesito de la tabla "adiciona" son adiciona.ADI_CODI adiciona.ADI_VALO, por
cada matricula y factura, la tabla adiciona puede devolver hasta 15 registros
estos son los que necesito transponer en la hoja "C_pla_pun", para la
matricula seleccionada

muchas gracias por su ayuda :B
 

Leer las respuestas

#1 KL
14/03/2005 - 19:11 | Informe spam
Hola Fredy,

He estado pensando (aunque no he tenido ocasion para experimentar con esto)
?que pasaria si pasaras el recordset a una matriz y la traspusieras usando
la funcion de hoja de calculo, algo como:

Dim MiMatriz As Variant
Dim MiRango As Range
Dim rs As New ADODB.Recordset

MiMatriz=rs.GetRows
MiRango.Value=Application.WorksheetFunction.Transpose(MiMatriz)

Saludos,
KL


"fredy" wrote in message
news:
hola grupo tengo la siguiente situacion:
estoy haciendo una consulta a dos bases de datos obteniendo los resultados
esperados ( gracias a Manuel y KL) estos datos estan en la hoja
"C_pla_pun"
lo siguiente que quiero hacer es otra consulta para cada uno de los
registros
de la hoja "C_pla_pun", pero esta vez transponiendo los datos es decir los
datos que obtengo de otra consulta y que pongo en la hoja "C_adiciona"( no
mas de 10 registros)pegarlos a cada registro de la hoja "C_pla_pun",
actualmente lo estoy haciendo con el siguiente codigo ( pero es super
lento)

Sub datos_adiciona()
Application.ScreenUpdating = False
Application.EnableEvents = False

cn.Open "Driver={Microsoft dBASE Driver
(*.dbf)};DriverID'7;Dbq=C:\BORREME\2;"

Sheets("C_ADICIONA").Select
For i = 2 To 8000
MATRICULA = Sheets("c_pla_pun").Cells(i, 1)
FACTURA = Sheets("c_pla_pun").Cells(i, 3)

rs.Open "select adiciona.ADI_MATR,
adiciona.ADI_NFAC,adiciona.ADI_CODI,adiciona.ADI_VALO" & Chr(13) & "" &
Chr(10) & "FROM adiciona adiciona" & Chr(13) & "" & Chr(10) &
"WHERE(adiciona.ADI_MATR='" & MATRICULA & "') AND (adiciona.ADI_NFAC=" &
FACTURA & ")", cn, adlockoptimistic, adcmdtext

Range("A1").CopyFromRecordset rs

Sheets("c_adiCiona").Range("C1:C10).Copy
Sheets("c_pla_pun").Cells(i, 26).PasteSpecial Paste:=xlValues,
Transpose:=True
Sheets("c_adiCiona").Range("D1:D10).Copy
Sheets("c_pla_pun").Cells(i, 36).PasteSpecial Paste:=xlValues,
Transpose:=True
Sheets("c_adiCiona").Cells.Clear
rs.Close

Next i

cn.Close
End Sub

existe alguna forma de agilizar este proceso
es posible algo como copyfromrecordset ( pero transponerlo) los campos que
necesito de la tabla "adiciona" son adiciona.ADI_CODI adiciona.ADI_VALO,
por
cada matricula y factura, la tabla adiciona puede devolver hasta 15
registros
estos son los que necesito transponer en la hoja "C_pla_pun", para la
matricula seleccionada

muchas gracias por su ayuda :B

Preguntas similares