Ver Mensaje Individual
  #9  
Antiguo 21-03-2009
alquimista_gdl alquimista_gdl is offline
Miembro
 
Registrado: ago 2008
Ubicación: Guadalajara, México
Posts: 78
Reputación: 16
alquimista_gdl Va por buen camino
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
        {00010}
        pe_regoper.TotalImporte:= pe_regoper.TotalImporte + pe_regoper.Partidas.Importe;
        {00013}
        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`)))
Responder Con Cita