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 24-06-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Filtrar registros y guardar en Array

Hola,
¿Cómo realizar una consulta filtrada para guardar en un ARRAY los campos de una Base de Datos hecha en Access donde se repiten muchos registros con el mismo nombre?

Tengo los datos de una Tabla Periódica Química guardada en Access, donde existen registros que se repiten en los campos como ser: Metal, No Metal, Gas Noble y Anfótero por ejemplo.
Código:
Nombre         Tipo
Litio              Metal
Oxígeno         No Metal
Sodio            Metal
Manganeso    Anfótero
Cloro            No Metal
Calcio           Metal
Molibdeno      Anfótero
Helio             Gas Noble
...... etc, etc, etc, etc.


Lo que deseo es filtrar con una consulta SQL "Tipo" de tal manera que LUEGO pueda guardarlo en un array [0..3] of string los elementos: Metal, No Metal, Anfótero y Gas Noble solo los 4.
¿Cómo realizo todo este proceso trabajando con ADOQuery?
Responder Con Cita
  #2  
Antiguo 24-06-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Deiv,

¿Estás guardando en una misma tabla estos dos campos: Nombre y Tipo?
Porque no logro entender acabadamente lo que deseas hacer...

Si la respuesta es afirmativa, te aconsejo que hagas este tipo de relación:

Código:
Tabla_Tipos -< Tabla_Elementos
Es decir que guardes en la tabla Tipos el nombre y a cada uno se le asocia un ID. Lo mismo para la tabla Elementos.

Si lo que deseas es obtener unicamente los tipos simplemente haces:
Código SQL [-]
select Tipos.Descripcion from Tipos

Una vez que lanzas la consulta es cuestión de ir leyendo los registros devueltos e insertarlos en el array que tu tengas declarados.

Por favor, si estoy equivocado y entendí mal avisame.
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 24-06-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Cool

Encontré este ejemplo en el Foro de Ruben_Cu:
Código Delphi [-]
 
with TuTabla do
          begin
               DisableControls; //puede no ser necesario
               first;
               while not eof do
               begin
                    if (ComboBox1.Items.IndexOf(FieldByName('Idiomas').AsString)=-1)then //en caso que existan registros iguales solo cargaría uno
                    ComboBox1.Items.Add(FieldByName('Idiomas').AsString);
                    next;
               end;
               EnableControls; //puede no ser necesario
          end;
          ComboBox1.ItemIndex:=1;
Y Yo lo implemente algo parecido a lo siguiente (No tengo en estos momentos Delphi a mano):
Código Delphi [-]
 
x:=0;
with TuTabla do
          begin
               DisableControls; //puede no ser necesario
               first;
               while not eof do
               begin
                    if (ComboBox1.Items.IndexOf(FieldByName('Tipo').AsString)=-1)then //en caso que existan registros iguales solo cargaría uno
                        begin
                           ComboBox1.Items.Add(FieldByName('Tipo').AsString);
                           A[x]:=FieldByName('Tipo').AsString;
                           inc(x);
                        end;
                    next;
               EnableControls; //puede no ser necesario
          end;
          ComboBox1.ItemIndex:=1;
Pero el problemita de este ejemplo para mi aplicación es que no requiero de un ComboBox en mi Formulario, es decir para nada me hace falta ese ComboBox, Yo solo trato de guardar esos datos en un array, ¿Cómo se puede hacer?

Última edición por Deiv fecha: 24-06-2007 a las 23:38:57.
Responder Con Cita
  #4  
Antiguo 25-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Utiliza un TStringList para guardarlo, de hecho, la propiedad Items de un combo (TStrings) es el antecesor del TStringlist.

Busca en el foro o en la ayuda de delphi.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 26-06-2007
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Wink

El código:
Código Delphi [-]
type
  MiArray = array[0..3] of string;
var
  i,j,x:  integer;
  A:MiArray;
  B: TStringList;
begin
  B:= TStringList.Create;
  x:=0;
  ........
  with ADOQuery1 do
    begin
       first;
       while not eof do
         begin
            if (B.IndexOf(FieldByName('Tipo').AsString)=-1) then
                begin
                  A[x]:= FieldByName('Tipo').Value;
                  inc(x);
                end;
            next;
         end;
    end;
...
end;

Me lanza error en la línea:
if (B.IndexOf(FieldByName('Tipo').AsString)=-1) then
Project raised exception class EAccess Violation

Imagino que es porque no está lleno el TStringList, es decir imagino que no use el método ADD, ¿alguna orientación, de cómo corregirlo?
Responder Con Cita
  #6  
Antiguo 26-06-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Bueno yo no creo que es por lo lleno en caso de que no este lleno el error que te daria es index out of bound pero el acces violation es sobre un control que no esta creado en memoria, por los momentos no veo el error, seguro qe la copia es exacta del programa???
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
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
Guardar y Filtrar en una Tabla Sr.Scorpion Conexión con bases de datos 19 23-03-2007 17:14:44
Guardar/Recuperar OLEVARIANT OF ARRAY (II) Franz Argandoña Tablas planas 2 13-07-2006 20:42:59
Guardar array en tabla StartKill Firebird e Interbase 4 13-07-2004 14:18:50
Guardar Olvariant of Array en Access Franz Argandoña Tablas planas 1 01-05-2004 02:54:52
Como guardar una array en una base datos? ciscu Varios 3 11-02-2004 09:27:49


La franja horaria es GMT +2. Ahora son las 01:50:30.


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