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 16-08-2003
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Poder: 21
emeceuy Va por buen camino
Datos repetidos... SQL...

Hola a todos...

Planteo la situación tal como es:

Tengo una base de datos, destinada a movimientos de tarjetas de crédito. En la base de datos, entre otros campos hay: Nombre del cliente, Nombre de la tarjeta, Número de Tarjeta.
Quiero que cuando se agregue un nuevo movimiento, no tener que escribir el nombre del cliente, y el número de la tarjeta de crédito, si es que el cliente ya compró algo (porque esos datos ya están en el sistema)

El problema es que si éste cliente compró más de una vez, aparecerá en el TDBGrid, tantas compras como éste hizo.
Supongamos que el cliente JUAN PEREZ hizo 3 compras con VISA número "xxx" y dos con MASTER CARD número "yyy". En mi Grid aparecerán 5 líneas, tres con JUAN PEREZ, VISA, xxx y dos con JUAN PEREZ, MASTER, yyy; yo quiero que aparezca solamente una vez la primera (visa) y otra vez la segunda (master) porque repetir esos datos no tendría sentido...

Como planteo ese sql? se puede hacer esto de sacar los datos repetidos?

Saludos y muchas gracias, Marcelo


En crear una consulta query que me devuelva
__________________
Marcelo C.
Responder Con Cita
  #2  
Antiguo 16-08-2003
humexico.org humexico.org is offline
Miembro
 
Registrado: jul 2003
Posts: 17
Poder: 0
humexico.org Va por buen camino
Que tal,
si tu DBMS soporta StoredProcedures (SP) podrías lanzar un SP en el OnNewRecord de tú DataSet de ventas el cual haga lo siguiente:

Create #tmpTable(Vendedor as VArChar(50), TarjetaNombre as VarChar(50), TarjetaNUmeo as VArchar(50))
....
//Declaras un cursor para todos los clientes con compras
DEclare cursor MiCursor for Select distinct clientes from tablaVentas into @Cliente
...
//Barres este cursor y para cada uno de los clientes que tienes en @Cliente le haces inserts a la tabla temporal pero con los datos de la venta para el cliente en cuestion


Saludos y espero que te sirva,
Responder Con Cita
  #3  
Antiguo 16-08-2003
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
Si los datos que listas no varian de uno a otro (los campos tienen valores similares) puedes hacer un SELECT DISTINCT de los campos, o agruparlos con GROUP BY

Claro, eso no te servira si en la consulta tienes un campo que varia, tal como la fecha del consumo. Dinos cual es tu caso
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #4  
Antiguo 18-08-2003
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Poder: 21
emeceuy Va por buen camino
Hector:

si, hayotros datos que varían, como la fecha, o el importe, etc... como tengo que hacer? porque usando distinct me da un error, me dice que no encuentra campos que ni menciono... y si cambio el disticnt por * vuelve a funcionar bien, pero me muestra los datos repetidos...

como haría con el gruop by, sirve para eso?

gracias

mArCeLo
__________________
Marcelo C.
Responder Con Cita
  #5  
Antiguo 18-08-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Hola emeceuy

Pon el SQL que estas lanzando y miramos mejor como poder ayudarte

De todas maneras, si quieres sacar la fecha, depende de como este definida esta, a lo mejor es dificil. Para el importe seguramente seria un sum(importe) en el select y un group by por los demas campos, pero lo dicho, mejor pon el SQL que lanzas
Responder Con Cita
  #6  
Antiguo 18-08-2003
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Poder: 21
emeceuy Va por buen camino
bueno, aquí va el sql que lanzo:

select distinct (nombre_cli,tarj_num,tarj_nom) from "creditotarjetas.dbf")

gracias

Marcelo
__________________
Marcelo C.
Responder Con Cita
  #7  
Antiguo 18-08-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Prueba con

select distinct nombre_cli, tarj_num, tarj_nom
from "creditotarjetas.dbf"


Esto te dara 1 registro por nombre_cli existente en creditotarjetas.dbf
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


La franja horaria es GMT +2. Ahora son las 18:42:11.


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