
TZTable con campos vacios y no NULOS
Publicado por Miguel Angel (4 intervenciones) el 07/05/2013 18:58:40
Hola,
llevo varios día con un problema que ha simple vista no debería de ser dificil de solucionar, pero aquí estoy sin saber que mas vueltas dar. Dicho problema me ha surgido con el componente TZTable del paquete de ZEOS.
Se trata de asignar un valor vacio, no NULO, a un determinado campo de tipo DBMemo. Pero al asignar la cadena vacia, el componente pone dicho campo con el valor NULL en la Base de datos (MySQL). No se trata de un problema de la estructura de la tabla, pues si la insercción se hace por codigo SQL funciona perfectamente.
Aquí dejo la función que utilizo para asignar este campo
la función falla cuando tipo=1, he intentado poner el caracter 0 (#0) en vez de dobles comillas, y en ese caso ya no retorna un valor NULL, pero esa opción no me sirve, por que la longitud del campo ya no es 0, si no 1.
Como ultima alternativa he actualizado a la ultima versión de los componentes ZEOS y continuo con el mismo problema.
Indicar que este mismo procedimiento esta funcionando sin ningun problema con los componentes ADO en una Base de datos de MSSQL
Gracias por su ayuda y un Saludo a todos
llevo varios día con un problema que ha simple vista no debería de ser dificil de solucionar, pero aquí estoy sin saber que mas vueltas dar. Dicho problema me ha surgido con el componente TZTable del paquete de ZEOS.
Se trata de asignar un valor vacio, no NULO, a un determinado campo de tipo DBMemo. Pero al asignar la cadena vacia, el componente pone dicho campo con el valor NULL en la Base de datos (MySQL). No se trata de un problema de la estructura de la tabla, pues si la insercción se hace por codigo SQL funciona perfectamente.
Aquí dejo la función que utilizo para asignar este campo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure AsignarValor(tipo:integer; valor:String);
begin
With zTable1 do
try
if not (State in [DsEdit, DsInsert]) then
edit;
case tipo of
//Se pone el valor a NULL
0:fieldByname('definicion2').Clear;
//Se pone el valor VACIO no NULL, longitud=0
1:fieldByname('definicion2').AsString='';
else
//Se asigna un determinado valor
fieldByname('definicion2').AsString=Valor;
end;
finally
try
post;
except
On e:Exception do begin
MessageDlg(E.Message, mtError, [mbOK], 0);
cancel;
end;
end;
end;
end;
la función falla cuando tipo=1, he intentado poner el caracter 0 (#0) en vez de dobles comillas, y en ese caso ya no retorna un valor NULL, pero esa opción no me sirve, por que la longitud del campo ya no es 0, si no 1.
Como ultima alternativa he actualizado a la ultima versión de los componentes ZEOS y continuo con el mismo problema.
Indicar que este mismo procedimiento esta funcionando sin ningun problema con los componentes ADO en una Base de datos de MSSQL
Gracias por su ayuda y un Saludo a todos
Valora esta pregunta


0