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 22-02-2013
Yare Yare is offline
Registrado
NULL
 
Registrado: feb 2013
Posts: 8
Poder: 0
Yare Va por buen camino
¿Cómo "sacar" la existencia de un producto?

Hola soy nueva aquí en el foro, aunque lo sigo bastante... También en Delphi soy novata...
Por ahora estoy haciendo un control de inventarios... Pero tengo el problema de que no puedo mostrar la
existencia por producto... No sé como hacerlo...
Tengo la tabla de existencia
-Código_barras
-Cantidad

Ventas
-Código_barras
-Cantidad
....y los demás campos

Compras
-Código_barras
-Cantidad
....Y más campos


Entonces lo que quiero es que en la forma de ventas me muestre la existencia en un dbedit...
Por la venta que ejecute en ese rato, o sea por código...
Responder Con Cita
  #2  
Antiguo 22-02-2013
Yare Yare is offline
Registrado
NULL
 
Registrado: feb 2013
Posts: 8
Poder: 0
Yare Va por buen camino
Hola

Puse está sentencia en el interactive de ib console y la ejecute en un query... sin embargo de un producto por ejemplo, vendí 1 pieza y tenia 2 pero en el stock me devuelve un 6

Select (sum(registro.Cantidad)-Sum(ventas.Cantidad)) as stock From registro, ventas where registro.codigo_barras = ventas.codigo_barras


¿Alguien que pueda ayudarme?

Además lo que pongo en ese DBEDIT lo quiero guardar en la BD pero creo que por ser un Query no me deja...
Responder Con Cita
  #3  
Antiguo 22-02-2013
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 Yare.

Paciencia, paciencia que no hay muchos deambulando a esta hora...

Agrega al form:
  • Un TIBQuery, (o el equivalente en los componentes que uses) que le daremos por nombre: Tu_Query.
  • Un TDataSource asociado al query que denominaremos: dsQuery.
  • Un TDBEdit para ir mostrando la existencia.
Las asignaciones de los ejemplos siguientes podes realizarlas desde el Object Inspector en tiempo de diseño; para darle más claridad lo hago por código .

Si ya tenes actualizadas las existencias en tabla EXISTENCIA:
Código Delphi [-]
procedure TForm.FormCreate(Sender: TObject);
begin
  with Tu_Query do
  begin
    DataSource:= dsVentas; // TDataSource asociado a tabla VENTAS
    Close;
    SQL.Clear;
    SQL.Add('SELECT CANTIDAD AS STOCK FROM EXISTENCIA');
    SQL.Add('WHERE CODIGO_BARRAS = :CODIGO_BARRAS'); // (*)
    Open;
  end;
  DBEdit1.DataSource:= dsQuery;
  DBEdit1.DataField := 'STOCK';
end;

Si no tenes actualizadas las existencias en la tabla EXISTENCIA, podes obtenerlas restando a el campo CANTIDAD de la tabla COMPRAS el campo CANTIDAD de la tabla VENTAS. Para lo que habría que cambiar un poco la consulta:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  with Tu_Query do
  begin
    DataSource:= dsVentas; // TDataSource asociado a tabla VENTAS
    Close;
    SQL.Clear;
    SQL.Add('SELECT TC.CANTIDAD - TV.CANTIDAD AS STOCK');
    SQL.Add('FROM COMPRAS TC, VENTAS TV');
    SQL.Add('WHERE TC.CODIGO_BARRAS = TV.CODIGO_BARRAS');
    SQL.Add('AND TV.CODIGO_BARRAS = :CODIGO_BARRAS'); // (*)
    Open;
  end;
  DBEdit1.DataSource:= dsQuery;
  DBEdit1.DataField := 'STOCK';
end;
De ambos modos mientras te vayas desplazando por los diferentes artículos mostrará la existencia en el TDBEdit.

(*) Es indispensable que lo que sigue a los ':' (CODIGO_BARRAS) sea exáctamente el nombre del campo de la tabla VENTAS. Y que la propiedad DataSource del query apunte al TDataSource asociado a la tabla VENTAS para que se vaya mostrando la existencia al desplazarse por la misma.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 22-02-2013
Yare Yare is offline
Registrado
NULL
 
Registrado: feb 2013
Posts: 8
Poder: 0
Yare Va por buen camino
Error...

Gracias por responder de verdad, es un embrollo total... Siento que es tan sencillo, pero las existencias no me salen...
Código Delphi [-]
 with Modulo_datos.Ds_Tabla_existencias do
  begin
    Modulo_datos.Ds_Tabla_existencias:= Modulo_datos.Ds_tabla_ventas;
    Close;
    SQL.Clear;
    SQL.Add('SELECT registro.CANTIDAD - ventas.CANTIDAD AS STOCK');
    SQL.Add('FROM registro, ventas');
    SQL.Add('WHERE registro.CODIGO_BARRAS = ventas.CODIGO_BARRAS');
    SQL.Add('AND ventas.CODIGO_BARRAS = :CODIGO_BARRAS'); 
    Open;
  end;
  DBEdit1.DataSource:= Modulo_datos.Ds_Tabla_existencias;
  DBEdit1.DataField := 'STOCK';
end;


Y me marca como error: Undeclared identifier "SQL" ..... Missing Operator Semicolon...

Revise los punto y coma pero no funciono.

¿Me podrían auxiliar?

Última edición por ecfisa fecha: 22-02-2013 a las 18:02:32. Razón: ETIQUETAS [DELPHI] [/DELPHI]
Responder Con Cita
  #5  
Antiguo 22-02-2013
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 Yare.
Cita:
Empezado por Yare Ver Mensaje
[size="4"][
Y me marca como error: Undeclared identifier "SQL" ..... Missing Operator Semicolon...
¿ Que componente es Modulo_datos.Ds_Tabla_existencias ? Juego mi cabeza que no es un query...

También sería muy útil que nos menciones que componentes estas usando (IBX,ADO,etc).

Por favor cuando incluyas código en tus mensaje usa etiquetas para darle más legibilidad, esta imágen explica el uso:


(Ya las agregué a tu mensaje)

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 22-02-2013
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
¿Será por el with?

Prueba así

Código Delphi [-]
   
begin  
Modulo_datos.Ds_Tabla_existencias:= Modulo_datos.Ds_tabla_ventas;
Modulo_datos.Ds_Tabla_existencias.Close;     
Modulo_datos.Ds_Tabla_existencias.SQL.Clear;     
Modulo_datos.Ds_Tabla_existencias.SQL.Add('SELECT registro.CANTIDAD - ventas.CANTIDAD AS STOCK');     
Modulo_datos.Ds_Tabla_existencias.SQL.Add('FROM registro, ventas');     
Modulo_datos.Ds_Tabla_existencias.SQL.Add('WHERE registro.CODIGO_BARRAS = ventas.CODIGO_BARRAS'); 
Modulo_datos.Ds_Tabla_existencias.SQL.Add('AND ventas.CODIGO_BARRAS = :CODIGO_BARRAS');      
Modulo_datos.Ds_Tabla_existencias.Open;   
DBEdit1.DataSource:= Modulo_datos.Ds_Tabla_existencias;   
DBEdit1.DataField := 'STOCK'; 
end;

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #7  
Antiguo 22-02-2013
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola Yare.


¿ Que componente es Modulo_datos.Ds_Tabla_existencias ? Juego mi cabeza que no es un query...
Pues si, ahora que lo dices...
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #8  
Antiguo 22-02-2013
Yare Yare is offline
Registrado
NULL
 
Registrado: feb 2013
Posts: 8
Poder: 0
Yare Va por buen camino
Cierto no un un Query estoy mandando llamar a la tabla de existencias.... por medio del datasource...

Uso componentes: Ttable y Tdatasource en el Data Module...
Estoy usando IBconsole como manejador de base datos...

Lo que pasa es que mandé llamar al Query, y tuve el problema de que me decía que no existe el código_barras...


Modulo_datos.Ds_Tabla_existencias corresponde a el datasource de la tabla de existencias....
Responder Con Cita
  #9  
Antiguo 22-02-2013
Yare Yare is offline
Registrado
NULL
 
Registrado: feb 2013
Posts: 8
Poder: 0
Yare Va por buen camino
Hola, gracias por ayudarme... Me marca errores también... No entiendo porque me sale el error, que no tengo declarado SQL o la sentencia close... Por que sucederá eso???


Cita:
Empezado por ElDioni Ver Mensaje
Prueba así

Código Delphi [-]
   
begin  
Modulo_datos.Ds_Tabla_existencias:= Modulo_datos.Ds_tabla_ventas;
Modulo_datos.Ds_Tabla_existencias.Close;     
Modulo_datos.Ds_Tabla_existencias.SQL.Clear;     
Modulo_datos.Ds_Tabla_existencias.SQL.Add('SELECT registro.CANTIDAD - ventas.CANTIDAD AS STOCK');     
Modulo_datos.Ds_Tabla_existencias.SQL.Add('FROM registro, ventas');     
Modulo_datos.Ds_Tabla_existencias.SQL.Add('WHERE registro.CODIGO_BARRAS = ventas.CODIGO_BARRAS'); 
Modulo_datos.Ds_Tabla_existencias.SQL.Add('AND ventas.CODIGO_BARRAS = :CODIGO_BARRAS');      
Modulo_datos.Ds_Tabla_existencias.Open;   
DBEdit1.DataSource:= Modulo_datos.Ds_Tabla_existencias;   
DBEdit1.DataField := 'STOCK'; 
end;

Saludos.
Responder Con Cita
  #10  
Antiguo 22-02-2013
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 Yare.

Cita:
Uso componentes: Ttable y Tdatasource en el Data Module..
Ahora vamos mejor... Sabiendo que estas usando BDE, la sintáxis de la consulta para un TQuery cambia un poco:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  with Tu_Query do
  begin
    DataSource:= dsVentas; // TDataSource asociado a tabla VENTAS
    Close;
    SQL.Clear;
    SQL.Add('SELECT "COMPRAS".CANTIDAD - "VENTAS".CANTIDAD AS STOCK');
    SQL.Add('FROM COMPRAS , VENTAS');
    SQL.Add('WHERE "COMPRAS".CODIGO_BARRAS = "VENTAS".CODIGO_BARRAS');
    SQL.Add('AND "VENTAS".CODIGO_BARRAS = :CODIGO_BARRAS'); // (*)
    Open;
  end;
  DBEdit1.DataSource:= dsQuery;
  DBEdit1.DataField := 'STOCK';
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 22-02-2013
Yare Yare is offline
Registrado
NULL
 
Registrado: feb 2013
Posts: 8
Poder: 0
Yare Va por buen camino
Gracias!!!

Muchísimas gracias de verdad... Si funcionó... Todavía no puedo creerlo, duré muchos días entrando al Club pero no se me ocurrió preguntar... Me ha ayudado muchísimo... EFICSA.... he aprendido algo nuevo de verdad... Espero pronto llegar a saber así....

Y una última pregunta... Por ser un Query, no lo puedo mostrar en un Qreport?


Estoy feliz!!!!
Responder Con Cita
  #12  
Antiguo 22-02-2013
Yare Yare is offline
Registrado
NULL
 
Registrado: feb 2013
Posts: 8
Poder: 0
Yare Va por buen camino
Gracias infinitas

Ya pude hacerlo, me equivoqué en cuanto a la selección del Query....

estoy muy contenta, me sale todo perfectamente... Gracias a todos por ayudarme...



Gracias infinitas de todo corazón!
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
El programa se queda "colgado" mientras copia y luego "despierta" NeWsP OOP 5 10-03-2010 22:05:40
"OBJECT OR CLASS TYPE REQUIRED" en "APPLICATION EXENAME" Xavierator Varios 3 27-10-2008 09:09:50
Como hacer que se vea "Si" en vez de "TRUE" en un DBGrid lu9eui C++ Builder 2 07-08-2007 04:03:13
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53


La franja horaria es GMT +2. Ahora son las 15:27:01.


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