Problemas con origen de datos en Microsoft Query

11/01/2007 - 11:53 por Adolfo Fernández | Informe spam
Hola gente,

Tengo un pequeño problema con Microsoft Query, les cuento:

Lo que quiero hacer es una consulta a dos origenes de datos diferentes para
poder relacionar las tablas entre si. En un origen de datos tengo una tabla
con las previsiones de cobro de los clientes (Codigo de Cliente y
vencimiento de la previsión) y en otro origen de datos tengo otra tabla con
el nombre del cliente. Lo que quiero es una consulta que me devuelva el
nombre del cliente y el vencimietno de la previsión, no el código. Para ello
tendría que vincular dichas tablas a traves del campo código y asi realizar
la consulta. Hasta aqui todo bien, el problema es que no se como hacer
(suponiendo que se pueda) una consulta a dos origenes de datos diferentes.
¿Alguien sabe si se puede hacer y en ese caso como hacerlo?

Una solución alternativa es crear dos consultas en la hoja excel y despues
crear un campo con buscarv, pero la hoja en la que trabajo ya tiene
demasiadas formulas matriciales y de vez en cuando me aparece el mensaje de
que no hay recursos suficientes. Estoy intentando optimizar al máximo la
capacidad de la hoja y una buena opción creo que sería quitar todas estas
funciones buscarv que tengo (generalmente son mas de 1000)

Un saludo y gracias por anticipado

Adolfo

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
12/01/2007 - 08:18 | Informe spam
hola, Adolfo !

1) comentarte que si efectivamente usas muchas/demsiadas formulas 'matriciales' y del tipo buscarv(...)
[probablemente] es tiempo de buscar alternativas menos 'consume-recursos' [dependiendo de las necesidades de tu modelo] -?-

2) si expones las cadenas de las consultas que harias de manera individual [para unirlas despues segun comentas]...
[probablemente] se podria idear/encontrar/... alguna manera de 'optimizar/las' -quizas- en una sola consulta -?-

-> para los dos puntos anteriores [probablemente] se podria usar solo macros [en lugar de 'bajar' las consultas a las hojas] ?-

3) [generalmente] las consultas 'cruzadas' a diferentes tablas/origenes de datos... son del tipo siguiente:

FROM T1 JOIN T2 ON T1.Field = T2.Field

registros comunes a ambas tablas:
SELECT T1.Cod, T1.Nombre FROM T1 T1 INNER JOIN T2 T2 ON T1.Cod = T2.Cod

registros en T1 que no estan en T2:
SELECT T1.Cod, T1.Nombre FROM T1 T1 LEFT JOIN T2 T2 ON T1.Cod = T2.Cod WHERE T2.Cod IS NULL

registros en T2 que no estan en T1:
SELECT T2.Cod, T2.Nombre FROM T1 T1 RIGHT JOIN T2 T2 ON T1.Cod = T2.Cod WHERE T1.Cod IS NULL

registros en ambas tablas sin duplicados:
SELECT T1.Cod, T1.Nombre FROM T1 T1 UNION SELECT T2.Cod, T2.Nombre FROM T2 T2

registros en ambas tablas incluyendo duplicados:
SELECT T1.Cod, T1.Nombre FROM T1 T1 UNION ALL SELECT T2.Cod, T2.Nombre FROM T2 T2 ORDER BY 1

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
... problema con Microsoft Query... hacer... una consulta a dos origenes de datos diferentes para... relacionar las tablas entre si.
En un origen... tengo una tabla con las previsiones de cobro de los clientes (Codigo de Cliente y vencimiento de la prevision)
y en otro origen de datos tengo otra tabla con el nombre del cliente.
... quiero... una consulta que me devuelva el nombre del cliente y el vencimietno de la prevision, no el codigo.
... tendria que vincular dichas tablas a traves del campo codigo y asi realizar la consulta.
... el problema es que no se como hacer (suponiendo que se pueda) una consulta a dos origenes de datos diferentes...
... alternativa es crear dos consultas en la hoja excel y despues crear un campo con buscarv
pero la hoja... ya tiene demasiadas formulas matriciales y de vez en cuando me aparece el mensaje de que no hay recursos suficientes.
Estoy intentando optimizar al maximo la capacidad de la hoja y una buena opcion creo que seria
quitar todas estas funciones buscarv que tengo (generalmente son mas de 1000)
Respuesta Responder a este mensaje
#2 Adolfo Fernández
12/01/2007 - 09:46 | Informe spam
Lo que estoy haciendo es una hoja de calculo para el control de la
tesorería, por lo tanto lo que necesito es saber las previsiones de cobro
que me genera el programa de contabilidad. Gracias a la ayuda de este foro
he ido perfeccionando la aplicación para que cada vez me de más datos y cada
vez sea mas eficiente.
Mi necesidad de más datos me obliga a optimizar al máximo posible las
formulas y los procesos que se ejecutan, y es en este punto donde me
encuentro.
Mi programa de contabilidad me genera las previsiones de los clientes pero
no me dice de quien es esa previsión, simplemente me da un código (el código
del cliente) lo que necesito es unir ese código con ese nombre (hay unos 700
clientes, y aprenderme el nombre de todos ellos es algo como que inviable,
además tengo en mismo problema con los proveedores)
Hasta ahora lo que hacia era lo siguiente, dos consultas (os presento el
código que me genera Microsoft Query en los archivos con extensión .dqy) y
unía ambas consultas en la hoja de excel con la función buscarv (pero
estamos hablando de unas ochocientas buscarv, lo cual unido al resto de
fórmulas a veces provoca el mensaje de que faltan recursos)

Consulta de las previsiones
DSN=COMU0001;UID=;SourceDB=\\PRINCIPAL\Ew600Serv\COMUNES\comunes.dbc;SourceT
ypeÛC;Exclusive=No;BackgroundFetch=No;Collate=Machine;Null=Sí;Deleted=Sí;
SELECT previ_cl.cliente, previ_cl.vencim, previ_cl.importe FROM previ_cl
previ_cl

Consulta de los clientes
DSN 07KK;UID=;SourceDB=C:\Ew600Serv\2007KK\GESTION.DBC;SourceTypeÛC;Excl
usive=No;BackgroundFetch=No;Collate=Machine;Null=Sí;Deleted=Sí;
SELECT clientes.codigo, clientes.nombre

Si las dos tablas estarían en una DSN el código que se generaría es el que
he puesto a continuación
Aquí tengo dos tablas, artículos y pvp unidas ambas por el código del
artículo. Lo que he conseguido es una consulta donde tenga todos los
artículos con su código, su nombre y su pvp.

Consulta con lo que quiero hacer si estuviese en una misma DSN
DSN 06KK;UID=;SourceDB=\\PRINCIPAL\Ew600Serv\2006KK\GESTION.DBC;SourceType
ÛC;Exclusive=No;BackgroundFetch=No;Collate=Machine;Null=Sí;Deleted=Sí;
SELECT articulo.marca, articulo.codigo, articulo.nombre, pvp.pvp,
articulo.subfamilia FROM articulo articulo, pvp pvp WHERE pvp.articulo articulo.codigo

Mi problema por lo tanto es saber como hacer esa consulta cuando las tablas
están en diferentes DSN

Lo de hacer con macros, no lo he intentado nunca y si que agradecería algún
manual o algo donde poder ver como hacer dicha consulta o por lo menos por
donde empezar.

Por si a alguien se le ocurre, en access si que podría vincular tablas de
diferentes DSN en una misma aplicación sin problemas, el problema radica en
que la tabla de las previsiones tiene demasiados índices y no me permite
vincularla.

Un saludo, gracias por anticipado y cualquier idea será bienvenida
Adolfo



"Héctor Miguel" escribió en el mensaje
news:%
hola, Adolfo !

1) comentarte que si efectivamente usas muchas/demsiadas formulas


'matriciales' y del tipo buscarv(...)
[probablemente] es tiempo de buscar alternativas menos


'consume-recursos' [dependiendo de las necesidades de tu modelo] -?-

2) si expones las cadenas de las consultas que harias de manera individual


[para unirlas despues segun comentas]...
[probablemente] se podria idear/encontrar/... alguna manera de


'optimizar/las' -quizas- en una sola consulta -?-

-> para los dos puntos anteriores [probablemente] se podria usar solo


macros [en lugar de 'bajar' las consultas a las hojas] ?-

3) [generalmente] las consultas 'cruzadas' a diferentes tablas/origenes de


datos... son del tipo siguiente:

FROM T1 JOIN T2 ON T1.Field = T2.Field

registros comunes a ambas tablas:
SELECT T1.Cod, T1.Nombre FROM T1 T1 INNER JOIN T2 T2 ON T1.Cod = T2.Cod

registros en T1 que no estan en T2:
SELECT T1.Cod, T1.Nombre FROM T1 T1 LEFT JOIN T2 T2 ON T1.Cod = T2.Cod


WHERE T2.Cod IS NULL

registros en T2 que no estan en T1:
SELECT T2.Cod, T2.Nombre FROM T1 T1 RIGHT JOIN T2 T2 ON T1.Cod = T2.Cod


WHERE T1.Cod IS NULL

registros en ambas tablas sin duplicados:
SELECT T1.Cod, T1.Nombre FROM T1 T1 UNION SELECT T2.Cod, T2.Nombre FROM T2


T2

registros en ambas tablas incluyendo duplicados:
SELECT T1.Cod, T1.Nombre FROM T1 T1 UNION ALL SELECT T2.Cod, T2.Nombre


FROM T2 T2 ORDER BY 1

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
> ... problema con Microsoft Query... hacer... una consulta a dos origenes


de datos diferentes para... relacionar las tablas entre si.
> En un origen... tengo una tabla con las previsiones de cobro de los


clientes (Codigo de Cliente y vencimiento de la prevision)
> y en otro origen de datos tengo otra tabla con el nombre del cliente.
> ... quiero... una consulta que me devuelva el nombre del cliente y el


vencimietno de la prevision, no el codigo.
> ... tendria que vincular dichas tablas a traves del campo codigo y asi


realizar la consulta.
> ... el problema es que no se como hacer (suponiendo que se pueda) una


consulta a dos origenes de datos diferentes...
> ... alternativa es crear dos consultas en la hoja excel y despues crear


un campo con buscarv
> pero la hoja... ya tiene demasiadas formulas matriciales y de vez en


cuando me aparece el mensaje de que no hay recursos suficientes.
> Estoy intentando optimizar al maximo la capacidad de la hoja y una buena


opcion creo que seria
> quitar todas estas funciones buscarv que tengo (generalmente son mas de


1000)



Respuesta Responder a este mensaje
#3 Héctor Miguel
14/01/2007 - 00:32 | Informe spam
hola, Adolfo !

1) revisa/analiza/adapta/... la conversacion 'al respecto' que puedes encontrar aqui: -> http://tinyurl.com/yyzewz
'habla' -precisamente- de como unir [JOIN] una tabla en excel/access... y/a/con una tabla en un servidor
-> en una ['sola' ?] consuta/query/... involucrando...
a) un 'StoredProcedure' [en el lado del servidor]
b) la 'maquinaria' de busqueda Jet [que es la que permite un 'pase-por' para unir xls/mdb con el servidor]
c) hacer/obtener/... un listado/recordset/... 'filtrando' -p.e.- los codigos en xls/mdb con 'el resto' de sus datos [en el servidor]

2) [probablemente] podras 'ahorrarte' unas cuantas de las 'chorrocientas' formulas buscarv y matriciales -?-

si cualquier duda [o 'despues de'... informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
... hoja de calculo para el control de la tesoreria
... necesito... saber las previsiones de cobro que me genera el programa de contabilidad
... Mi necesidad de mas datos me obliga a optimizar al maximo posible las formulas y los procesos que se ejecutan
... Mi programa de contabilidad me genera las previsiones de los clientes pero no me dice de quien es esa prevision
... me da... el codigo del cliente... necesito... unir ese codigo con ese nombre (... 700 clientes.. mismo problema con los proveedores)
... lo que hacia era... dos consultas (os presento el codigo que me genera Microsoft Query en los archivos con extension .dqy)
... unia ambas consultas en la hoja... con... buscarv (... unas ochocientas buscarv
... unido al resto de formulas a veces provoca el mensaje de que faltan recursos)

Consulta de las previsiones
DSN=COMU0001;UID=;SourceDB=\\PRINCIPAL\Ew600Serv\COMUNES\comunes.dbc;SourceTypeÛC;Exclusive=No;
BackgroundFetch=No;Collate=Machine;Null=Sí;Deleted=Sí; SELECT previ_cl.cliente, previ_cl.vencim, previ_cl.importe
FROM previ_cl previ_cl

Consulta de los clientes
DSN 07KK;UID=;SourceDB=C:\Ew600Serv\2007KK\GESTION.DBC;SourceTypeÛC;Exclusive=No;
BackgroundFetch=No;Collate=Machine;Null=Sí;Deleted=Sí; SELECT clientes.codigo, clientes.nombre

Si las dos tablas estarían en una DSN el codigo que se generaria es el que he puesto a continuacion
Aqui tengo dos tablas, articulos y pvp unidas ambas por el codigo del articulo.
Lo que he conseguido es una consulta donde tenga todos los articulos con su codigo, su nombre y su pvp.

Consulta con lo que quiero hacer si estuviese en una misma DSN
DSN 06KK;UID=;SourceDB=\\PRINCIPAL\Ew600Serv\2006KK\GESTION.DBC;SourceType
ÛC;Exclusive=No;BackgroundFetch=No;Collate=Machine;Null=Sí;Deleted=Sí;
SELECT articulo.marca, articulo.codigo, articulo.nombre, pvp.pvp, articulo.subfamilia
FROM articulo articulo, pvp pvp WHERE pvp.articulo = articulo.codigo

Mi problema por lo tanto es saber como hacer esa consulta cuando las tablas estan en diferentes DSN

Lo de hacer con macros, no lo he intentado nunca y si que agradeceria algun manual
o algo donde poder ver como hacer dicha consulta o por lo menos por donde empezar.

Por si a alguien se le ocurre, en access si que podria vincular tablas de diferentes DSN en una misma aplicacion sin problemas
el problema radica en que la tabla de las previsiones tiene demasiados indices y no me permite vincularla.
Respuesta Responder a este mensaje
#4 Adolfo Fernández
15/01/2007 - 08:52 | Informe spam
Muchas gracias, estoy analizando la información, pero creo que en principio
esto es lo que andaba buscando, no te voy a preguntar como has encontrado
algo asi, pero supongo que te ha costado lo suyo, asi que nuevamente muchas
gracias.

Saludos,
Adolfo

"Héctor Miguel" escribió en el mensaje
news:%
hola, Adolfo !

1) revisa/analiza/adapta/... la conversacion 'al respecto' que puedes


encontrar aqui: -> http://tinyurl.com/yyzewz
'habla' -precisamente- de como unir [JOIN] una tabla en


excel/access... y/a/con una tabla en un servidor
-> en una ['sola' ?] consuta/query/... involucrando...
a) un 'StoredProcedure' [en el lado del servidor]
b) la 'maquinaria' de busqueda Jet [que es la que permite un


'pase-por' para unir xls/mdb con el servidor]
c) hacer/obtener/... un listado/recordset/... 'filtrando' -p.e.- los


codigos en xls/mdb con 'el resto' de sus datos [en el servidor]

2) [probablemente] podras 'ahorrarte' unas cuantas de las 'chorrocientas'


formulas buscarv y matriciales -?-

si cualquier duda [o 'despues de'... informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
> ... hoja de calculo para el control de la tesoreria
> ... necesito... saber las previsiones de cobro que me genera el programa


de contabilidad
> ... Mi necesidad de mas datos me obliga a optimizar al maximo posible


las formulas y los procesos que se ejecutan
> ... Mi programa de contabilidad me genera las previsiones de los


clientes pero no me dice de quien es esa prevision
> ... me da... el codigo del cliente... necesito... unir ese codigo con


ese nombre (... 700 clientes.. mismo problema con los proveedores)
> ... lo que hacia era... dos consultas (os presento el codigo que me


genera Microsoft Query en los archivos con extension .dqy)
> ... unia ambas consultas en la hoja... con... buscarv (... unas


ochocientas buscarv
> ... unido al resto de formulas a veces provoca el mensaje de que faltan


recursos)
>
> Consulta de las previsiones
>


DSN=COMU0001;UID=;SourceDB=\\PRINCIPAL\Ew600Serv\COMUNES\comunes.dbc;SourceT
ypeÛC;Exclusive=No;
> BackgroundFetch=No;Collate=Machine;Null=Sí;Deleted=Sí; SELECT


previ_cl.cliente, previ_cl.vencim, previ_cl.importe
> FROM previ_cl previ_cl
>
> Consulta de los clientes
>


DSN 07KK;UID=;SourceDB=C:\Ew600Serv\2007KK\GESTION.DBC;SourceTypeÛC;Excl
usive=No;
> BackgroundFetch=No;Collate=Machine;Null=Sí;Deleted=Sí; SELECT


clientes.codigo, clientes.nombre
>
> Si las dos tablas estarían en una DSN el codigo que se generaria es el


que he puesto a continuacion
> Aqui tengo dos tablas, articulos y pvp unidas ambas por el codigo del


articulo.
> Lo que he conseguido es una consulta donde tenga todos los articulos con


su codigo, su nombre y su pvp.
>
> Consulta con lo que quiero hacer si estuviese en una misma DSN
>


DSN 06KK;UID=;SourceDB=\\PRINCIPAL\Ew600Serv\2006KK\GESTION.DBC;SourceType
> ÛC;Exclusive=No;BackgroundFetch=No;Collate=Machine;Null=Sí;Deleted=Sí;
> SELECT articulo.marca, articulo.codigo, articulo.nombre, pvp.pvp,


articulo.subfamilia
> FROM articulo articulo, pvp pvp WHERE pvp.articulo = articulo.codigo
>
> Mi problema por lo tanto es saber como hacer esa consulta cuando las


tablas estan en diferentes DSN
>
> Lo de hacer con macros, no lo he intentado nunca y si que agradeceria


algun manual
> o algo donde poder ver como hacer dicha consulta o por lo menos por


donde empezar.
>
> Por si a alguien se le ocurre, en access si que podria vincular tablas


de diferentes DSN en una misma aplicacion sin problemas
> el problema radica en que la tabla de las previsiones tiene demasiados


indices y no me permite vincularla.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida