Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-01-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Problema con ClientDataSet y Resta

Hola compañeros del foro, estoy teniendo problemas con un borrado de datos en un clientDataSet y una resta con los valores mostrasdos en un DBGRid conectado al clientdataset, tengo lo siguiente:

para el borrado de un dato especifico del clientdataset:

Código Delphi [-]
procedure TFFacturar.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = VK_DELETE then
  begin
    dsFactDetalle.DataSet.Delete;  
    if ClientDataSet1.RecordCount > 0 then
    begin
       Total.Text := FLoatToStr(StrToFloat(Total.Text) - ClientDataSet1.Fields[9].AsInteger);
    end;
    if ClientDataSet1.IsEmpty then
      begin
        Total.Text := '0.00';
      end;
  end;
end;

el problema esta en esta linea:

Código Delphi [-]
Total.Text := FLoatToStr(StrToFloat(Total.Text) - ClientDataSet1.Fields[9].AsInteger);

los valores lo muestro en un edit, y el problema que me da es que no me resta los valores correcto, por ejemplo, en el DBGrid, la primera linea tiene un valor de 12 pesos, y las demas lineas son de 24, 36, el edit tiene un valor de 72 pesos, selecciono en el grid la linea con valor 24 por ejemplo, la borro, entonces en el edit me deberia resta 24-72 no?, pues no, siempre me resta el valor de la primera linea que es 12, a que se debe eso?.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #2  
Antiguo 22-01-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Maestro no entiendo.
Creo que usas ado?, verdad.
Por que usar el cliente data set?
Que valor quieres borrar?, el de un campo?, la suma de todos?.
Por que no usar un update?
Me explicas, asi aprendo.
Saludos
Responder Con Cita
  #3  
Antiguo 22-01-2008
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Que tal,
Tu error está en que primero borras y luego restas.

Código Delphi [-]
dsFactDetalle.DataSet.Delete;

Cuando haces lo anterior el cursor se mueve al registro anterior (que es el que tiene el valor 12).

Lo correcto sería:

Código Delphi [-]
 procedure TFFacturar.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = VK_DELETE then
  begin      
    if ClientDataSet1.RecordCount > 0 then
    begin
       Total.Text := FLoatToStr(StrToFloat(Total.Text) - ClientDataSet1.Fields[9].AsInteger);
       dsFactDetalle.DataSet.Delete;    
    end;
    if ClientDataSet1.IsEmpty then
      begin
        Total.Text := '0.00';
      end;
  end;
end;

Saludos
Responder Con Cita
  #4  
Antiguo 22-01-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Efectivamente, como dijo Juanelo ese era el problema primero borraba y luego calculaba, lo tengo asi ahora y va de 10:

Código Delphi [-]
procedure TFFacturar.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = VK_DELETE then
  begin
    if ClientDataSet1.RecordCount > 0 then
    begin
       Total.Text := FLoatToStr(StrToFloat(Total.Text) - ClientDataSet1.Fields[9].AsInteger);
    end;
    if ClientDataSet1.IsEmpty then
      begin
        Total.Text := '0.00';
      end;
    dsFactDetalle.DataSet.Delete;  
  end;
end;

Gracias a ambos por su tiempo, Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #5  
Antiguo 22-01-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Maestro no entiendo.
Creo que usas ado?, verdad.
Por que usar el cliente data set?
Que valor quieres borrar?, el de un campo?, la suma de todos?.
Por que no usar un update?
Me explicas, asi aprendo.
Saludos
Efectivamente Amigo Caral estoy usando en este caso ADO con base de datos Access, uso el clientDataSet porque estoy haciendo un modulo de Facturacion, y los datos los estoy mostrando en Memoria antes de registrarlo en la base de datos, asi para mi es menos trabajoso.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #6  
Antiguo 22-01-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Gracias por la explicacion aunque sigo sin entender, bueno, la edad no perdona, me estais dejando atras demasiado rapido.
Saludos
Responder Con Cita
  #7  
Antiguo 22-01-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Y que te parece un pequeño ejemplo grafico para que te des una idea?.

http://img183.imageshack.us/img183/7...detallezv8.jpg
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
Respuesta



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
Problema con excepciones con ClientDataSet David Conexión con bases de datos 9 30-08-2007 20:14:02
Problema con ClientDataSet kaopectate Conexión con bases de datos 3 13-02-2005 22:08:57
Problema con ClientDataSet Slash Conexión con bases de datos 1 10-09-2004 23:15:01
Problema con ClientDataSet waezu Providers 2 30-03-2004 18:36:00
Problema de ClientDAtaset con xml carlosmoralesm Internet 6 03-03-2004 21:46:16


La franja horaria es GMT +2. Ahora son las 04:32:28.


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