Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Providers (https://www.clubdelphi.com/foros/forumdisplay.php?f=10)
-   -   borrar registro de un temporal ClientDataSet y dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=85646)

novato_erick 12-04-2014 01:51:12

borrar registro de un temporal ClientDataSet y dbgrid
 
Hola apreciados Chicos una pregunta:

Cree una Tabla temporal utilizando el ClientDataSet en el que agrego registro de consultas a una tabla, esta me trae ejemplo productos mostrándome los datos en un DBGRID.

la interrogante es:

trato de buscar el campo en el debrid haciendo esto pero no me está eliminando dicho registro lo que hace es eliminarme es el último registro:
Código Delphi [-]
procedure TfrmDevuelveProducto.btnDevuelveProductoClick(Sender: TObject);
var
  codigoP: String;
begin
  codigoP := Trim(eCodigoProducto.Text);
  frmFacturacionprincipal.dbgVentas.DataSource.DataSet.DisableControls;
  frmFacturacionprincipal.dbgVentas.DataSource.DataSet.First;
  while not frmFacturacionprincipal.dbgVentas.DataSource.DataSet.Eof do
   begin
    if frmFacturacionprincipal.dbgVentas.DataSource.DataSet
    ['cdsTempArtVentaCOD_BARRA'] = codigoP then
    frmFacturacionprincipal.dbgVentas.SelectedRows.CurrentRowSelected := True;
    frmFacturacionprincipal.dbgVentas.DataSource.DataSet.Next;
   end;
    frmFacturacionprincipal.dbgVentas.DataSource.DataSet.EnableControls;
    frmFacturacionprincipal.dbgVentas.DataSource.DataSet.Delete;
end;

espero poder lograr hacer esto en primera instancia.

la otra interrogante de este hilo es: si al borrar en el DBGRID me borrará el registro tambien del ClientDataSet que me almacena en momoria los datos? o tendría que hacer esto tambien:

Código Delphi [-]
procedure TfrmDevuelveProducto.btnDevuelveProductoClick(Sender: TObject);
var
  codigoP: String;
begin
  codigoP := Trim(eCodigoProducto.Text);

//Borramos en el DBGRID campo que busco pero en realidad no lo hace :confused:
  frmFacturacionprincipal.dbgVentas.DataSource.DataSet.DisableControls;
  frmFacturacionprincipal.dbgVentas.DataSource.DataSet.First;
  while not frmFacturacionprincipal.dbgVentas.DataSource.DataSet.Eof do
   begin
    if frmFacturacionprincipal.dbgVentas.DataSource.DataSet
    ['cdsTempArtVentaCOD_BARRA'] = codigoP then
    frmFacturacionprincipal.dbgVentas.SelectedRows.CurrentRowSelected := True;
    frmFacturacionprincipal.dbgVentas.DataSource.DataSet.Next;
   end;
    frmFacturacionprincipal.dbgVentas.DataSource.DataSet.EnableControls;
    frmFacturacionprincipal.dbgVentas.DataSource.DataSet.Delete;

//Se borra en el ClientDataSet temporal cosa que no se si se hace haciendo solamente la eliminación del registro en el dbgrid:eek:
  dmlogicaventa.cdsTempArtVenta.First;
  while not dmlogicaventa.cdsTempArtVenta.Eof do
  begin
    if dmlogicaventa.cdsTempArtVenta.FieldByName('cdsTempArtVentaCOD_BARRA')
      .AsString = codigoP then
      dmlogicaventa.cdsTempArtVenta.Delete;
      dmlogicaventa.cdsTempArtVenta.Next;
  end;
     Close;
   end;
 end;
end;

saludos sres



novato_erick

Caminante 12-04-2014 16:22:06

Cita:

Empezado por novato_erick (Mensaje 475103)
trato de buscar el campo en el debrid haciendo esto pero no me está eliminando dicho registro lo que hace es eliminarme es el último registro:
novato_erick

Para ubicar el registro en un clientdataset es mejor usar locate:
Código Delphi [-]
 if frmFacturacionprincipal.dbgVentas.DataSource.DataSet.locate('VentaCOD_BARRA',codigoP,[]) then
frmFacturacionprincipal.dbgVentas.DataSource.DataSet.Delete;




Cita:

Empezado por novato_erick (Mensaje 475103)
la otra interrogante de este hilo es: si al borrar en el DBGRID me borrará el registro tambien del ClientDataSet que me almacena en mEmoria los datos?
novato_erick

No estarias borrando el registro del cbgrid ya que este solo es una vista virtual de los datos contenidos en el dataset. Asi que al borrar un registro lo estas borrando en el dataset.

Saludos

novato_erick 12-04-2014 23:00:22

Caminante
Cita:

Asi que al borrar un registro lo estas borrando en el dataset.
Es cierto lo elimina del DataSet en este Caso es mi ClientDataSet

Gracias por tu apoyo


Saludos

Caminante 12-04-2014 23:03:13

Si el clientdataset esta relacionado con un provider para hacer definitivos los cambios debes usar el metodo applyupdates despues de la eliminacion.

Saludos

novato_erick 12-04-2014 23:18:13

Caminante
Cita:

Si el clientdataset esta relacionado con un provider para hacer definitivos los cambios debes usar el metodo applyupdates despues de la eliminacion.
No es así. no está relacionado a un provider ya que el clientDataSet lo estoy utilizando como una tabla temporal utilizando este recurso http://delphiallimite.blogspot.com/2...moria-con.html asi que al final lo que deseo es enviar esos datos a una tabla en la db haciendo un conteo de la cantidad de registro y utilizando la clausula FOR para ir insertando cada registro. Espero que esa idea sea la correcta para enviar ese conjunto de datos a la db.

en cuanto al problema de eliminar registro del dbgrid por tu ayuda está resuelto gracias nuevamente.

Saludos


La franja horaria es GMT +2. Ahora son las 09:15:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi