PDA

Ver la Versión Completa : Update con checkbox liveBindings


Sir16
12-09-2018, 12:09:36
Buenos dias,

estoy usando livebindings para hacer una conexion con los diferentes componentes, he intentando hacer un dataset.post con el elemento checkbox me salta error, alguien puede echarme un cable de cual puede ser el problema?
procedure btnGuardarFamiliaClick(Sender: TObject);
var agrupacion,faltaValor :boolean;
begin
agrupacion := ckAgrupacionFamilia.Checked; // dbModConfiguracionTPV => tDataModule // dsFamiliasPantallaConfig => tAdoQuery
dbModConfiguracionTPV.dsFamiliasPantallaConfig.Edit;
if (dbModConfiguracionTPV.dsFamiliasPantallaConfigagrupacion = nil) then
begin
missatge := missatge +#13+ ' Seleccion de agrupación.';
faltaValor := true;
end
else if dbModConfiguracionTPV.dsFamiliasPantallaConfigagrupacion.Value <> agrupacion then
begin
dbModConfiguracionTPV.dsFamiliasPantallaConfigagrupacion.Value := agrupacion;
end;
if faltaValor then
begin
application.MessageBox(pwideChar(missatge),'Atención',mb_ok or mb_iconInformation);
end
else
begin
dbModConfiguracionTPV.dsFamiliasPantallaConfig.Post;
end;
end;

podria ser que como el campo en sql es un bit, delphi me devuelve el valor -1 al estar en estado de cheked y ahi esta el error? en caso de eso hay algun modo de poder arreglar eso, o que componente me remonendarian usar, ya que he provado tambien el tDBCheckBox pero no me queda muy claro como usarlo ya que en valueChecked le tengo true y tengo el mismo error
gracias de antemano.

mRoman
12-09-2018, 16:12:25
Hola....

Me parece que DBCheckBox en la propiedad que mencionas ValueChecked, le puedes cambiar a numeros.....por default tiene TRUE o FALSE no recuerdo, pero lo puedes borrar y le escribes numeros....no tengo delphi a la mano para confirmar lo q te comento.

Chécalo...espero no equivocarme y si es así, espero te sirva mi comentario.

Sir16
12-09-2018, 16:29:01
Hola....

Me parece que DBCheckBox en la propiedad que mencionas ValueChecked, le puedes cambiar a numeros.....por default tiene TRUE o FALSE no recuerdo, pero lo puedes borrar y le escribes numeros....no tengo delphi a la mano para confirmar lo q te comento.

Chécalo...espero no equivocarme y si es así, espero te sirva mi comentario.


Gracias por tan pronta respuesta.


Es correcto lo que me mencionas, el problema que me encuentro es que si le pongo los valores 0 o 1 me encuentro que me los detecta como integer y me da error al introducirlos ya que solo permite valor boleano.
La opción que me estoy viendo, es que tendre que cambiar el tipo de valor del sql de bit a tinyint para poder guardar el numérico, de esta forma con el dbCheckBox lo podre usar, per implica modificar la lectura del valor de este campo en las otras tablas que lo usa.

Sir16
13-09-2018, 11:03:56
Buscando mas información respeto al tema, me encuentro que si le añado la linea siguiente



dbModConfiguracionTPV.dsFamiliasPantallaConfigAgrupacion.ReadOnly := false;


No me salta el error pero tampoco me guarda el dato modificado.

A que puede ser debido eso?

Sir16
13-09-2018, 14:01:46
buenas, he descubierto el motivo por el que no guardaba los datos.
Resulta que en el procedimiento en uno de los campos tenia lo siguienteisnull(agrupacion,0) agrupacion

esto es lo que me hacia que al intentar guardar mer comentara que era un campo de lectura, por lo que haciento el procedure del adoQuery sin esta comprovacion me funciono correctamente.


Gracias por las contestaciones, y espero que le sirva a alguen en el futuro de este error mio.