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)
-   -   Filtrar BD (https://www.clubdelphi.com/foros/showthread.php?t=36302)

NoSv 07-10-2006 17:54:23

Filtrar BD
 
Hola amigos.
Tengo un problema con una aplicacion que estoy haciendo. El programa utiliza dos bases de datos. Necesito acceder a un dato de la primera base de datos y que filtre la segunda a partir de ese dato, por ejemplo para que quede mas claro: tengo guardada la clasificacion de futbol de la semana pasada y quiero compararla con la de esta semana para ver como han cambiado. Necesito acceder al primer dato de la casificacion de la semana pasada y compararlo con la otra base de datos para ver en que puesto va, luego cojo el segundo dato y ago lo mismo, luego el tercero y asi puedo ver quien sube, baja....

Bueno no se si sera un poco lioso pero estoy seguro de que me podran ayudar. muchas gracias.

vtdeleon 07-10-2006 20:04:24

Me he vuelto un espaguetis leyendo:D.

Podrias usar IN en una consulta SQL, por Ej
Código SQL [-]
Select * from jugadoreshoy as JH
where JH.Codigo in (Select JP from jugadoresayer)
Solo una idea.

NoSv 07-10-2006 20:22:37

ya pero no utilizo sql. Las bases de datos don tablas importadas desde excel.
he estado mirando y ai una forma k seria Table1.locate(equipo, nombreequipo, [locaseinsensitive]) pero cuando lo compilo el locaseinsensitive no me lo reconoce.

vtdeleon 07-10-2006 20:33:48

Saludos

Cita:

Las bases de datos don tablas importadas desde excel.
Importada hacia donde?*

Yo supongo que el tratamiento de Excel "importada" con un Ttable es similar a Paradox,...Incluso, creo que podrias usar un Tquery y asi usar SQL.
Te da error?
Código Delphi [-]
Table1.locate('equipo', edtequipo.text, [locaseinsensitive])

(*) Nunca me he visto en la necesidad de importar nada de Excel, asi que mis conocimientos sobre el tema son limitados.

Lepe 07-10-2006 21:00:34

Añade:
Código Delphi [-]
uses DB;

En esa unidad estan definidas el tipo de datos TlocateOptions.

No sé si te valdrá, ya que en principio, deberías tenerla añadida a tu "uses".

Saludos.

NoSv 08-10-2006 20:01:25

ya esta solucionado, era lo k decias vtdeleon, usando el locate, el locaseinsensitive no me lo reconocia pero lo e kitado ya k buske lo que era y no me acia falta. Pero ahora tengo otro problema xDD cosas de ser novato xD.
Necesito recorrer la tabla secuencialmente y uso esto
For y:=0 to Form1.Table1.RecordCount-1 do
For x:=0 to Form1.Table1.FieldCount-1 do
listbox1.Items.Add(Form1.Table1.Fields[x].asstring);
pero de esta forma lo que consigo es por ejemplo, si tengo los datos de dos ekipos, que me muestre los datos del primer equipo tantas veces como equipos ai y yo necesito que me los pase todos los datos de todos los ekipos.

Un saludo.

mariofur 09-10-2006 13:42:43

Sencillo, [loCaseInsensitive,loPartialKey]. o si lo prefieres [loCaseInsensitive,0] pero te diré que te lo reconocerá si pones un objeto Table en el formulario, desde el que estás poniendo este código.
Espero haberte ayudado.

Lepe 09-10-2006 14:14:25

Lo simple es hacer una consulta (TQuery) con la clausula distinct:
Código SQL [-]
select distinct Nombre from tabla

Ahora ya sabes que no tendrás repetidos, además la consulta tendrá menos registros que la tabla (precisamente porque elimina los repetidos).

La otra opción, es hacerlo así: (que conste que no me gusta, ya que se tiene que comparar cada registro con todos los anteriores)

Código Delphi [-]
Combobox1.items.BeginUpdate;
table1.DisableControls;
try
  table1.First;
  while not table1.eof do
  begin
    if combobox.items.indexof(table1Nombre.AsString) = -1  then
      combobox.items.Add(table1Nombre.AsString;
    table1.next;
  end;
finally
  table1.EnableControls
  Combobox1.items.EndUpdate;
end;

Mira la ayuda de DisableControls y de BeginUpdate, sin duda, realizará la tarea mucho más rápido.

Saludos

NoSv 11-10-2006 12:27:47

Ya esta, gracias a todos por vuestra ayuda. El algoritmo ese me vale bien, ya que ahora mismo no me importa mucho la rapidez con la que se ejecute.
Muchas gracias otra vez, no obstante dentro de poco me tendreis aqui otra vez preguntando seguro!!!

Xaooo


La franja horaria es GMT +2. Ahora son las 05:24:35.

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