Hola, les cuento que estoy con un problema que me esta rompiendo la cabeza, estoy haciendo un sistema de facturacion en Delphi XE2, usando como administrador de bd Mysql.
tengo 2 tablas: mv_movimiento (cabecera de la factura) con la clave id_movimiento, autoincrement
mv_detalle (detalle de factura) con un campo movimiento que apunta a mv_movimiento.id_movimiento
los pasos para grabar la factura -donde DM es el DataModule- son asi:
CARGA DE CABECERA DE FACTURA
Código Delphi
[-] Dm.Cmv_movimiento.Insert;
Dm.Cmv_movimiento.FieldByName('Id_movimiento').AsInteger:=0
despues recorro los items y los cargo
Código Delphi
[-] for filaux := 1 to col-1 do begin
Dm.Cmv_detalle.Append;
Dm.Cmv_detalle.FieldByName('Id_detalle').AsInteger:=0;
... Dm.Cmv_detalle.FieldByName('movimiento').AsInteger:=????;
por supuesto dentro de try except
si no hay error al final de todo
Código Delphi
[-]Cmv_movimiento.Post;
Cmv_detalle.Post;
Los problemas son:
que id_movimiento uso para cargar en los items?
cuando comienza a recorrer los items del detalle para grabarlo me sale error de Key violation, esta bien hacer los post al final?
Estoy usando TsqlDataset-> TdatasetProvider(UpdateMode:upWhereKeyOnly)->Tclientdataset.
Espero haber sido claro, aunque a esta altura estoy mas que tildado.
MUCHAS GRACIAS!! SALUDOS