Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Seleccionar varios registros de una tabla por un campo (https://www.clubdelphi.com/foros/showthread.php?t=9388)

vhirginia 22-04-2004 12:27:00

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.

__cadetill 22-04-2004 12:41:15

Yo quiero que me toque la primitiva :mad:




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

vhirginia 22-04-2004 12:44:49

Siento si te ofende, pero creo que nuestra pregunta se ha hecho de forma educada,Un saludo y lo sentimos.

__cadetill 22-04-2004 12:50:58

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

vhirginia 22-04-2004 12:59:20

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

guillotmarc 22-04-2004 13:54:14

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.

vhirginia 25-04-2004 18:15:11

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.

marcoszorrilla 25-04-2004 19:54:50

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.

vhirginia 26-04-2004 11:10:35

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.

__cadetill 26-04-2004 11:35:33

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

vhirginia 26-04-2004 11:47:33

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

__cadetill 26-04-2004 12:18:04

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

vhirginia 26-04-2004 12:39:52

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

vhirginia 26-04-2004 17:19:49

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

vhirginia 26-04-2004 17:46:21

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

jachguate 26-04-2004 18:06:34

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.

;)

vhirginia 26-04-2004 18:13:09

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?

roman 26-04-2004 19:15:50

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

vhirginia 26-04-2004 19:19:25

Muchas gracias,
Ya hemos soluccionado el problema sin usar el Query, simplemente con el filtro, en el evento OnClick del LookUpComboBox.
Un saludo

CHiCoLiTa 27-04-2004 12:00:57

y si lo haces en el OnChange mejor?


La franja horaria es GMT +2. Ahora son las 13:47:28.

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