Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-10-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Editar e Insertar con un Dataset

Nuevamente solicitando ayuda con esto de los IBX y FB 2.0 D7.

tengo este codigo:

Código Delphi [-]
//Llamo a este procedimiento y le envio dos parametros
procedure TdmDatos.ActualizaTotales(strID, strPeso: string);
begin
  //Con el DataSet Totales
  with dstTotales do
    begin
      //Intentamos localizar la existencia de un registro con esta ID
      if Locate('Bascula',strID,[loCaseInsensitive]) then
        //SI existe recupero los valores de estos dos campos y cambio a EDICION
        begin
          showmessage('SI existe'); //Esto solo para verificar que si ingresa al 
ciclo
          accCuenta := dstTotalesACCOPERACION.Value;
          gblCuenta := dstTotalesGBLOPERACION.Value ;
          Edit;
        end
      else
        showmessage('NO existe'); //Esto solo para verificar que si ingresa al ciclo
        //SI NO existe cambio a modo INSERTAR NUEVO
        begin
          Append;
          accCuenta := 0;
          gblCuenta := 0;
          dstTotalesBASCULA.Value := StrToInt(strID);
        end;
      Inc(accCuenta);
      Inc(gblCuenta);
      dstTotalesACCOPERACION.Value := accCuenta;
      dstTotalesGBLOPERACION.Value := gblCuenta;
      
      //Guardo los datos nuevos
      dstTotales.Post;
    end;
end;

y espero obtener esto

Cita:
//Espero obtener algo asi (DESPUES DE VARIAS OPERACIONES):
ID |ACCOPERACION |GBLOPERACION
1 | 20 | 20
2 | 20 | 20
3 | 20 | 20
4 | 20 | 20

//Sin embargo obtengo esto
ID |ACCOPERACION |GBLOPERACION
1 | 1 | 1
2 | 1 | 1
3 | 1 | 1
4 | 1 | 1
1 | 1 | 1
2 | 1 | 1
3 | 1 | 1
4 | 1 | 1
1 | 1 | 1
2 | 1 | 1
3 | 1 | 1
4 | 1 | 1
1 | 1 | 1
2 | 1 | 1
3 | 1 | 1
4 | 1 | 1
¿Cual es mi error? ¿el dataset no es apropiado para esto? ya probe con un IBQuery y me devuelve los mismos resultados. Se agradece su ayuda y sugerencias.
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?
Responder Con Cita
  #2  
Antiguo 23-10-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola FGarcia,
¿No será tal vez que estas sentencias:

Código Delphi [-]
Inc(accCuenta);
Inc(gblCuenta);
dstTotalesACCOPERACION.Value := accCuenta;
dstTotalesGBLOPERACION.Value := gblCuenta;
      
//Guardo los datos nuevos
dstTotales.Post;

deberían ir dentro del begin-end de la parte else?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 23-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Código Delphi [-]
 else
        showmessage('NO existe'); //Esto solo para verificar que si ingresa al ciclo
        //SI NO existe cambio a modo INSERTAR NUEVO
        begin
          Append;
          accCuenta := 0;
          gblCuenta := 0;
          dstTotalesBASCULA.Value := StrToInt(strID);
        end;

en el else solo se ejecuta el showmessage . El bloque begin end se ejecuta siempre.
Responder Con Cita
  #4  
Antiguo 23-10-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, opino lo mismo que el amiguito coso. el problema esta en el else, el else solo ejecutara el Showmessage y como el begin y end quedan sueltos eso se ejecutara siempre, pon el showmessage dentro tu bloque begin.

Código Delphi [-]
else
    begin
         showmessage('NO existe'); //Esto solo para verificar que si ingresa al ciclo
        //SI NO existe cambio a modo INSERTAR NUEVO
          Append;
          accCuenta := 0;
          gblCuenta := 0;
          dstTotalesBASCULA.Value := StrToInt(strID);
    end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 23-10-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Ok! si, ese era un error que de tanto manipular ya no veia, sin embargo aun corrigiendolo el resultado no es el esperado, es decir...¡sigue sin funcionar!

ahora solo inserta los primeros 4 registros y no vuelve a insertar nada ( de hecho ahi comenze) el showmessage los coloque a modo de test de que sí ingresa al ciclo y lo hace bien, pero no guarda los datos que se van a editar. Ya ejecute un debug paso a paso y todo funciona bien, los datos se incrementan segun espero mas no son registrados en la bd.

Cita:
//Espero obtener algo asi (DESPUES DE VARIAS OPERACIONES):

ID |ACCOPERACION |GBLOPERACION
1 | 20 | 20
2 | 20 | 20
3 | 20 | 20
4 | 20 | 20

//Sin embargo obtengo esto

ID |ACCOPERACION |GBLOPERACION
1 | 1 | 1
2 | 1 | 1
3 | 1 | 1
4 | 1 | 1
Estoy seguro que es una tontera la que estoy haciendo pero no la veo. Les agradezco la ayuda.
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?
Responder Con Cita
  #6  
Antiguo 23-10-2008
Avatar de boreg
boreg boreg is offline
Miembro
 
Registrado: oct 2007
Ubicación: México, México
Posts: 76
Poder: 17
boreg Va por buen camino
Según lo que veo el codigo hace lo que debería de hacer, incrementa en 1 el valor de los campos ACCOPERACION y GBLOPERACION, si no existe se agrega un registro con el nuevo ID e incrementa 1 desde 0 los mismos campos.
Quizás el error está en que te falta agregar las operaciones que mencionaste en un principio ("//Espero obtener algo asi (DESPUES DE VARIAS OPERACIONES):"), tambien veo que en el locate estas buscando en el campo "BASCULA" y en los datos nos estás mencionando el Campo "ID". Sería bueno que nos dijeras el valor que tienen los campos (ACCOPERACION y GBLOPERACION) antes de que hagas la edicion, si no es cero quizás haya algo mas que se nos escapa a la vista.

Saludos
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
Copiar el contenido de un DataSet a otro DataSet Javi2 Varios 82 22-11-2022 09:26:16
Intento insertar y/o editar en un DBGrid y no me permite. joal Conexión con bases de datos 2 05-04-2007 18:17:59
Problema con insertar instruccion en un dataset el_barto Conexión con bases de datos 2 13-07-2005 00:16:41
insertar un nuevo sql en un DataSet.insertsql el_barto Conexión con bases de datos 2 17-06-2005 23:14:02
editar un exe piskapocha Varios 2 31-03-2004 22:20:39


La franja horaria es GMT +2. Ahora son las 20:31:39.


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