Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-06-2018
oh.mely oh.mely is offline
Registrado
NULL
 
Registrado: may 2018
Posts: 6
Poder: 0
oh.mely Va por buen camino
Editar un registro de un ClientDataSet

Buenas tardes, no sé si alguien pueda ayudarme, estoy usando Delphi 7 y tengo una tabla temporal en un ClientDataSet en donde almaceno datos de productos y los muestro en un ListView, no tengo problemas con insertarlos, mi problema es que no encuentro la manera de edita un registro en específico, lo trato de hacer pero se modifica siempre el primer registro.

En mi form cuando quiero agregar un producto a la venta primero lo busco en el ListView, si no lo encuentra lo agrega como uno nuevo y si sí lo encuentra quiero que modifique la cantidad.

Código Delphi [-]
procedure TFr_Venta.addToTableTemporal();
var
  aux: Boolean;
  i: Integer;
begin
  //Primero usca si ya ha sido registrado el producto
  aux:= False;
  for i:=0 to ReporteVenta.Items.Count -1 do
  begin
    if producto = ReporteVenta.Items[i].Caption then
    begin
      T_vta.Edit;
      //AQUÍ QUIERO EDITAR EL REGISTRO DE ACUERDO AL CODIGO DE BARRAS DE MI PRODUCTO

      //T_vta.Fields[2].Value:= 10; //Esto lo hice como prueba y siempre lo actualiza en el primer registro
      aux:= True;
    end;
  end;
  //Si no encuentra el producto en el listView agrega uno nuevo
  if not aux then
  begin
    T_vta.Insert;
    T_vta.Fields[0].Value:= producto;
    T_vta.Fields[1].Value:= precioVta;
    T_vta.Fields[2].Value:= cantidad;
    T_vta.Fields[3].Value:= importe;
    T_vta.Fields[4].Value:= descuento;
    T_vta.Fields[5].Value:= total;
    T_vta.Fields[6].Value:= PrecioBruto;
    T_vta.Fields[7].Value:= nomProd;
    T_vta.Post;
  end;

end;

Gracias.
Responder Con Cita
  #2  
Antiguo 12-06-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Por lo que te entendí podrías hacer:
Código Delphi [-]
procedure TFr_Venta.InsertOrUpdate(const Producto: string);
var
  found: Boolean;
  i    : Integer;
begin
  // buscar producto en ListView
  i     := 0;
  found := False;
  while (i < ReporteVenta.Items.Count) and not found do
  begin
    found := ReporteVenta.Items[i].Caption = Producto;
    Inc(i);
  end;

  // insertar o modificar en ClientDataSet
  if not Found then // no encontrado -> insertar
  begin
    T_vta.Insert;
    T_vta.Fields[0].Value := producto;
    T_vta.Fields[1].Value := precioVta;
    T_vta.Fields[2].Value := cantidad;
    ...
    T_vta.Post;
  end
  else              // encontrado -> editar (modificar valores)
  begin
    T_vta.Locate(T_vta.Fields[0].FieldName, producto,[]);
    T_vta.Edit;
    { T_vta.Fields[0].Value := ??? }
    T_vta.Fields[1].Value := precioVta;
    T_vta.Fields[2].Value := cantidad;
    ...
    T_vta.Post;
  end;
  
  // Actualizar ListView
  ...
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 12-06-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Por lo que he visto, en el FOR que has puesto para hacer un recorrido por tus registros, realmente no estás moviendo el apuntador al registro, sino siempre estás actualizando el mismo (el primero).

A no se que sea un error en la transcripción.
Lo lógico sería recorrer el Dataset, o de alguna forma buscar el elemento del Dataset que quieres modificar. Creo que la sokución de Ecfisa va también por ahí, en su caso utilizando un Locate.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 12-06-2018
oh.mely oh.mely is offline
Registrado
NULL
 
Registrado: may 2018
Posts: 6
Poder: 0
oh.mely Va por buen camino
Thumbs up

Muchas gracias por responder, si me sirvió!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Al Editar un Registro me lo duplica webmasterplc Conexión con bases de datos 9 13-01-2017 01:23:17
editar campo autoincremento al editar registro anterior chartres Conexión con bases de datos 1 21-05-2011 02:37:25
Editar ClientDataSet Dclase Conexión con bases de datos 0 25-05-2010 22:12:19
error al editar un registro look OOP 3 18-10-2007 01:43:51
editar un registro jdattoli Conexión con bases de datos 1 08-02-2006 22:01:04


La franja horaria es GMT +2. Ahora son las 15:52:53.


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
Copyright 1996-2007 Club Delphi