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 26-08-2012
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 martini002.

No se con que RDBMS estas trabajando por lo que la sintáxis puede variar, probá con:
Código SQL [-]
UPDATE INVENTARIO SET STOCK = STOCK -
COALESCE((SELECT CANTIDAD FROM FACTURATEMP WHERE INVENTARIO.ARTICULO = FACTURATEMP.ARTICULO),0);

O también con:
Código SQL [-]
UPDATE INVENTARIO SET INVENTARIO.STOCK = INVENTARIO.STOCK - 
COALESCE((SELECT CANTIDAD FROM FACTURATEMP WHERE INVENTARIO.ARTICULO = FACTURATEMP.ARTICULO),0);
La sentencia SQL hace exáctamente lo que entendí que deseabas hacer. El uso de COALESCE se hace necesario para evitar que el campo STOCK pudiera ponerse a NULL, ya que, lo que sea - NULL = NULL.

Saludos.

Edito: Sería bueno que nos pusieras con que RDBMS estas trabajando.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 26-08-2012 a las 01:15:43.
Responder Con Cita
  #2  
Antiguo 26-08-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Y que es un RDBMS amigo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 26-08-2012
Avatar de martini002
martini002 martini002 is offline
Miembro
 
Registrado: may 2012
Ubicación: Puerto Ordaz - Venezuela
Posts: 175
Poder: 13
martini002 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Y que es un RDBMS amigo.
Saludos
Amigo mio, creo que deberia abrir un nuevo Hilo para esta pregunta.

Haha mentira, aqui esta, lo mismo me pregunte

http://es.wikipedia.org/wiki/Sistema...s_relacionales

Gracias
__________________
El Conocimiento se puede compartir, pero la Experiencia es totalmente Intransferible.
Responder Con Cita
  #4  
Antiguo 26-08-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Lo se amigo, pero me gusta ver trabajar a mi amigo ecfisa
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 26-08-2012
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
Cita:
Empezado por Caral Ver Mensaje
Hola
Lo se amigo, pero me gusta ver trabajar a mi amigo ecfisa
Saludos
Y a mi, verte nuevamente por aquí

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 26-08-2012
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 martini002.

La sentencia funciona perfectamente en Firebird y por lo tanto con pocas o ninguna modificacion, tendría que hacerlo en cualquier DBMS que fuera compatible con el estandar SQL.

Lamentablemente no tengo ni el más remoto contacto con SQLite , pero revisa si estos enlaces te ayudan:
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 26-08-2012
Avatar de martini002
martini002 martini002 is offline
Miembro
 
Registrado: may 2012
Ubicación: Puerto Ordaz - Venezuela
Posts: 175
Poder: 13
martini002 Va por buen camino
Bueno ya lo logre arreglar,
Antes buscabamos y comparabamos el nombre del articulo,
pero por alguna razon, no reconocia el nombre, lo confundia con una columna
entonces lo cambie por el codigo, tomas el codigo y lo comparas,
y si es el mismo entonces resta, funciona muy bien,
Agradezco como siempre a ustedes que son los mejores
profesores que uno puede tener a distancia

al final quedo asi:

Código Delphi [-]
procedure TForm1.BDespacharClick(Sender: TObject);
Var
  CodigoFactura, CodigoArticulo, Cantidad :Integer;
  Total  :String;
begin
  //Restar cantidad en el stock
  DataSourceBD.Enabled:= False;
  ZQueryBD.Sql.Clear;
  ZQueryBD.Close;
  ZQueryBD.SQL.Add('Select Codigo, Cantidad From FacturaTemp');
  ZQueryBD.Open;
  ZQueryBD.First;//Te posicionas en el primer registro
  While Not(ZQueryBD.Eof) do //Recorres mientras no termine de leer todos los registros de la consulta
    begin
      CodigoArticulo:= ZQueryBD.Fields[0].AsInteger;
      Cantidad:= ZQueryBD.Fields[1].AsInteger;
      ZQuery1.Close;
      ZQuery1.SQL.Text:= 'Update Inventario Set Stock = Stock-'+IntToStr(Cantidad)+' Where Codigo = '+IntToStr(CodigoArticulo);
      ZQuery1.ExecSQL;
      ZQueryBD.Next;//Pasas al siguiente registro
    end;

Continua...
__________________
El Conocimiento se puede compartir, pero la Experiencia es totalmente Intransferible.
Responder Con Cita
  #8  
Antiguo 26-08-2012
Avatar de martini002
martini002 martini002 is offline
Miembro
 
Registrado: may 2012
Ubicación: Puerto Ordaz - Venezuela
Posts: 175
Poder: 13
martini002 Va por buen camino
Hola Ecfisa,7
Estoy usando como gestor la libreria de ZEOS 7 y como BD a SQLite.
voy a probar este codigo directamente con un administrador de bases de datos
SQLite Expert Personal a ver que tal funciona.

para el primer codigo me muestra este error

Código Delphi [-]
  with ZQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('UPDATE INVENTARIO SET STOCK = STOCK - ');
      SQL.Add('COALESCE(SELECT CANTIDAD FROM FACTURATEMP WHERE INVENTARIO.ARTICULO = FACTURATEMP.ARTICULO),0');
      ExecSQL;
    end;
  with ZQueryBD do
    begin
      Close;
      Open;
    end;

Código:
'SQL Error: near "SELECT": syntax error'
Y para el segundo lo siguiente:

Código Delphi [-]
  with ZQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('UPDATE INVENTARIO SET INVENTARIO.STOCK = INVENTARIO.STOCK - ');
      SQL.Add('COALESCE((SELECT CANTIDAD FROM FACTURATEMP WHERE INVENTARIO.ARTICULO = FACTURATEMP.ARTICULO),0');
      ExecSQL;
    end;
  with ZQueryBD do
    begin
      Close;
      Open;
    end;

Código:
'SQL Error: near ".": syntax error'
Edito:
Ecfisa acabo de probar el codigo en el administrador de BD
y me da exactamente los mismos dos errores que me da con Delphi :/
__________________
El Conocimiento se puede compartir, pero la Experiencia es totalmente Intransferible.

Última edición por martini002 fecha: 26-08-2012 a las 01:51:26.
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
Como crear un "Cryptographic Message Syntax" en Delphi? old_martinez Varios 3 09-12-2016 15:41:59
Incorrect syntax near Ledian_Fdez SQL 4 03-05-2010 14:41:26
Error con el Update 2 de Delphi for PHP CHECHE81 PHP 2 27-09-2007 21:52:09
Error de Sintaxis en update SQL luxus SQL 3 08-08-2006 16:40:01
Error SQL - UPDATE _ SET ... Durbed Conexión con bases de datos 2 13-12-2004 18:09:05


La franja horaria es GMT +2. Ahora son las 08:09:45.


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