PDA

Ver la Versión Completa : Valor nulo en un string


ElDioni
09-11-2005, 12:30:04
Hola
Estoy trabajando con delphi 7 y con access 97, bien mi problema es el siguiente, la bbdd que uso ya contenia datos por lo que mi programa trabaja sobre esos datos existentes, todo funciona a la perfeccion, guarda, modifica, borra, todo bien pero el problema me lo encuentro cuando entro dentro de la bbdd en access y hago un filtro excluyendo los registros de un campo que esten vacios, por lo visto el valor nulo de delphi para los strings ('') no es igual que el valor nulo de access por lo que me excluye todos los que estan vacios menos los que han sido modificados en mi programa de delphi, alguien sabe como podría solucionar este problema ya que el administrador necesita acceder a la bbdd desde access y hacer filtros en ella.

vtdeleon
09-11-2005, 12:40:00
Saludos

Como estas accediendo a la BD (Query o Table)??

Lo mejor seria usar Queryselect campo from tabla
where campo is null

marcoszorrilla
09-11-2005, 12:41:38
Access tiene una propiedad en sus campos textos "permitir longitud 0" (Allow Zero length), por defecto está en no, por lo que para modificarlo en Delphi, al no permitirte no escribir nada, supongo que insertas un espacio.

Por eso los de Access no modificados nunca no tienen nada y son nulos y los modificados desde Delphi sí.

Una solución puede ser cambiar dicha propiedad.

Otra modificar la consulta y en vez de Isnull, buscar Len(Campo)>1 para los no nulos o Len(Trim(Campo)) = 0 para los nulos.

Un Saludo.

ElDioni
09-11-2005, 13:05:36
Estoy utilizando un adoquery, en access me permite longitud cero , yo no guardo espacios en blanco, lo que guardo es comilla simple, comilla simple seguido, o sea un null string ('') para guardarlo utilizo lo siguiente

adoquery1.fieldbyname('NOMCLI').asstring:=txtcliente.text;

si el texto esta vacio me guarda vacio, pero debe ser que el valor null de delphi no es como el valor null de access. alguien sabria ayudarme.
gracias por adelantado

luisgutierrezb
09-11-2005, 17:22:10
creo que ahi esta el error, guardas una cadena vacia, no un null
adoquery1['NOMCLI'] := Null;

ElDioni
10-11-2005, 09:29:57
Gracias a todos por vuestra ayuda, efectivamente las comillas simples son consideradas un null string en delphi, pero por lo visto siguen siendo un string asi que la solución es meter null
de nuevo gracias