Ver Mensaje Individual
  #7  
Antiguo 21-02-2017
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Reputación: 18
anubis Va por buen camino
Hola.
Perdón que reabra este post después de tanto tiempo de inactividad pero digamos que estuve ausente del tema por algunos problemas.

Retomando lo que preguntaba y, viendo que Casimiro Notevi ya me contestó que, en principio, todo se veía más o menos bien, quería añadir lo siguiente:

Si tengo dos tablas, una de productos y otra de precios.
Cuando doy de alta un producto, lo que hago es lo siguiente:

Bueno, lo primero es tener asignadas las tablas y abiertas.

Código Delphi [-]
with modulodatos do
begin  
   ibproductos.SelectSQL.clear;
   ibproductos.selectsql.Text:='select * from productos';
   ibproductos.Open;

   ibprecios.SelectSQL.clear;
   ibprecios.selectsql.Text:='select * from precios';
   ibprecios.Open;
end;

Código Delphi [-]
with modulodatos do
begin
   ibproductos.insert;
   ibproductos.fieldbyname('codigo_barras').asstring;
   ibproductos.fieldbyname('nombre_producto').asstring;
   ibproductos.post;
   ibtransaction1.CommitRetaining;  

   ibtemporal.selectsql.clear;
   ibtemporal selectsql.text:='select max(id_producto) as ultimo_id from productos'; // para sacar el último producto que acabo de añadir.
   ibtemporal.open;
   
   ultimo_producto:=ibtemporal.fieldbyname('ultimo_id').asstring;
   
   ibprecios.insert;
   ibprecios.fieldbyname('id_producto').asinteger:=ultimo_producto;
   ibprecios.fieldbyname('precio_costo').asfloat:=precio_costo;
   ibprecios.post;
   
   ibtransaction1.commitretaining;

end;

En principio eso funciona sin mayor problema, imagino que no es la mejor manera de programarlo.

Sólo tengo el problema si quiero hacer esto:

Código Delphi [-]
producto_registrado:=ibproducto.fieldbyname('id_producto').asinteger;
nombre_producto:=ibproducto.fieldbyname('nombre_producto').asstring;

Es el último producto que acabo de añadir.
El id_producto aparece en 0 pero el nombre_producto si me lo devuelve.
Si le añado un dbgrid para probar, el id_producto aparece vacío.
Ya he probado a cerrar la tabla y vuelto a abrir, a refrescarla, ... Pero con los mismos resultados.

La idea de todo lo anterior, es poder insertar un producto y tambien su precio en otra tabla.

Perdonen que ande preguntando sobre estas cosas, sé que son cosas muy básicas pero no consigo resolverlas.

Gracias.
Responder Con Cita