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 12-01-2007
Avatar de TrUnkS
TrUnkS TrUnkS is offline
Miembro
 
Registrado: dic 2005
Posts: 93
Poder: 19
TrUnkS Va por buen camino
Question navegar por registro Clientes -> Facturas

Hola amigos tengo un problema con la navegación de registros en Maestro-Detalle. Maestro = Clientes, Detalle = Facturas. Quisiera que en el formulario de facturación pueda navegar por la tabla Facturas al estilo DBNavegator y que me aparezca el cliente que la posee, es decir, un botón para la primera factura, otro para la anterior, otro para la siguiente y otro para la ultima factura. El número de factura es Primary Key. Lo que he conseguido es que en otro formulario el usuario ingrese el número de factura y que lo busque en la tabla facturas, mostrandome el cliente que la posee, pero no puedo hacerlo para los botones que acabo de mencionar. Uso IBDataSet con CachedUpdates. Este es el código para buscar las facturas:

Código SQL [-]
 DataModulo.TClientes.Close;
 DataModulo.TClientes.SelectSQL.Clear;
 DataModulo.TClientes.SelectSQL.Add('SELECT *');
 DataModulo.TClientes.SelectSQL.Add('FROM CLIENTES,FACTURAS');
 DataModulo.TClientes.SelectSQL.Add('WHERE CLIENTES.ID_CLIENTE = FACTURAS.ID_CLIENTE AND FACTURAS.ID_FACTURA = ' + QuotedStr(Edit1.Text));
 DataModulo.TClientes.Open;
De antemano gracias

Última edición por TrUnkS fecha: 12-01-2007 a las 17:19:30.
Responder Con Cita
  #2  
Antiguo 12-01-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Código Delphi [-]
with DataModulo.TClientes.SelectSQL begin
 if Active then Close;
 Clear;
 Add('SELECT C.*, F.*');
 Add('FROM CLIENTES C,FACTURAS F');
 Add('WHERE C.ID_CLIENTE = F.ID_CLIENTE');
 Add('AND F.ID_FACTURA = ' + QuotedStr(Edit1.Text));
 Open;
end; //with

O tambien:
Código SQL [-]
Select C.*, F.*
from Facturas F join Clientes C on F.ID_Cliente=C.ID_Cliente
Wherer F.ID_Factura='00001'

Aunque eso de Tabla.* no es muy recomendable ya que puedes traer muchos campos que realmente no vas a necesitar, lo mejor sería que hicieras el Select con los campos que realmente vas a necesitar. Esto para evitar cargas innecesarias en el servidor y en la memoria del equipo.
__________________


Última edición por ContraVeneno fecha: 12-01-2007 a las 17:45:21.
Responder Con Cita
  #3  
Antiguo 12-01-2007
Avatar de TrUnkS
TrUnkS TrUnkS is offline
Miembro
 
Registrado: dic 2005
Posts: 93
Poder: 19
TrUnkS Va por buen camino
No es lo que pregunto

Hola ContraVeneno. Primero darte las gracias por tu tiempo y respuesta pero no es lo que pregunto, porque en lo referente a la búsqueda de facturas eso no hay problema. Lo que quiero por ejemplo es tener un botón que me permita ir a la primera factura, otro para la anterior, la siguiente y la última ingresada. Obviamente que me muestre el cliente que la tiene. Por ejemplo este código no lo he provado pero supongo que es el que me permite ir a la primera factura

Código SQL [-]
 SELECT TOP 1 FACTURAS FROM FACTURAS

Pero no se como es para la última o siguiente factura, además este código no es para una relación Maestro/Detalle. No se si me explico bien pues en manuales SQL no he encontrado este tipo de consultas. Gracias por cualquier ayuda que puedan bridarme.

P.D: No uso generadores para los números de facturas sino que el propio usuario los ingresa

Última edición por TrUnkS fecha: 12-01-2007 a las 18:09:38.
Responder Con Cita
  #4  
Antiguo 12-01-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Entonces lo que requieres es enlazar el DBnavigator al Dataset que tiene la consulta. el mismo DBnavigator te permitirá hacer esos movimientos....

Ahora que si lo que quieres es crear el botón tu mismo, no necesitas hacer niguna consulta extra. Moviendo el Dataset que tiene la consulta es tan sencillo como:
TuDataset.First, Last, Next, o Previous. Con esto podrás moverte en tu dataset.
Y la información se mostrará ya sea en tu dbgrid o en tus dbedits o en donde muestres la información.

Una vez que ya tienes todas las facturas en un Dataset, solo hay que moverse sobre ese mismo dataset. Consulta sobre First, Last, Next, o Previous del Dataset
__________________

Responder Con Cita
  #5  
Antiguo 12-01-2007
Avatar de TrUnkS
TrUnkS TrUnkS is offline
Miembro
 
Registrado: dic 2005
Posts: 93
Poder: 19
TrUnkS Va por buen camino
Mis propios botones de navegación

Hola gracias por tu ayuda. Si hago First, Prior, Next o Last en la tabla facturas no muestra nada porque la tabla facturas tiene como fuente maestra la tabla Clientes, por lo tanto tengo que operar en el DataSet maestro. Entonces no se cuales son las sentencias SQL para ponerlas en botones hechos por mi para navegación. No se si me explico bién, de antemano muchas gracias.
Responder Con Cita
  #6  
Antiguo 12-01-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Si utilizas TQuery en lugar de un TTable, con la consulta que ya tienes, podrás hacer el prior, next, etc sin problemas.

No se como tengas enlazado a facturas con clientes o como lo muestres. Pero si utilizas un TQuery y este lo muestras en DBEdits, podras hacer lo que desesas sin problemas.
__________________

Responder Con Cita
  #7  
Antiguo 12-01-2007
Avatar de TrUnkS
TrUnkS TrUnkS is offline
Miembro
 
Registrado: dic 2005
Posts: 93
Poder: 19
TrUnkS Va por buen camino
Probaré

Como dije anteriormente trabajo con IBDataSet para acceder a las tablas de la base de datos. Probaré con esa consulta y trataré de navegar por la tabla de facturas para que me diga el registro maestro que la posee. Gracias de nuevo y postearé mi solución final apenas la tenga. Saludos
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
Navegar por una query en pagina web Hassard Internet 2 13-07-2023 02:41:34
Navegar en aplicacion windows [.NET] sErgis .NET 0 05-09-2006 07:16:32
Es Posible que 2 ó más Clientes Bloqueen 1 Registro al mismo tiempo???? AGAG4 Conexión con bases de datos 0 06-01-2006 00:28:13
Iconos para navegar... Luis Castillo Gráficos 2 15-12-2005 23:57:16
Campos calculados, facturas y detalles de facturas. Letty Conexión con bases de datos 7 07-11-2003 11:19:44


La franja horaria es GMT +2. Ahora son las 07:33:16.


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