Ver Mensaje Individual
  #3  
Antiguo 29-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Primero que nada yo (punto de vista personal) evito usar hasta donde me es posible la componente UpdateSQL. Es para mí una de las cosas mas oscuras de la VCL.

A juzgar por la consulta SELECT que pones, no necesitas esta componente; basta que pongas la propiedad RequestLive del Query en true.

Ahora bien, los parámetros en las sentencias INSERT, UPDATE y DELETE de un UpdateSQL se llenan en automático, para lo cual es necesario que correspondan a nombres de columnas seleccionadas. Como en tu consulta SELECT usas alias (por una razón que no entiendo) entonces las sentencias del UpdateSQL imagino que deberían usar estos alias.

Por otro lado, en las sentencias UPDATE y DELETE, las cláusulas WHERE deberían usar los parámetros especiales OLD, por ejemplo:

Código SQL [-]
where
  IdComp = :OLD_IdComp and IdAsiento = :OLD_IdAsiento

Cuando se ejecuta el ApplyUpdates, estos parámetros especiales se sustituyen por los valores originales que había en el Query. Esto es lo que permite al UpdateSQL identificar al registro que debe actualizarse o borrarse.

Si realmente requieres el uso de esta componente te recomiendo que leas la ayuda de Delphi donde viene explicado. No digo bien explicado porque como dije, a mi juicio es de lo que peor explicado está en la ayuda. Aún así te servirá para tener una mejor idea de cómo usar la componente.

La ayuda menciona también que la componente tiene una propiedad Query, disponible sólamente por código, con la cual puedes sustituir manualmente los parámetros. Jamás la he usado y espero no tener nunca que hacerlo pero aparentemente sirve para esos casos en los que los nombres de los parámetros no coinciden con los nombres originales de los campos.

// Saludos
Responder Con Cita