Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-03-2016
Avatar de Edwardfeliz
Edwardfeliz Edwardfeliz is offline
Miembro
 
Registrado: abr 2014
Posts: 102
Poder: 11
Edwardfeliz Va por buen camino
Lightbulb Hacer un UPDATE deacuerdo a los campos de otra tabla

Saludos,
Me explico, tengo dos tablas, "Productos" y "FacturaItem" simplemente quiero hacer una UPDATE sobre la tabla productos dependiendo de los registros de la tabla FacturaItem, la idea es "regresarlos al inventario".

Para retirarlos uso el siguiente codigo:
Código SQL [-]
Begin // Descontar los Articulos segun los items de la factura
    Qtemp.SQL.Clear;
    Qtemp.SQL.Add('UPDATE PRODUCTOS');                     // Acción
    Qtemp.SQL.Add('SET Existencia = Existencia - :VALOR'); // Descrementar
    Qtemp.SQL.Add('WHERE Cod =:Codigo');                        // Condición (sobre que registro)
    for i := 1 to Sg.RowCount-1 do
  begin
    Qtemp.Parameters.ParamByName('VALOR').Value := SG.Cells[1, i];     // Valor a descrementar
    Qtemp.Parameters.ParamByName('Codigo').Value:= SG.Cells[0, i];      // Registro
    Qtemp.ExecSQL;
  end;
end;

Pero esto lo hago tomando como punto de referencia un String Grid, pero ahora quiero hacerlo directamente de una tabla a Otra, tomando los criterios de la tabla de Facturaitem "para que producto" y "que cantidad".
-----------------------------------------------------------------
En la Tabla FacturaItem, los campos pertinentes son:
CodParte
Cantidad
------------------------------------------------------------------
En la tabla Productos, los campos pertinentes son:
Cod
Existencia

Componentes ADO.
Delphi 7
Responder Con Cita
  #2  
Antiguo 14-03-2016
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.

Si interpreté bién tu consulta, intenta algo similar a esto:
Código Delphi [-]
begin
  // FACTURAITEM
  qyFactura.Close;
  qyFactura.SQL.Text := 'SELECT CODPARTE, CANTIDAD FROM FACTURAITEM';
  qyFactura.Open;

  // PRODUCTOS
  qyProducto.Close;
  qyProducto.SQL.Clear;
  qyProducto.SQL.Add('UPDATE PRODUCTOS');
  qyProducto.SQL.Add('SET EXISTENCIA = EXISTENCIA - :VALOR');
  qyProducto.SQL.Add('WHERE COD = :CODIGO');

  qyProducto.Prepared := True;
  try
    while not qyFactura.Eof do
    begin
      qyProducto.Parameters.ParamByName('VALOR').Value :=
        qyFactura.FieldByName('CANTIDAD').Value;
      qyProducto.Parameters.ParamByName('CODIGO').Value :=
        qyFactura.FieldByName('CODPARTE').Value;
      qyProducto.ExecSQL;
      qyFactura.Next;
    end;
  finally
    qyProducto.Prepared := False;
  end;
  ...
( Revisa que los nombres de tablas y campos sean los correctos )

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 14-03-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Que motor sql usas?
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 14-03-2016
Avatar de Edwardfeliz
Edwardfeliz Edwardfeliz is offline
Miembro
 
Registrado: abr 2014
Posts: 102
Poder: 11
Edwardfeliz Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Si interpreté bién tu consulta, intenta algo similar a esto:
Código Delphi [-]
begin
  // FACTURAITEM
  qyFactura.Close;
  qyFactura.SQL.Text := 'SELECT CODPARTE, CANTIDAD FROM FACTURAITEM';
  qyFactura.Open;

  // PRODUCTOS
  qyProducto.Close;
  qyProducto.SQL.Clear;
  qyProducto.SQL.Add('UPDATE PRODUCTOS');
  qyProducto.SQL.Add('SET EXISTENCIA = EXISTENCIA - :VALOR');
  qyProducto.SQL.Add('WHERE COD = :CODIGO');

  qyProducto.Prepared := True;
  try
    while not qyFactura.Eof do
    begin
      qyProducto.Parameters.ParamByName('VALOR').Value :=
        qyFactura.FieldByName('CANTIDAD').Value;
      qyProducto.Parameters.ParamByName('CODIGO').Value :=
        qyFactura.FieldByName('CODPARTE').Value;
      qyProducto.ExecSQL;
      qyFactura.Next;
    end;
  finally
    qyProducto.Prepared := False;
  end;
  ...
( Revisa que los nombres de tablas y campos sean los correctos )

Saludos
Gracias por la respuesta pero en facturaItem, falta espesificar el codigo de la factura en especifico de cada producto.
es decir, en el Select de la facturaItem, va a seleccionar todos los articulos de la tabla, hay que espesificar que solo va a seleccionar los de una factura en específico, se puede utilizar la variable "CodFactura" donde va a estar ahi el codigo de la factura.
Responder Con Cita
  #5  
Antiguo 14-03-2016
Avatar de Edwardfeliz
Edwardfeliz Edwardfeliz is offline
Miembro
 
Registrado: abr 2014
Posts: 102
Poder: 11
Edwardfeliz Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
Que motor sql usas?
no se si responde a tu pregunta pero Uso los componentes ADO.
Responder Con Cita
  #6  
Antiguo 14-03-2016
Avatar de Edwardfeliz
Edwardfeliz Edwardfeliz is offline
Miembro
 
Registrado: abr 2014
Posts: 102
Poder: 11
Edwardfeliz Va por buen camino
Lo resolvi así

Código SQL [-]
 // FACTURAITEM
  qyFactura.Close;
  qyFactura.SQL.Text := 'SELECT CODFACTURA, CODPARTE, CANTIDAD FROM FACTURAITEM';
  qyFactura.SQL.Add('WHERE CODFACTURA = :CODIGO');
   qyFactura.Parameters.ParamByName('CODIGO').Value := Ecod.Text;
  qyFactura.Open;

Y EN ESTA PARTE TENIA QUE SUMAR EN VEZ DE RESTAR XD PERO YA LO ARREGLE, GRACIAS POR EL CÓDIGO EFICSA.

Código SQL [-]
  QyProducto.Close;
  QyProducto.SQL.Clear;
  QyProducto.SQL.Add('UPDATE PRODUCTOS');
  QyProducto.SQL.Add('SET EXISTENCIA = EXISTENCIA + :VALOR');
  QyProducto.SQL.Add('WHERE COD = :CODIGO');
Responder Con Cita
  #7  
Antiguo 14-03-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Edwardfeliz Ver Mensaje
no se si responde a tu pregunta pero Uso los componentes ADO.
No, me refiero a si usas firebird, Sql Server, etc (y que version)
__________________
El malabarista.
Responder Con Cita
  #8  
Antiguo 14-03-2016
Avatar de Edwardfeliz
Edwardfeliz Edwardfeliz is offline
Miembro
 
Registrado: abr 2014
Posts: 102
Poder: 11
Edwardfeliz Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
No, me refiero a si usas firebird, Sql Server, etc (y que version)
Access 2013 "nada Complejo"
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
Actualizar tabla con datos de otra tabla mediante UPDATE Rockin Firebird e Interbase 18 28-11-2007 19:15:42
Mysql: copiar los campos de una tabla de una base de datos a otra tabla de otra base? patriram MySQL 4 02-11-2007 16:00:24
Problema al hacer un update en una tabla con datos de otra Iseberiano SQL 3 08-06-2005 12:32:14
Update de una tabla con información de otra Manuel SQL 1 26-05-2005 20:07:38
UPDATE con referencia a otra tabla... JorgeBec SQL 6 05-08-2004 20:48:36


La franja horaria es GMT +2. Ahora son las 08:49:10.


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