Hola Al,
Creo que nos estamos yendo por la tangente. El problema no es actualizar un registro en "regoper_part_v", sino en la tabla padre: "regoper". El problema original viene del código inicialmente mostrado en el hilo (aquí un poco más legible):
Código Delphi
[-]
pe_regoper.z_DataSet.Edit;
pe_regoper.TotalImporte:= 0;
pe_regoper.TotalIVA:= 0;
with pe_regoper.Partidas.z_dataSet do
begin
First;
while not Eof do
begin
pe_regoper.TotalImporte:= pe_regoper.TotalImporte + pe_regoper.Partidas.Importe;
pe_regoper.TotalIVA:= pe_regoper.TotalIVA + pe_regoper.Partidas.IVA;
next;
end;
end;
pe_regoper.z_dataSet.Post;
if TClientDataSet( pe_regoper.z_dataSet ).ApplyUpdates(0) > 0 then
TClientDataSet( pe_regoper.z_dataSet ).CancelUpdates;
Es en el ApplyUpdates que tengo el error ya mencionado. Ubiqué un ZSQLMonitor, y aquí está el código que genera para hacer la actualización:
Código SQL
[-]update `regoper` set `rop_totiva` = 4293.06005859375 where `regoper_id` = 689349199046620201
La verdad no veo problema; pero en fin, he aquí más datos. El Provider de regoper_v tiene el evento correspondiente:
Código Delphi
[-]procedure Tdm.DataSetProvider_regoperGetTableName(Sender: TObject;
DataSet: TDataSet; var TableName: String);
begin
TableName:= 'regoper';
end;
Y el SQL del ZQuery de regoper_v es:
Código SQL
[-]select * from regoper_v
order by cli_nombre
La vista consiste de:
Código SQL
[-]select `regoper`.`regoper_id` AS `regoper_id`,
`regoper`.`cliente_id` AS `cliente_id`,
`cliente`.`cli_rfc` AS `cli_rfc`,
`cliente`.`cli_nombre` AS `cli_nombre`,
`regoper`.`rop_fechainicial` AS `rop_fechainicial`,
`regoper`.`rop_fechafinal` AS `rop_fechafinal`,
`regoper`.`rop_cierre` AS `rop_cierre`,
`regoper`.`rop_totimporte` AS `rop_totimporte`,
`regoper`.`rop_totiva` AS `rop_totiva`
from (`regoper` left join `cliente` on((`cliente`.`cliente_id` = `regoper`.`cliente_id`)))