Problemas con instrucción SQL

29/04/2008 - 23:25 por ElTurle | Informe spam
Hola:

Tengo la siguiente instrucción sql:

SELECT Vencimientos.FEmision, Vencimientos.FVencimiento,
Empresas.Nombre, Vencimientos.NumEmpresa, Vencimientos.Factura,
Vencimientos.Total, Vencimientos.Remesa, Vencimientos.Banco,
[NumEntidad] & "-" & [NumSucursal] & "-" & [DC] & "-" & [Cuenta] AS
CtaCargo, CCC.Activa
FROM (Vencimientos INNER JOIN Empresas ON Vencimientos.NumEmpresa Empresas.IdEmpresa) LEFT JOIN CCC ON Empresas.IdEmpresa CCC.Id_Empresa
WHERE (((Vencimientos.Remesa)>0) AND
((Vencimientos.Banco)=DLookUp("[IdEmpresa]","Empresas","Remesas -1")) AND ((CCC.Activa)=-1));



En esta instrucción vinculo tres tablas Empresas y Vencimientos con
unión Inner Join y Empresas con CCC en unión left Join. La segunda
unión la hago así porque hay empresas que no tienen metida ninguna
cuenta bancaria, por lo que necesito que me muestre el registro aunque
no tenga cuenta bancaria. Pero la tabla de CCC admite varias cuentas
bancarias por empresa y mediante el campo Activa indico la cuenta en
la que se debe hacer el cargo y al poner la clausula en WHERE
CCC.Activa = -1 , ya no me saca los registros de vencimientos que no
tienen cuenta bancaria.

Por lo que lo que necesitaría que me hiciese la instrucción sql es:
que si la empresa no tiene cuenta me saque el registro sin cuenta y
que si tiene varias cuentas me saque aquella que tenga marcada como
activa.

Un Saludo y muchas gracias.
Juan Carlos

Preguntas similare

Leer las respuestas

#1 Carlos M. Calvelo
29/04/2008 - 23:38 | Informe spam
Hola Juan Carlos,

On 29 apr, 23:25, ElTurle wrote:
Mostrar la cita
Prueba con la condición CCC.Activa = -1 en el JOIN
en vez de en el WHERE.

LEFT JOIN CCC ON
Empresas.IdEmpresa = CCC.Id_Empresa AND CCC.Activa = -1

y ya verás como entonces va bien.

Piensa que las condiciones del where se aplican al
resultado del join, que no es lo mismo que una
condición que 'determina' el join.

Espero se entienda.

Saludos,
Carlos
#2 ElTurle
30/04/2008 - 09:32 | Informe spam
On 29 abr, 23:38, "Carlos M. Calvelo" wrote:
Mostrar la cita
Hola Carlos:

He puesto la instrucción como me has indicado y me sale el siguiente
error: "La expresión de combinación no está admitida".

La instrucción completa es:

SELECT Vencimientos.FEmision, Vencimientos.FVencimiento,
Empresas.Nombre, Vencimientos.NumEmpresa, Vencimientos.Factura,
Vencimientos.Total, Vencimientos.Remesa, Vencimientos.Banco,
[NumEntidad] & "-" & [NumSucursal] & "-" & [DC] & "-" & [Cuenta] AS
CtaCargo, CCC.Activa
FROM (Vencimientos INNER JOIN Empresas ON Vencimientos.NumEmpresa Empresas.IdEmpresa) LEFT JOIN CCC ON Empresas.IdEmpresa CCC.Id_Empresa AND CCC.Activa = -1
WHERE (Vencimientos.Remesa > 0 AND Vencimientos.Banco DLookUp("[IdEmpresa]","Empresas","Remesas = -1");



Un saludo.
Juan Carlos
#3 raimonegara
30/04/2008 - 10:32 | Informe spam
Hola Juan Carlos. ¿ Desde donde ejecutas esta consulta ?, ¿ Quizás
desde Microsoft Access ?
#4 raimonegara
30/04/2008 - 10:35 | Informe spam
... el mensaje anterior viene a cuento, porque si no voy errado,
DLookup es una función agregada de dominio, disponible en Access pero
no en Sql Server.

Adios, un saludo.
#5 Carlos M. Calvelo
30/04/2008 - 10:38 | Informe spam
Hola Juan Carlos,

Ni me había fijado en tu primer post, pero estás trabajando con
MS-Access SQL, no con T-SQL (SQL Server).


Mostrar la cita
Concanetación de cadenas en T-SQL se hace con +, no con &.
Para literales debes usar ' en vez de "; p.e. '-' en vez de "-".
Además si algunos de los atributos (como NumEntidad) son
numéricos deberías hacer antes una conversión a varchar, por
ejemplo.

cast([NumEntidad] as varchar) + '-' + etc.

Mostrar la cita
Con ms-access, no sé, pero creo que esto no va a ser posible.

Mostrar la cita
Qué es DLookUp? (Y aquí están otra vez los " en vez de ').

No conozco ms-access sql para poder ayudarte. Si la consulta
original funcionaba, seguro que estás usando ms-access.

A ver si alguien familirizado con ms-access te puede ayudar.
O puedes exponer tu pregunta en un foro de ms-access
(microsoft.public.es.access)

Saludos,
Carlos
Ads by Google
Search Busqueda sugerida