Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-05-2006
Avatar de judit25
judit25 judit25 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Bronx, NY
Posts: 122
Poder: 19
judit25 Va por buen camino
Actualizar tabla buscando desde un dbgrid

Buenos Días!

Primero perdon por el titulo, no sabia que poner

Estoy trabajando con un formulario de factura, el encabezado y el detalle estan asociados a un clientdataSet cada uno, y el detalle esta en un dbgrid y desde ahi mismo hago mis facturas, mi inquitud es la siguiente cuando le de al boton de grabar como puedo hacer para que cada articulo que está en el dbgrid lo buscque en una tabla que se llama Inventario que está en un Data Module y a cada producto le reste la cantidad digitada en el dbgrid a la cantidad actual?

No se si me explique bien.

Saludos

Y Gracias anticipadas por la ayuda prestada
Responder Con Cita
  #2  
Antiguo 18-05-2006
Avatar de judit25
judit25 judit25 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Bronx, NY
Posts: 122
Poder: 19
judit25 Va por buen camino
Abundando un poco más (esto me funciona menos en el último registro)

Estoy empleando este código en el evento BeforeApplyUpdates de CDS2 (que es el clientDataSet del detalle), pero a la hora de grabar me actualiza en la tabla Inventario todos los registros menos el último.
Código Delphi [-]
CDS2.First;
while not CDS2.Eof do
  begin
        if DM.TInventario.Locate('Cod_prod', CDS2Cod_Prod.Value, []) then
           begin
              DM.TInventario.Edit;
              DM.TInventarioCant_Salida.Value := DM.TInventarioCant_Salida.Value + CDS2Cantidad.Value;
              DM.TInventarioCant_Actual.Value := DM.TInventarioCant_Actual.Value - CDS2Cantidad.Value;
              DM.TInventario.UpdateRecord;
           end;
        CDS2.Next;
  end;
Alguna idea de que me hace falta para que funcione en todos los registros?

Gracias anticipadas

Saludos

Y disculpen las molestias

Última edición por judit25 fecha: 24-05-2006 a las 22:00:51.
Responder Con Cita
  #3  
Antiguo 18-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Ensures that data-aware controls and detail datasets reflect record updates.

Applications should not need to call UpdateRecord directly unless they provide custom dataset methods that bypass TDataSet methods.
UpdateRecord no hace lo que piensas. Usa Post para guardar los cambios en el CDS, despues usa ApplyUpdates para grabar los datos directamente a la BBDD.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 18-05-2006
Avatar de judit25
judit25 judit25 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Bronx, NY
Posts: 122
Poder: 19
judit25 Va por buen camino
gracias Lepe por la respuesta, pero creo que se cruzaron los temas, jeje, no veo la relación de mi problema con eso? o si?

Gracias
Responder Con Cita
  #5  
Antiguo 18-05-2006
ronimaxh ronimaxh is offline
Miembro
 
Registrado: jun 2003
Ubicación: Rep. Dominicana
Posts: 307
Poder: 21
ronimaxh Va por buen camino
bueno como que no esta muy claro lo que quieres hacer, pero seria mejor que comenzaras y dices que db usas, y para rebajar el inventario lo puedes hacer desde el id de la misma factura que generas, asi atrapas el detalle y puedes controlar que articulos se afectaron con la venta.....
__________________
ronimaxh
Rep. Dominicana
Responder Con Cita
  #6  
Antiguo 18-05-2006
Avatar de judit25
judit25 judit25 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Bronx, NY
Posts: 122
Poder: 19
judit25 Va por buen camino
Gracias ronimaxh por tu respuesta

estoy utilizando Access conectado con odbc y he podido solucionar parte de mi problema, lo único es que el último registro no me lo actualiza en el inventario, todos menos el último me lo actualiza y no se porque, el código que estoy empleando es el siguiente:
Código Delphi [-]
CDS2.First;
while not CDS2.Eof do
begin
if DM.TInventario.Locate('Cod_prod', CDS2Cod_Prod.Value, []) then
begin
DM.TInventario.Edit;
DM.TInventarioCant_Salida.Value := DM.TInventarioCant_Salida.Value + CDS2Cantidad.Value;
DM.TInventarioCant_Actual.Value := DM.TInventarioCant_Actual.Value - CDS2Cantidad.Value;
DM.TInventario.UpdateRecord;
end;
CDS2.Next;
end;
Este código lo he puesto en el evento BeforeApplyUpdates de CDS2 (que es el clientDataSet del detalle).

Gracias

Última edición por judit25 fecha: 24-05-2006 a las 22:03:38.
Responder Con Cita
  #7  
Antiguo 19-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
UpdateRecord no es para grabar los cambios, por tanto no se guardan JAMÁS.

... Claro... tú dirás pues los cambios si se guardan en todos los registros menos en el último.... Pues sí, porque internamente la VCL cuando realizas un Tdataset.Next mira si hay modificaciones en el registro actual y los guarda automáticamente. Pero en el último registro no se puede hacer un .Next porque se ha llegado al final, por tanto, no se guarda.

Sustituye el "UpdateRecord" por "Post"

Siempre que se haga un Edit / Insert / Append debe llevar asociado un Post / Cancel para evitar este tipo de fallos que lo vuelven a uno loco .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 19-05-2006 a las 12:15:20.
Responder Con Cita
  #8  
Antiguo 19-05-2006
Avatar de judit25
judit25 judit25 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Bronx, NY
Posts: 122
Poder: 19
judit25 Va por buen camino
Muchas gracias Lepe deja hacerlo con post a ver como me va

Gracias
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
insertar en tabla las lineas que seleccione el usuario desde un dbgrid arpegius25 Conexión con bases de datos 3 09-05-2006 10:08:59
Consultar otra tabla desde un Dbgrdid y traerse los datos al Dbgrid alejandroalba Conexión con bases de datos 2 08-05-2006 18:30:42
Actualizar tabla con datos de otra tabla ElDioni SQL 2 02-05-2006 16:04:04
Actualizar tabla en un DBGrid basado en un Query RyAr Conexión con bases de datos 4 02-07-2004 11:25:14
actualizar tabla davidgaldo Conexión con bases de datos 5 18-02-2004 15:21:59


La franja horaria es GMT +2. Ahora son las 18:43:33.


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