Ver Mensaje Individual
  #1  
Antiguo 21-02-2007
Tauro78 Tauro78 is offline
Miembro
 
Registrado: sep 2006
Posts: 88
Reputación: 18
Tauro78 Va por buen camino
Como pasar datos entre dos formas modales creadas dinamicamente

hola quisiera saber como puedo hacer para pasar datos de una forma modal creada dinamicamente a otra forma modal creada dinamicamente. O sea tengo una forma donde doy de altas facturas (frmLiquidarAltas), por medio de un boton 'Agregar' llamo a otra forma la cual contine los detalles que quiero agregar a la facutra (frmAgregarDetalleC).

Aca llamo al form de los detalles desde el form de facturas y trato de hacer la consulta que esta ligada al dbgrid que me muestra los detalles recien agregados de la factura.


Código Delphi [-]
 
public
    nro_comprobante: Integer;
    { Public declarations }
  end;
 
procedure TfrmLiquidarAltas.BitBtn5Click(Sender: TObject); 
var           
  frm: TfrmAgregarDetalleC;
begin
  frm := TfrmAgregarDetalleC.Create(Self);
  try
    if frm.ShowModal = mrOK then
    begin
      dmTablas.QDetalleC.Close;
      dmTablas.QDetalleC.ParamByName('nro_comprobante').AsInteger := nro_comprobante;
      dmTablas.QDetalleC.Open;
      if (not dmTablas.QDetalleC.IsEmpty) then
        begin
          Label11.Caption := dmTablas.QDetalleC.FieldByName('subtotal').AsString;
          Label12.Caption := Label11.Caption;
        end;
    end;
  finally
    frm.Free;
  end;
end;

Aca en el form de los detalles grabo los datos segun el nro_comprobante, pero aca me surge la duda si puede tomar el valor del form frmLiquidarAltas ya que cuando agrego un detalle no me marca ningun error, pero cuando voy a las tablas los datos no estan grabados.

Código Delphi [-]
 
procedure TfrmAgregarDetalleC.BitBtn1Click(Sender: TObject);  
begin             
if (Edit1.Text = '') or (JvDBLookupCombo1.KeyValue = null) or (Edit2.Text = '') then
  begin
    MessageDlg('Se deben completar todos los campos.', MtInformation, [MbOK], 0);
    Exit;
  end
    else
      begin
        try
          dmTablas.DBFacturacion.StartTransaction;
          dmTablas.DetalleC.Insert;
          dmTablas.DetalleC.FieldByName('nro_comprobante').AsInteger := frmLiquidarAltas.nro_comprobante;
          dmTablas.DetalleC.FieldByName('nro_categoria').AsInteger := JvDBLookupCombo1.KeyValue;
          dmTablas.DetalleC.FieldByName('cantidad').AsInteger := StrToInt(Edit1.Text);
          dmTablas.DetalleC.FieldByName('kilo').AsFloat := StrToFloat(Edit2.Text);
          dmTablas.DetalleC.FieldByName('promedio').AsFloat := StrToFloat(Label7.Caption);
          dmTablas.DetalleC.FieldByName('precio').AsFloat := StrToFloat(Label8.Caption);
          dmTablas.DetalleC.FieldByName('importe').AsFloat := StrToFloat(Label9.Caption);
          dmTablas.DetalleC.Post;
          dmTablas.DBFacturacion.Commit;
        except
          dmTablas.DBFacturacion.Rollback;
        end;
        Edit1.Text := '';
        JvDBLookupCombo1.KeyValue := null;
        Edit2.Text := '';
        Label7.Caption := '0';
        Label8.Caption := '0';
        Label9.Caption := '0';
      end;
end;

Desde ya muchas gracias.
Responder Con Cita