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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-08-2013
sac sac is offline
Miembro
 
Registrado: abr 2007
Posts: 109
Poder: 17
sac Va por buen camino
Problema para borrar desde DBLookUpListBox

Amigos a ver si me pueden ayudar.
Cada vez que un cliente compra mas de un articulo Se va sumando la compra para saber cuanto cobrar cuando termine de comprar. Ésto lo identifico de una compra anterior con un "Cod_Ventas".
Quiero que me ayuden a saber como hacer para borrar cuando se arrepienten de comprar un articulo sumado.
Estoy tratando de ver todos los articulos de ese "Cod_Ventas" en un DBLookuplistbox para seleccionarlo y borrarlo para después seguir con éste cliente.
Mi Consulta SQL es ésta:

Código Delphi [-]
  Q_Borrar.Close;
  Q_Borrar.SQL.Clear;
  Q_Borrar.SQL.Add('Select Cod_Ventas, Vta_Articulo, Cantidad, Total_Gasto');
  Q_Borrar.SQL.Add('From Libreria_Venta');

  Q_Borrar.sql.add('where Cod_Ventas =:PCod');
  Q_Borrar.sql.add('order by Vta_Articulo');
  if not Q_Borrar.Prepared then
           Q_Borrar.Prepare;
  Q_Borrar.parambyname('PCod').asInteger:= StrToint(edit3.text);
  Q_Borrar.Open;
  Q_Borrar.First;
  DBLookUpListBox1.ListSource:=DS_Borrar;
  DBLookUpListBox1.KeyField:='Cod_Ventas';

Gracias.
Responder Con Cita
  #2  
Antiguo 23-08-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 sac.

Para borrar el registro correspondiente a determinado código y ver reflejado los cambios:
Código Delphi [-]
  with Q_Borrar do
  begin
    Close;
    SQL.Text := 'DELETE FROM LIBRERIA_VENTA WHERE COD_VENTAS = :PCOD';
    ParamByName('PCOD').AsInteger := StrToInt(Edit1.Text);
    ExecSQL;
  end;
  Tu_DataSet.Refresh;
Pero no sé como están organizados tus datos y creo ver un posible problema: Lo lógico es que todos los ítems de venta estén relacionados a la factura por algún campo. De ser COD_VENTAS el campo de relación, las líneas anteriores eliminarían todos los ítems de la factura ya que este sería común a todos los ítems de la misma.

Tal vez si nos explicas con mas detalle las tablas que usas y las relaciones entre ellas sería mas fácil orientarte.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 23-08-2013
sac sac is offline
Miembro
 
Registrado: abr 2007
Posts: 109
Poder: 17
sac Va por buen camino
Ese es el problema

Justamente Ese es el problema ecfisa.
con ese tipo de consulta borro todos los articulos que acaba de comprar el cliente. Yo quisiera tener una consulta para que el "empleado" vea solamente esos campos que detallé antes (Vta_articulo, total_gasto etc) en el DBLookUpListBox y a la hora de seleccionar, solamente borre el el registro elegido.
De ésta manera me aseguro de restar el precio al contador que tengo y sigo con la compra de éste cliente que quedó latente.
Responder Con Cita
  #4  
Antiguo 23-08-2013
sac sac is offline
Miembro
 
Registrado: abr 2007
Posts: 109
Poder: 17
sac Va por buen camino
o ....

suponiendo que el Cod_Venta sea 23 y el Vta_Articulo sea Lapiz, capaz que agregandole un AND a ese Where le pueda indicar:

Where el codigo = 23 (que lo traigo del edit)
AND Vta_articulo = lapiz. ( a lapiz lo traería del DBLooUpListBox) entonces borrar...

Si fuera correcto me tendrías que ayudar xq no tengo idea como sacar del DBLookUpListBox los datos del Vta_articulo
Responder Con Cita
  #5  
Antiguo 23-08-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 sac.
Cita:
Empezado por sac Ver Mensaje
suponiendo que el Cod_Venta sea 23 y el Vta_Articulo sea Lapiz, capaz que agregandole un AND a ese Where le pueda indicar:

Where el codigo = 23 (que lo traigo del edit)
AND Vta_articulo = lapiz. ( a lapiz lo traería del DBLooUpListBox) entonces borrar...
Creo que lo mejor es agregar un campo ID autoincremental para cada ítem, ya que en teoría es factible, por ejemplo, que en una venta se dé esta situación:
Código:
Descripcion | Cantidad | Subt.
------------+----------+--------
Lapiz       | 2        | 4
Fibrón      | 1        | 5
Folios      | 10       | 10
...
( A ver... Mejor deme cinco lápices mas. )
Lapiz       | 5        | 10
¿ Y en ese caso cual ítem de lápiz borramos, el de 2 unidades o el de 5 ?

Usando un campo único de identificación (transparente para el usuario) el borrado sería:
Código Delphi [-]
  with Q_Borrar do
  begin
    Close;
    SQL.Text := 'DELETE FROM LIBRERIA_VENTA WHERE ID = :PARAMID';
    ParamByName('PARAMID').AsInteger := Tu_DataSet.FieldByName('ID').AsInteger;
    ExecSQL;
  end;
  Tu_DataSet.Refresh;
Basta entonces, estar posicionado en el registro que se desea borrar en Tu_DataSet e invocar al código anterior para que se realize el borrado correcto.

Saludos
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 24-08-2013 a las 01:41:16.
Responder Con Cita
  #6  
Antiguo 24-08-2013
sac sac is offline
Miembro
 
Registrado: abr 2007
Posts: 109
Poder: 17
sac Va por buen camino
ahhh + consejo

Ahhh está bueno eso... es más prolijo porque de todas maneras en tu ejemplo borraba el lapiz, o los 5, o los dos, y creaba la nueva compra de lapices, pero así es más prolijo... probaremos...

Ah y por el lado del consejo Ecfisa, es sobre el diseño de clubdelphi. No se si soy yo pero ese color naranja sobre el gris en las respuestas (generalemente lo veo en las consultas sql) a mi me molesta un poco para poder leerlo fácil. Generalmente tengo que sombrearlo con el mouse para poder leerlo, pero como dije antes, es un consejo solamente para mejorar ClubDelphi.
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
Arrastrar desde un StringGrid para luego borrar Carmelo Cash OOP 10 16-07-2013 05:57:47
Problema para borrar una tabla Interbase 2007 NPIdea Firebird e Interbase 1 27-10-2008 10:11:36
Problema para cerrar programa desde Api angelp4492 API de Windows 2 18-12-2007 19:10:03
Problema para editar y borrar raugadel Firebird e Interbase 2 30-08-2005 18:54:38
Problema con DBLookupListBox jourdan OOP 2 30-03-2004 18:52:32


La franja horaria es GMT +2. Ahora son las 03:44:49.


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