consultar tablas dbf

08/03/2005 - 17:57 por fredy | Informe spam
hola grupo...
mi necesidad es la siguiente:

tengo una tabla dbf (FUENTE)que proviene de foxpro con mas de 900.000
registros
tengo una tabla de excel la cual tengo que completar con datos de la tabla
dbf (FUENTE) la llave entre estas tablas es un numero de identificacion de
usuario y un numero de factura, los datos que tengo que extraer de (FUENTE)
para cada usuario pueden ser de cero hasta 10 datos, como puedo hacer la
consulta de FUENTE desde excel para extraer los datos de cada usuario???( mi
duda se debe a que latabla FUENTE no me la abre excel por la cantidad de
registros)

muchas gracias por su colaboracion

Preguntas similare

Leer las respuestas

#1 Manuel Romero
08/03/2005 - 19:44 | Informe spam
Menu Datos / Obtener datos externos / Nueva consulta de base de datos

crea el origen de datos y sigue el asistente, ahi puedes usar criterios de
seleccion e inclusive definir el orden de los registros a traer

"fredy" escribió en el mensaje
news:
hola grupo...
mi necesidad es la siguiente:

tengo una tabla dbf (FUENTE)que proviene de foxpro con mas de 900.000
registros
tengo una tabla de excel la cual tengo que completar con datos de la tabla
dbf (FUENTE) la llave entre estas tablas es un numero de identificacion de
usuario y un numero de factura, los datos que tengo que extraer de


(FUENTE)
para cada usuario pueden ser de cero hasta 10 datos, como puedo hacer la
consulta de FUENTE desde excel para extraer los datos de cada


usuario???( mi
duda se debe a que latabla FUENTE no me la abre excel por la cantidad de
registros)

muchas gracias por su colaboracion
Respuesta Responder a este mensaje
#2 fredy
08/03/2005 - 20:11 | Informe spam
gracias manuel, pero resulta "imposible leer este archivo" otra sugerencia
por favor, me gustaria manejarlo por macros alguna idea?

"Manuel Romero" wrote:

Menu Datos / Obtener datos externos / Nueva consulta de base de datos

crea el origen de datos y sigue el asistente, ahi puedes usar criterios de
seleccion e inclusive definir el orden de los registros a traer

"fredy" escribió en el mensaje
news:
> hola grupo...
> mi necesidad es la siguiente:
>
> tengo una tabla dbf (FUENTE)que proviene de foxpro con mas de 900.000
> registros
> tengo una tabla de excel la cual tengo que completar con datos de la tabla
> dbf (FUENTE) la llave entre estas tablas es un numero de identificacion de
> usuario y un numero de factura, los datos que tengo que extraer de
(FUENTE)
> para cada usuario pueden ser de cero hasta 10 datos, como puedo hacer la
> consulta de FUENTE desde excel para extraer los datos de cada
usuario???( mi
> duda se debe a que latabla FUENTE no me la abre excel por la cantidad de
> registros)
>
> muchas gracias por su colaboracion



Respuesta Responder a este mensaje
#3 fredy
08/03/2005 - 20:49 | Informe spam
listo Manuel ya pude realizar la consulta muchas gracias; sinembargo me
gustaria saber si es posible recorrer la tabla DBF ( mas de 900000¡
registros)desde excel con una macro sin tener que realizar este proceso de
consulta

gracias! : )

"fredy" wrote:

gracias manuel, pero resulta "imposible leer este archivo" otra sugerencia
por favor, me gustaria manejarlo por macros alguna idea?

"Manuel Romero" wrote:

> Menu Datos / Obtener datos externos / Nueva consulta de base de datos
>
> crea el origen de datos y sigue el asistente, ahi puedes usar criterios de
> seleccion e inclusive definir el orden de los registros a traer
>
> "fredy" escribió en el mensaje
> news:
> > hola grupo...
> > mi necesidad es la siguiente:
> >
> > tengo una tabla dbf (FUENTE)que proviene de foxpro con mas de 900.000
> > registros
> > tengo una tabla de excel la cual tengo que completar con datos de la tabla
> > dbf (FUENTE) la llave entre estas tablas es un numero de identificacion de
> > usuario y un numero de factura, los datos que tengo que extraer de
> (FUENTE)
> > para cada usuario pueden ser de cero hasta 10 datos, como puedo hacer la
> > consulta de FUENTE desde excel para extraer los datos de cada
> usuario???( mi
> > duda se debe a que latabla FUENTE no me la abre excel por la cantidad de
> > registros)
> >
> > muchas gracias por su colaboracion
>
>
>
Respuesta Responder a este mensaje
#4 Manuel Romero
09/03/2005 - 19:45 | Informe spam
Puedes usar ADO, activa una referencia a MS ActiveX Data Objects 2.X primero
y escribe unas sentencias asi

dim cn as new adodb.connection
dim rs as new adodb.recordset

cn.open "cadena de conexion"
rs.open "select * from tutabla where campo=valor", cn, adlockoptimistic,
adcmdtext
cnt=1
do until rs.eof
activesheet.range("a" & cnt)=rs("campo1")
activesheet.range("b" & cnt)=rs("campo2")
cnt=cnt+1
loop
rs.close
cn.close

la cadenas de conexion para tablas DBF la puedes encontrar en
www.connectionstrings.com

el ejemplo es muy (demasiado) sencillo, pero te puedes dar una idea de como
es

"fredy" escribió en el mensaje
news:
listo Manuel ya pude realizar la consulta muchas gracias; sinembargo me
gustaria saber si es posible recorrer la tabla DBF ( mas de 900000¡
registros)desde excel con una macro sin tener que realizar este proceso de
consulta

gracias! : )

"fredy" wrote:

> gracias manuel, pero resulta "imposible leer este archivo" otra


sugerencia
> por favor, me gustaria manejarlo por macros alguna idea?
>
> "Manuel Romero" wrote:
>
> > Menu Datos / Obtener datos externos / Nueva consulta de base de datos
> >
> > crea el origen de datos y sigue el asistente, ahi puedes usar


criterios de
> > seleccion e inclusive definir el orden de los registros a traer
> >
> > "fredy" escribió en el mensaje
> > news:
> > > hola grupo...
> > > mi necesidad es la siguiente:
> > >
> > > tengo una tabla dbf (FUENTE)que proviene de foxpro con mas de


900.000
> > > registros
> > > tengo una tabla de excel la cual tengo que completar con datos de la


tabla
> > > dbf (FUENTE) la llave entre estas tablas es un numero de


identificacion de
> > > usuario y un numero de factura, los datos que tengo que extraer de
> > (FUENTE)
> > > para cada usuario pueden ser de cero hasta 10 datos, como puedo


hacer la
> > > consulta de FUENTE desde excel para extraer los datos de cada
> > usuario???( mi
> > > duda se debe a que latabla FUENTE no me la abre excel por la


cantidad de
> > > registros)
> > >
> > > muchas gracias por su colaboracion
> >
> >
> >
Respuesta Responder a este mensaje
#5 fredy
09/03/2005 - 20:39 | Informe spam
Hola Manuel

estoy utilizando el codigo que me recomendaste ( aunque el anterior me
funciono el de datos externos lo adapte en una macro y me genero los
resultados que esperaba solo que se demoro casi 12 hrs para extraer los datos
de 9000 registros de la fuente de 900000 registros pero bueno...ahora busco
tal vez un poco de rapidez en el proceso)

PRIMERA SUGERENCIA DE MANUEL

MATRICULA = Sheets("HOJA2").Cells(i, 2)
FACTURA = Sheets("HOJA2").Cells(i, 4)
Application.StatusBar = "CONSULTA " & i & " DE 8577 MATRICULA " &
MATRICULA & " FACTURA " & FACTURA

With Sheets("HOJA1").QueryTables.Add(Connection:= _
"ODBC;DSN=dBASE
Files;DefaultDir=C:\BORREME\2;DriverIdS3;MaxBufferSize 48;PageTimeout=5;"
_
, Destination:=Sheets("HOJA1").Range("A1"))
.CommandText = Array( _
"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 & ")" _
)

.Name = "Consulta desde dBASE Files_13"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True

.Refresh BackgroundQuery:=False
End With

RESULTADO
ADI_MATR ADI_NFAC ADI_CODI ADI_VALO
117095 4 56 3000
117095 4 27 10408
117095 4 39 291
117095 4 28 0
117095 4 40 0
117095 4 61 3086
117095 4 63 -3

en la nueva sugerencia me extrae datos lo que pasa es que se queda en el loop

tengo:

MATRICULA = Sheets("HOJA2").Cells(i, 2)
FACTURA = Sheets("HOJA2").Cells(i, 4)

cn.Open "Driver={Microsoft dBASE Driver
(*.dbf)};DriverID'7;Dbq=C:\BORREME\2;"
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
cnt = 1
Do Until rs.EOF
ActiveSheet.Range("a" & cnt) = rs("adi_matr")
ActiveSheet.Range("b" & cnt) = rs("adi_nfac")
ActiveSheet.Range("c" & cnt) = rs("adi_nfac")
ActiveSheet.Range("d" & cnt) = rs("adi_codi")
ActiveSheet.Range("e" & cnt) = rs("adi_valo")
cnt = cnt + 1
Loop

Next i

rs.Close
cn.Close

RESULTADO
pero me extrae solo un registro

117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
117095 4 4 56 3000
. .

PORQUE PUEDE ESTAR SUCEDIENDO?

Gracias!!

"Manuel Romero" escribió:

Puedes usar ADO, activa una referencia a MS ActiveX Data Objects 2.X primero
y escribe unas sentencias asi

dim cn as new adodb.connection
dim rs as new adodb.recordset

cn.open "cadena de conexion"
rs.open "select * from tutabla where campo=valor", cn, adlockoptimistic,
adcmdtext
cnt=1
do until rs.eof
activesheet.range("a" & cnt)=rs("campo1")
activesheet.range("b" & cnt)=rs("campo2")
cnt=cnt+1
loop
rs.close
cn.close

la cadenas de conexion para tablas DBF la puedes encontrar en
www.connectionstrings.com

el ejemplo es muy (demasiado) sencillo, pero te puedes dar una idea de como
es

"fredy" escribió en el mensaje
news:
> listo Manuel ya pude realizar la consulta muchas gracias; sinembargo me
> gustaria saber si es posible recorrer la tabla DBF ( mas de 900000¡
> registros)desde excel con una macro sin tener que realizar este proceso de
> consulta
>
> gracias! : )
>
> "fredy" wrote:
>
> > gracias manuel, pero resulta "imposible leer este archivo" otra
sugerencia
> > por favor, me gustaria manejarlo por macros alguna idea?
> >
> > "Manuel Romero" wrote:
> >
> > > Menu Datos / Obtener datos externos / Nueva consulta de base de datos
> > >
> > > crea el origen de datos y sigue el asistente, ahi puedes usar
criterios de
> > > seleccion e inclusive definir el orden de los registros a traer
> > >
> > > "fredy" escribió en el mensaje
> > > news:
> > > > hola grupo...
> > > > mi necesidad es la siguiente:
> > > >
> > > > tengo una tabla dbf (FUENTE)que proviene de foxpro con mas de
900.000
> > > > registros
> > > > tengo una tabla de excel la cual tengo que completar con datos de la
tabla
> > > > dbf (FUENTE) la llave entre estas tablas es un numero de
identificacion de
> > > > usuario y un numero de factura, los datos que tengo que extraer de
> > > (FUENTE)
> > > > para cada usuario pueden ser de cero hasta 10 datos, como puedo
hacer la
> > > > consulta de FUENTE desde excel para extraer los datos de cada
> > > usuario???( mi
> > > > duda se debe a que latabla FUENTE no me la abre excel por la
cantidad de
> > > > registros)
> > > >
> > > > muchas gracias por su colaboracion
> > >
> > >
> > >



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida