Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-12-2003
[mateamargo] mateamargo is offline
Miembro Premium
 
Registrado: jul 2003
Posts: 82
Poder: 21
mateamargo Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 05-12-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 05-12-2003
[mateamargo] mateamargo is offline
Miembro Premium
 
Registrado: jul 2003
Posts: 82
Poder: 21
mateamargo Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 07-12-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #5  
Antiguo 08-12-2003
[mateamargo] mateamargo is offline
Miembro Premium
 
Registrado: jul 2003
Posts: 82
Poder: 21
mateamargo Va por buen camino
Hola,
Muchas gracias por tu respuesta.
Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:54:35.


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
Copyright 1996-2007 Club Delphi