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 29-03-2014
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
ayuda con este codigo

hola amigos como estan les cuento que e hecho un codigo el cual me recorre una tabla de principio a fin con el objetivo que en cada registro que alla en esa tabla me escoja un valor X de un campo y me lo sume con un numero Y y luego me lo agrege en otra tabla

el codigo funciona sin error el problema esta que me esta sumando y agregando solo el ultimo registro de esa tabla no se que esta mal aqui esta el codigo que utilizo

Código Delphi [-]
while not DM.tbl_Ventas.Eof do
     begin
      DM.Pro_Existencia.Active:=False;          //esto es un procedimiento almacenado
      DM.Pro_Existencia.Parameters.ParamByName('@ARTI').Value:=DM.tbl_Ventas.FieldValues['ARTICULO'];
      DM.Pro_Existencia.Active:=True;
      DM.Pro_Existencia.ExecProc; 

      DM.tbl_Compras.Locate('ARTICULO',DM.tbl_Ventas.FieldValues['ARTICULO'],[]);// este es la tabla donde agrego la suma
      DM.tbl_Compras.Edit;
      DM.tbl_Compras.FieldByName('CantAlmacen').Value:=IntToStr(StrToInt(DM.Pro_Existencia.FieldValues['EXISTENCIA'])+    StrToInt(DM.tbl_Ventas.FieldValues['CANTIDAD']));
      DM.tbl_Compras.Post;

      DM.tbl_Ventas.Next;
      end;

Última edición por kurono fecha: 29-03-2014 a las 03:37:05.
Responder Con Cita
  #2  
Antiguo 29-03-2014
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
amigos e resuelto el problema con solo agregar DM.tbl_ventas.first antes del bucle while do pero acepto cualquier otra sugerencia

Código Delphi [-]
 DM.tbl_Venta.First
while not DM.tbl_Ventas.Eof do
     begin
      DM.Pro_Existencia.Active:=False;          //esto es un procedimiento almacenado
      DM.Pro_Existencia.Parameters.ParamByName('@ARTI').Value:=DM.tbl_Ventas.FieldValues['ARTICULO'];
      DM.Pro_Existencia.Active:=True;
      DM.Pro_Existencia.ExecProc; 

      DM.tbl_Compras.Locate('ARTICULO',DM.tbl_Ventas.FieldValues['ARTICULO'],[]);// este es la tabla donde agrego la suma
      DM.tbl_Compras.Edit;
     DM.tbl_Compras.FieldByName('CantAlmacen').Value:=IntToStr(StrToInt(DM.Pro_Existencia.FieldValues['EXISTENCIA'])+      StrToInt(DM.tbl_Ventas.FieldValues['CANTIDAD']));
      DM.tbl_Compras.Post;

      DM.tbl_Ventas.Next;
      end;
Responder Con Cita
  #3  
Antiguo 29-03-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Por qué no usas SQL?
Algo así (desconozco nombre de tabla y campos):
Código SQL [-]
update tabla set cantalmacen = existencias + cantidad
where articulo= ?
Responder Con Cita
  #4  
Antiguo 31-03-2014
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
porque el procedimiento que utilizo debe complir algunos criterios antes de realizar la operacion de suma pero tomare en cuenta tu sugerencia para en algun momento optimizar el codigo por ahora lo dejare tal como esta ya que funciona perfectamente
Responder Con Cita
  #5  
Antiguo 31-03-2014
QuiqueSalamanca QuiqueSalamanca is offline
Miembro
 
Registrado: mar 2014
Posts: 35
Poder: 0
QuiqueSalamanca Va por buen camino
Hola Koruno:

¿Por qué no haces el update dentro del procedimiento almacenado que ejecutas? Será más rápido que por código.

Algo así:

Código SQL [-]
DECLARE @iExistencias   INT,
        @iCantidad      INT,
        @sArticulo       VARCHAR(X)


DECLARE cVentas CURSOR FOR SELECT Articulo,
                           FROM tbl_Ventas

OPEN cVentas

FETCH cVentas INTO @sArticulo

WHILE @@FETCH_STATUS = 0 
BEGIN

    --Aqui haces las comprobaciones rutinarias para hacer el UPDATE
    --e inicializas la variable @iExistencias...

    
    UPDATE tbl_Compras
       SET CantAlmacen = @iExistencias + @iCantidad
    WHERE Articulo = @sArticulo


    FETCH cVentas INTO @sArticulo  

END

CLOSE cVentas
DEALLOCATE cVentas

Saludos,
Quique.
Responder Con Cita
  #6  
Antiguo 02-04-2014
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
amigo QuiqueSalamanca muy bueno el codgo, tambien lo tomare en cuenta
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
Corregir este codigo aanil SQL 7 01-02-2010 23:16:07
Porque este código me da error (adjunto código) David JAVA 1 12-03-2009 21:07:27
ayuda con este codigo kurono Varios 4 13-06-2008 02:03:29
necesito ayuda con este codigo kurono Varios 4 06-05-2008 08:02:07
procedimiento almacenado ayuda con este codigo pipecato Varios 5 16-12-2005 13:24:34


La franja horaria es GMT +2. Ahora son las 01:17: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