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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Seleccionar varios registros de una tabla por un campo

Queremos mostrar todos los registros de una tabla cuyo campo N.I.F. sea el mismo.Es como un filtro, ¿Cómo lo podríamos hacer?
Gracias.
Responder Con Cita
  #2  
Antiguo 22-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Yo quiero que me toque la primitiva




Hola vhirginia

Siento la respuesta, pero es que, no se, como mínimo saludar digo yo. Un poquito de savoir faire que dicen los franceses.

Mira si cambia tu pregunta redactándola de esta manera:

"Hola compañeros

Tenemos un problemilla que no sabemos cómo solucionar. Resulta que nos gustaría mostrar todos los registros cuyo campo NIF sea el mismo. ¿Esto se hace con un filtro? ¿Cómo lo podríamos hacer?

Gracias."

Dices lo mismo, pero con palabras que dan ganas de responder a tu pregunta
¿Verdad que se nota la diferencia?
Bueno, te invito a que te leas la Guía de Estilo (ver link en firma) para sí ver otras "normas" a seguir mientras estás por estos lares
Responder Con Cita
  #3  
Antiguo 22-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Siento si te ofende, pero creo que nuestra pregunta se ha hecho de forma educada,Un saludo y lo sentimos.
Responder Con Cita
  #4  
Antiguo 22-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Empezado por vhirginia
Siento si te ofende, pero creo que nuestra pregunta se ha hecho de forma educada,Un saludo y lo sentimos.
No digo que no sea una pregunta educada, sencillamente digo que se puede plantear de forma diferente sin que "parezca" una exigencia

A mi personalmente me da igual mientras no faltes el respeto a nadie (entonces ya ejerceré mis "deberes" como moderador). Mientras tanto, en no responder..... tan contento

Nos leemos
Responder Con Cita
  #5  
Antiguo 22-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Hola cadetill,
nos expresamos así porque es nuestra forma natural y creemos que si nosotras leemos un mensaje así, no nos parece una exigencia,(por eso de no hagas lo que no te gusta que te hagan a ti, y por tanto si a ti no te molestan ciertas formas de expresarse piensas que a los demás tampoco)
En cualquier caso, intentaremos ser más amables,
Un saludo
Responder Con Cita
  #6  
Antiguo 22-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Por favor, lee la guía de estilo del Foro. Allí encontrarás la razón de lo que te ha dicho cadetill, es decir, como esperamos que sean los mensajes puestos en el Foro, y porqué.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #7  
Antiguo 25-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Hola compañeros,
Esperamos que hayais entendido nuestros argumentos,no hemos hecho ningun comentario con mala intencion, sino desde el respeto y el agradecimiento por la ayuda que nos habeis prestado.Si alguien puede echarnos una mano con esta duda sería de gran ayuda,
Muchísimas gracias.
Responder Con Cita
  #8  
Antiguo 25-04-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código:
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('Select * From MiTabla ');
Query1.Sql.Add('Where NIF = '+QuotedStr(Edit1.Text));//En Edit1 se supone
está el Nif.

Query1.Open;

//Con un Filtro
MiTabla.Filter:='NIF ='+QuotedStr(Edit1.Text);
MiTabla.Filtered:=True;
Saludos y buen rollo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 25-04-2004 a las 19:57:11.
Responder Con Cita
  #9  
Antiguo 26-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Queremos mostrar el resultado del filtro en un DBGrid

Muchas gracias compañero,

Nuestro problema, es que lo queremos mostrar en un DBGrid, es decir seleccionar en un DBLookupComboBox un NIF que pertenece a una tabla de clientes y mostrar en un DBGrid todas las facturas asociadas a ese cliente(de la tabla de facturas). Esperamos habernos explicado bien. Muchas gracias de antemano.
Responder Con Cita
  #10  
Antiguo 26-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Empezado por vhirginia
Nuestro problema, es que lo queremos mostrar en un DBGrid, es decir seleccionar en un DBLookupComboBox un NIF que pertenece a una tabla de clientes y mostrar en un DBGrid todas las facturas asociadas a ese cliente(de la tabla de facturas).
Pues la respuesta de Marcos es correcta (sólo e quedaría unir la Query a un DataSource y ésta al DbGrid

Otra opción (si hay índice establecido por el campo NIF) es definir una relación maestro/detalle
Responder Con Cita
  #11  
Antiguo 26-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
gracias,
pero necesitamos saber más, porque nuestro nivel es inferior ¿cómo se une la query al DataSource? y ¿el DataSource al DBGrid?.
De todas formas, la otra opción, tp la sabemos¿Cómo se define una relación maestro/detalle?

A ver si nos podeis echar una mano,
Saludos
Responder Con Cita
  #12  
Antiguo 26-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Empezado por vhirginia
¿cómo se une la query al DataSource? y ¿el DataSource al DBGrid?.
TQuery -> TDataSource (Dataset) -> TDBGrid (DataSource)

Lo que hay entre parentesis es el nombre de la propiedad que has de informar con el componente en cuestión

Cita:
Empezado por vhirginia
¿Cómo se define una relación maestro/detalle?
Coges la Tabla (TTable o lo que sea) detalle (la "secundaria" vamos) y en su propiedad MasterSource le asignas la tabla maestro
Con la propiedad MasterFields de la tabla detalle podrás establecer por qué campos se unen las dos tablas (en tu caso el NIF)

Me dejas que te/os de un consejo? De buen rollo, claro!!!
Mirar de pillaros algún libre de Delphi, el que sea, temas de estos así tan básicos los encontraréis muy bien explicados en la mayoría de ellos
Responder Con Cita
  #13  
Antiguo 26-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
tenemos un problema y es que con el Query al intentar ponerlo Active a True, nos da el siguiente error:
Query:No SQL statement avalaible.
Gracias
Responder Con Cita
  #14  
Antiguo 26-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Muchas gracias por vuestra atención,

Cita:
Empezado por marcoszorrilla
Código:
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('Select * From MiTabla ');
Query1.Sql.Add('Where NIF = '+QuotedStr(Edit1.Text));//En Edit1 se supone
está el Nif.

Query1.Open;

//Con un Filtro
MiTabla.Filter:='NIF ='+QuotedStr(Edit1.Text);
MiTabla.Filtered:=True;
Saludos y buen rollo.
El problema es que no sabemos donde poner este código, o cual de los dos, si lo que lleva lo del Query o lo que pone debajo del filtro, y de todas formas, donde tendríamos que colocarlo.

Saludos de nuevo
Responder Con Cita
  #15  
Antiguo 26-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Hola de nuevo,
No estamos seguras pero puede que lo del Query no nos funcione, porque no estamos trabajando con SQL?, es que nuestras tablas son Paradox...
Si no resolvemos este problema no podemos seguir. A ver si alguien nos echa una mano, porfavor
Muchísimas gracias
Responder Con Cita
  #16  
Antiguo 26-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
hola vhirginia.

Te (les) recomiendo la lectura de un libro de delphi. Para comenzar, tenes uno que podes hallar en línea totalmente gratuito, y muy bueno. Es "La cara oculta de Delphi", que hallas en la web de su autor, Ian Marteens. Esto te introducirá al uso de los DataSets, los componentes DataAware y a muchos otros temas de la programación con delphi.

El código facilitado por marcos, debes ponerlo en el evento donde queres "filtrar" el contenido de la grilla. Podes elegir entre los dos (el primer trozo comienza en query1.close y termina en query1.open).

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #17  
Antiguo 26-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
hola de nuevo y muchas gracias, seleccionamos el NIF con un DBLookUpComboBox y a partir de ahí es donde lo queremos sacar ¿qué es lo análogo a Edit1.Text en el DBLookUpComboBox?
Responder Con Cita
  #18  
Antiguo 26-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Vamos a tratar de resumir un poco.

El método de usar un query tiene que ajustarse un poco ya que tal como está tendrías que ejecutar la consulta cada vez que cambies el NIF. En su lugar usa consultas parametrizadas:

Código:
select * from clientes
where nif = :nif
Los dos puntos (:) indican que se trata de un parámetro cuyo valor se puede sustituir así:

Código:
Query.ParamByName('nif').AsString := valor del nif
Pero aquí el problema persiste en cuanto a que debes hacer la sustitución cada vez. Para llenar automáticamente este parámetro puedes usar la propiedad DataSource del Query asignándola al DataSource de donde estés listando los NIFs- el mismo que el que alimenta tu DBLookupComboBox. Al hacer esto, cuando cambies la selección en el combo automáticamente se mostrarán en el grid únicamente los registros asociados al nif escogido. Claro está que tu grid deberá estar ligado al Query via un DataSource.

Otra forma de hacer lo mismo, sin utilizar un Query es usando dos tablas, una para los clientes y otra para los nifs. La primera la enlazas al grid y la segunda al combo via sendos datasource y estableces la de nifs como tabla maestra de la de clientes (propiedades MasterSource y MasterFields).

De cualquier forma no están de más las observaciones de mis compañeros en cuanto a una lectura de los conceptos básicos de las componentes de bases de datos y yo añadiría el uso de SQL y relación entre tablas.

// Saludos
Responder Con Cita
  #19  
Antiguo 26-04-2004
vhirginia vhirginia is offline
Miembro
 
Registrado: mar 2004
Posts: 64
Poder: 21
vhirginia Va por buen camino
Muchas gracias,
Ya hemos soluccionado el problema sin usar el Query, simplemente con el filtro, en el evento OnClick del LookUpComboBox.
Un saludo
Responder Con Cita
  #20  
Antiguo 27-04-2004
CHiCoLiTa CHiCoLiTa is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
CHiCoLiTa Va por buen camino
y si lo haces en el OnChange mejor?
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


La franja horaria es GMT +2. Ahora son las 02:49:09.


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