Hola David...
Gracias por tu respuesta, es mas que clara...te tendrías que dedicar a
la docencia...jejeje...!!!, tu explicación es la mas clara que enconté
hasta ahora.
Encontré muchas explicaciones en foros y web, pero ninguna tenia un
punto en común, al menos como para que me sirviera de guia y daban por
sentado varias cosas que yo no sabia, por lo que no llegaba a entender
el mecanismo de funcionamiento del componente.
De todas formas, todos los ejemplos, sugerencias y opiniones aportaron
su granito de arena.
Voy a ponerla en práctica y ver cómo funciona.
Desde ya, muchísimas gracias.
Saludos.
> La idea del TUPdateSQL es que trabajés sobre la TQuery asociada, no
> sobre el TUpdateSQL. Es decir:
> Asociá el TUpdateSQL al TQuery y llená cada una de las sentencias SQL
> como corresponda.
> Al momento de Agregar, borrar, o modificar un registro, activá la
> propiedad CachedUpdates del TQuery y hacé el cambio sobre el TQuery,
> en la forma que quieras.
> Una vez que terminaste con los cambios (1 o más) llamá al método
> ApplyUpdates del Tquery, con lo cual se van a impactar los cambios en
> la BD, utilizando las sentencias del TUpdateSQL, para cada uno de los
> registros que hayas modificado (borrado, creado o modificado).
>
> Ejemplo:
>
> Query1.SQL.Text := 'SELECT uno, dos FROM test WHERE usuario="david"';
> Query1.UpdateSQL := UpdateSQL1;
> UpdateSQL1.InsertSQL.Text := 'INSERT INTO test (uno,dos,usuario)
> VALUES(:uno,:dos,"david")';
> UpdateSQL1.ModifySQL.Text := 'UPDATE test SET uno = :uno, dos =
> "MODIFICADO: " + :dos WHERE uno = :OLD_uno AND usuario="david" AND dos
> = :OLD_dos';
> UpdateSQL1.DeleteSQL.Text := 'UPDATE test SET borrado = "david" WHERE
> uno = :OLD_uno AND dos = :OLD_dos AND usuario="david"';
>
> en el caso anterior, cuando trabaje sobre el Query1 voy a poder
> agregar y modificar, pero al borrar, en realidad voy a estar
> estableciendo un campo en la tabla, no borrando el registro.
> Ejemplo:
>
> Query1.CachedUpdates := True;
> try
> Query1.Delete;
> Query1.Edit;
> Query1.FieldByName('uno').AsString := 'lo cambié';
> Query1.Post;
> Query1.ApplyUpdates;
> except
> Query1.CancelUpdates;
> end;
>
> eso desde código, sino tenés que hacer algo así:
>
> TForm1.OpStart(); //asociado a cada botón/menú que inicia un cambio
> begin
> Query1.CachedUpdates := True;
> end;
>
> TForm1.OpEnd(Success:boolean);//asociado a cada botón/menú que
> finaliza la operación
> begin
> if Success then
> Query1.ApplyUpdates
> else
> Query1.CancelUpdates;
> end;
>
> Espero que te oriente.
> Saludos.
> David.
>
> --- En DesarrolloDelphi@...
> <mailto:DesarrolloDelphi%40gruposyahoo.com.ar>, Walter <wmeson@...>
> escribió:
> >
> > Hola amigos...
> > Estoy trabajando con una Query echa a una tabla dbf y necesito
> > actualizarla (agregar, borrar o modificar registros).
> > Lei por la web algo de comunentación y en la ayuda de Delphi (5 en mi
> > caso) del TUpdateSQL, ya tengo enlazado el TUpdateSQL al TQuery, tengo
> > definidos los campos que se van a actualizar y generada las distintas
> > sentencias para actualizar, insertar o borrar registros, pero mi
> duda es :
> > Si yo quiero sólo insertar un registro, ¿como ejecuto la sentecia
> > generada para tal método?, es decir, si tengo generado el código dentro
> > del componente TUpdateSQL, ¿cómo hago para ejecutar sólo un delete, un
> > append o un edit de un registro?, además, ¿cómo actualizo los
> parámetros
> > que tomarán los datos a ingresar?.Los ejemplos y documentación que lei
> > no me dejan muy en claro cómo hacerlo...hay un ejemplo en la ayuda del
> > mismo Delphi, pero no logro entenderlo.En definitiva, no tengo ni la
> más
> > mínima idea de cómo se usa este componente a partir del momento que ya
> > lo tengo "parametrizado".
> > Desde ya, muchas gracias.
> > Saludos.
> >
>
>