Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problemas con BDE (SQL) (https://www.clubdelphi.com/foros/showthread.php?t=5827)

mateamargo 05-12-2003 19:55:00

Problemas con BDE (SQL)
 
Hola,
Tengo un programa en el cual abro una consulta de un dbf desde el bde, la sentencia sql es como sigue:
select * from cab_com,lincom
where cab_com.ser_doc = lin_com.ser_doc and
cab_com.num_doc = lin_com.num_doc

los tipos de los campos son los siguientes
ser_doc = character 3 posiciones largo
num_doc = numerico 6 posiciones largo
el resultado de esta consulta es :
ser_doc num_doc cod_art cantidad Precio
A 100 10 10 10.00
A 101 55 5 25.00
A 103 88 7 35.00

pero resulta que el resultado debería ser :

ser_doc num_doc cod_art cantidad Precio
A 100 10 10 10.00
A 101 55 5 25.00
102 62 8 27.50
A 103 88 7 35.00

El problema es:
No encuenta los documentos cuya serie es blanco o nulo !!!
Probe lo mismo con visual foxpro y me da el resultado correcto
Interpreta distinto la sentencia ?
cab_com.ser_doc = lin_com.ser_doc
cuando son nulos o blancos los valores de los campos ?
tengo la necesidad de resolver esto a la brevedad
desde ya muchas gracias por vuestra ayuda

roman 05-12-2003 21:04:44

Intenta cambiar

where cab_com.ser_doc = lin_com.ser_doc

por

where (cab_com.ser_doc = lin_com.ser_doc or cab_com.ser_doc is null)

// Saludos

mateamargo 05-12-2003 21:27:22

Hola,
lo probe y funciono,
ahora bien: no entendi el porque solamente hacer cab_com.ser_doc is null y no haces el lin_com.ser_doc is null ?
como hace la comparacion el BDE ?
muchas gracias por tu respuesta
Saludos

roman 07-12-2003 18:27:26

Cita:

mateamargo comentó:
Hola,
lo probe y funciono,
ahora bien: no entendi el porque solamente hacer cab_com.ser_doc is null y no haces el lin_com.ser_doc is null ?
como hace la comparacion el BDE ?

La comparación con IS NULL laheces para los campos donde puede haber registros null, no sé si en tu caso el campo li_com.ser_doc también pueder ser null.

Lo que hay que saber aquí es que null es un valor especial por lo que las comparaciones de igualdad con null siempre dan false (al menos en el estándard) y por ello hay que usar el operador IS.

// Saludos

mateamargo 08-12-2003 14:03:43

Hola,
Muchas gracias por tu respuesta.
Saludos


La franja horaria es GMT +2. Ahora son las 11:20:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi