Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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' ;
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
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
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