Ver Mensaje Individual
  #4  
Antiguo 06-03-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Creo te estas complicando la vida. Es normal cuando se empieza con Firebird, aquí la solución:

Uso del TIbDataset (todo en tiempo de diseño !!):
- Asignar la Base de datos y transaction
- Asignar el Select "select * from tabla where claveprimaria = :clave"
- Usar el evento beforeOpen del TibDataset y poner:
ibdataset1.parambyname('clave').Asxxxx := lo que sea;
- Boton derecho sobre el TIbdataset y "Dataset Editor"
Saldrá una ventana con todos los campos de la tabla, pulsa los 3 botones que tienes a la izquierda (no hace falta encomillar los nombres de los campos si no usas espacios en dichos nombres.
- por curiosidad, mira las sqls que propone el componente (insert sql, delete, update, etc)
-Acepta la ventana.

Ahora el código:
Código Delphi [-]
dmDatos.dsArticulos.Open;
dmDatos.dsArtículos.Edit;
dmDatos.dsArticulos.FieldByName('Referencia').AsString:= dmDatos.dsArticulosREFERENCIA.Value;
dmDatos.dsArticulos.Post;
---- hacer el commit o commitRetaining ---
dmDatos.Close;
dmDAtos.Open; // para ver los cambios
Las 3 últimas líneas quizás no te hagan falta, si tiene el objeto transaction configurado para que automáticamente haga el commitRetainig después del Post, suprime las 3 últimas líneas

Como ves he usado un select que solo trae un registro a la vez, se supone es lo más efiiciente y como debería hacerse. En caso de usar un "Select * from tabla order by nombre", no hace falta usar el evento BeforeOpen, ni tampoco pasar parámetros.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 06-03-2008 a las 15:32:35. Razón: Completar info
Responder Con Cita