Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
carloshernandez
Contributor III
Contributor III

Error al consultar con el mismo script dos bases de datos

Estimados todos:

Tengo un problema al tratar de leer de dos bases de datos diferentes, ambas son SQL, el script es el mismo y la consulta es a las mismas tablas cuando me conecto a la primer base y se ejcuta la consulta, no hay problema y despliego bien la información, el problema surge cuando se conecta a la segunda base  y ejecuta la misma consulta, aun cuando no marca error, la aplicación se queda pasmada y ya no funciona y hay que cerrarlo,

Alguien podra ayudarme con este caso, use el Concatenate para evitar una llave sintetica pero no se si sea correcto en este tipo de scripts.

De antemano mil gracias.

Anexo el script que utilizo

Conexion 1 OLEDB  base 1;

 

SQL

SELECT    VentaTCalc.Id,

((VentaTCalc.Cantidad*MovTipo.Factor)*Art.Merma) as TotalUnidad, VentaTCalc.Sucursal, VentaTCalc.Mov, VentaTCalc.ContUso,

VentaTCalc.MovID, VentaTCalc.FechaEmision, VentaTCalc.Estatus, VentaTCalc.Cliente, VentaTCalc.Agente,

Datename(month, VentaTCalc.FechaEmision) As NombreDelMes,

Datename(Week, VentaTCalc.FechaEmision) As Semana,

Datename(Day, VentaTCalc.FechaEmision) As Dia,

VentaTCalc.Condicion, VentaTCalc.Ejercicio,

VentaTCalc.Periodo, VentaTCalc.Articulo, VentaTCalc.Unidad, VentaTCalc.Precio,

(CASE WHEN MovTipo.Clave='VTAS.B' THEN 0 ELSE VentaTCalc.Cantidad END) As VentaTCalcCantidad,

VentaTCalc.Costo,VentaTCalc.UltimoCosto, VentaTCalc.Importe, VentaTCalc.SubTotal, Sucursal.Nombre, Sucursal.Sucursal AS SucNumero, Sucursal.Grupo,Sucursal.Poblacion,

Sucursal.Estado, Sucursal.Region,Agente.Tipo As TipoAgente, Agente.Nombre AS AgNombre, Art.Descripcion1,  Art.Tipo,Art.Merma,

(CASE WHEN  Art.CodigoAlterno Is NULL THEN 'VARIOS' ELSE  Art.CodigoAlterno END) As  ArtCodigoAlterno,

MovTipo.Clave,MovTipo.Factor,(CASE WHEN Cte.Categoria Is NULL THEN 'Otros' ELSE Cte.Categoria END) As CategoCte,Cte.Familia,Cte.Nombre As CteNombre,

MovTipo.Modulo

FROM        

                                VentaTCalc INNER JOIN

                      Sucursal ON VentaTCalc.Sucursal = Sucursal.Sucursal INNER JOIN

                      Agente ON VentaTCalc.Agente = Agente.Agente INNER JOIN

                      Art ON VentaTCalc.Articulo = Art.Articulo INNER JOIN

                      MovTipo ON VentaTCalc.Mov = MovTipo.Mov INNER JOIN

                      Cte ON VentaTCalc.Cliente = Cte.Cliente

                     

WHERE             

                              VentaTCalc.Ejercicio in (2012,2013)  AND Agente.Estatus='ALTA'  And MovTipo.Modulo='VTAS'

                              AND VentaTCalc.Estatus In('PENDIENTE','CONCLUIDO');

Concatenate

SQL

SELECT    

Cxc.ID As CxcId,

(CASE WHEN Cte.Categoria Is NULL THEN 'Otros' ELSE Cte.Categoria END) As CategoCte,

Cxc.Mov, Cxc.MovID, Cxc.FechaEmision, Cxc.Concepto,Cxc.Estatus, Cxc.Cliente,Cxc.Importe,Cxc.Impuestos,Cxc.Agente, Cxc.Saldo, Cxc.Ejercicio As CxcEjercicio, Cxc.Periodo,Cxc.Sucursal,

Cxc.FechaRegistro, Cxc.ContUso,CxcInfo.ID AS CxcInfoID, CxcInfo.Empresa AS ExCxcInfoEmpresa,

CxcInfo.Cliente AS CxcInfoCte, CxcInfo.Mov AS CxcInfoMov, CxcInfo.MovID AS CxcInfoMovId, CxcInfo.FechaEmision AS CxcInfoFemision,

CxcInfo.Vencimiento,CxcInfo.DiasMoratorios, CxcInfo.Saldo AS CxcInfoSaldo,CxcInfo.Estatus AS CxcInfoEstatus,

Sucursal.Sucursal AS SucNumero, Sucursal.Nombre,Sucursal.Region,Sucursal.Grupo,MovTipo.Clave,MovTipo.Factor

FROM         Cxc INNER JOIN

                      Cte ON Cxc.Cliente = Cte.Cliente INNER JOIN

                      Sucursal ON Cxc.Sucursal = Sucursal.Sucursal INNER JOIN

                      CxcInfo ON Cxc.ID = CxcInfo.ID INNER JOIN

                      MovTipo ON Cxc.Mov = MovTipo.Mov

Where

MovTipo.Modulo='CXC' And Cxc.Estatus='PENDIENTE' ;

Conexion 2 OLEDB  base 2;

SQL

SELECT    VentaTCalc.id,

((VentaTCalc.Cantidad*MovTipo.Factor)*Art.Merma) as TotalUnidad, VentaTCalc.Sucursal, VentaTCalc.Mov, VentaTCalc.ContUso,

VentaTCalc.MovID, VentaTCalc.FechaEmision, VentaTCalc.Estatus, VentaTCalc.Cliente, VentaTCalc.Agente,

Datename(month, VentaTCalc.FechaEmision) As NombreDelMes,

Datename(Week, VentaTCalc.FechaEmision) As Semana,

Datename(Day, VentaTCalc.FechaEmision) As Dia,

VentaTCalc.Condicion, VentaTCalc.Ejercicio,

VentaTCalc.Periodo, VentaTCalc.Articulo, VentaTCalc.Unidad, VentaTCalc.Precio,

(CASE WHEN MovTipo.Clave='VTAS.B' THEN 0 ELSE VentaTCalc.Cantidad END) As VentaTCalcCantidad,

VentaTCalc.Costo,VentaTCalc.UltimoCosto, VentaTCalc.Importe, VentaTCalc.SubTotal, Sucursal.Nombre, Sucursal.Sucursal AS SucNumero, Sucursal.Grupo,Sucursal.Poblacion,

Sucursal.Estado, Sucursal.Region,Agente.Tipo As TipoAgente, Agente.Nombre AS AgNombre, Art.Descripcion1,  Art.Tipo,Art.Merma,

(CASE WHEN  Art.CodigoAlterno Is NULL THEN 'VARIOS' ELSE  Art.CodigoAlterno END) As  ArtCodigoAlterno,

MovTipo.Clave,MovTipo.Factor,(CASE WHEN Cte.Categoria Is NULL THEN 'Otros' ELSE Cte.Categoria END) As CategoCte,Cte.Familia,Cte.Nombre As CteNombre,MovTipo.Modulo

FROM        

                                 VentaTCalc INNER JOIN

                      Sucursal ON VentaTCalc.Sucursal = Sucursal.Sucursal INNER JOIN

                      Agente ON VentaTCalc.Agente = Agente.Agente INNER JOIN

                      Art ON VentaTCalc.Articulo = Art.Articulo INNER JOIN

                      MovTipo ON VentaTCalc.Mov = MovTipo.Mov INNER JOIN

                      Cte ON VentaTCalc.Cliente = Cte.Cliente                     

WHERE             

                              VentaTCalc.Ejercicio in (2012,2013)  AND Agente.Estatus='ALTA'  And MovTipo.Modulo='VTAS'

                              AND VentaTCalc.Estatus In('PENDIENTE','CONCLUIDO');

Concatenate

 

SQL

SELECT    

Cxc.ID As CxcId,

(CASE WHEN Cte.Categoria Is NULL THEN 'Otros' ELSE Cte.Categoria END) As CategoCte,

Cxc.Mov, Cxc.MovID, Cxc.FechaEmision, Cxc.Concepto,Cxc.Estatus, Cxc.Cliente,Cxc.Importe,Cxc.Impuestos,Cxc.Agente, Cxc.Saldo, Cxc.Ejercicio, Cxc.Periodo,Cxc.Sucursal,

Cxc.FechaRegistro, Cxc.ContUso,CxcInfo.ID AS CxcInfoID, CxcInfo.Empresa AS ExCxcInfoEmpresa,

CxcInfo.Cliente AS CxcInfoCte, CxcInfo.Mov AS CxcInfoMov, CxcInfo.MovID AS CxcInfoMovId, CxcInfo.FechaEmision AS CxcInfoFemision,

CxcInfo.Vencimiento,CxcInfo.DiasMoratorios, CxcInfo.Saldo AS CxcInfoSaldo,CxcInfo.Estatus AS CxcInfoEstatus,

Sucursal.Sucursal AS SucNumero, Sucursal.Nombre,Sucursal.Region,Sucursal.Grupo,MovTipo.Clave,MovTipo.Factor

FROM         Cxc INNER JOIN

                      Cte ON Cxc.Cliente = Cte.Cliente INNER JOIN

                      Sucursal ON Cxc.Sucursal = Sucursal.Sucursal INNER JOIN

                      CxcInfo ON Cxc.ID = CxcInfo.ID INNER JOIN

                      MovTipo ON Cxc.Mov = MovTipo.Mov

Where

   MovTipo.Modulo='CXC' And  Cxc.Estatus='PENDIENTE' ;

3 Replies
carloshernandez
Contributor III
Contributor III
Author

Estimados todos:

Creo que encontre el error, en lugar de utilizar el concatenate utilice Join, y ha funcionado al aprecer sin problemas y los datos son concordantes, solo me queda una duda, esto es correcto??

Saludos

Not applicable

Hola,

Depende de tu necesidad.

CONCATENATE es distinto a un JOIN (Espero que ya lo sepas), por lo tanto, el resultado estructuramente es distinto. Pero ya sea Concatenate o JOIN no debería haber problema.

En todo caso, sugiero que primero hagas una lectura limpia a cada tabla y la almacenes independientemente en archivos QVD. Posteriormente llámalos y realizas el concatenate.

Saludos,

Ricardo

carloshernandez
Contributor III
Contributor III
Author

Gracias RIcardo, utilice el Join entre los scripts y el resultado es positivo como ya lo habia mencionado, pero en tu experiencia seria mejor generar qvd, por separado y llamarlos en un archivo final?

Saludos y de antemano mil Gracias.

Saludos