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)
-   -   Update con checkbox liveBindings (https://www.clubdelphi.com/foros/showthread.php?t=93400)

Sir16 12-09-2018 12:09:36

Update con checkbox liveBindings
 
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?
Código Delphi [-]
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

Cita:

Empezado por mRoman (Mensaje 528375)
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



Código Delphi [-]
 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 siguiente
Código SQL [-]
isnull(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.


La franja horaria es GMT +2. Ahora son las 02:33:32.

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