Ver Mensaje Individual
  #8  
Antiguo 24-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 24
guillotmarc Va por buen camino
Hola.

Cuando tu actualizas un cambio en el ClientDataset, el ApplyUpdates no lo pasa al IBDataset para que se ejecute en él, sinó que se construye una sentencia UPDATE que realiza la modificación.

update table set campo1 = valor1, campo2 = valor2, ....
where campo1 = campo1 and campo2 = valor2 and ...

Cuando quitas el pfInWhere de un campo, no se añadirá a la cláusula where de la sentencia update. Esto es util por ejemplo en los campos memo, donde hay que quitarlo para que no esté un campo memo en el where (cosa que no aceptan muchos motores).

Aunque tienes que tener en cuenta que hay 3 formas para realizar las sentencias update. Esto depende del UpdateMode del DatasetProvider.

upWhereAll
upWhereChanged
upWhereKeyOnly

La primera opción construye el select con todos los campos en el Where (excepto naturalmente los marcados sin pfInWhere). La segunda opción construye la cláusula where, con los campos de clave primaria (pfInKey) y los campos que han cambiado, finalmente la 3a. opción solo pone en el where los campos de clave primaria.

Personalmente utilizo la 3a opción (aunque probablemente la más recomendable es la 2a).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita