Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 08-02-2006
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
david duarte Va por buen camino
Como seleccionar campos de una tabla sin saber cuantos van a seleccionar

Hola a todos!!!

Me surgio un duda y no he podido encontrarla en internet.

Estoy haciendo un proyecto para una empresa que hace hilos y polimero, y ellos mismos tienen sus laboratorios, y estos hacen sus propias pruebas
Tengo una tabla que tiene como 20 campos(paradox), en ese laboratorio hacen 20 pruebas(a1,a2,a3,a4,......a20), yo como usuario puedo mandar a hacerles algunos analisis, pero no todos, p.e. quiero mandarles hacer el analisis1, analisis3, analisis5, etc.
al momento de dar de alta los analisis que el usuario mando hacer, si seleccionó realizar el analisis 1, le pongo un 'o'(una o, no un cero), y los que no selecciono, les pongo una 'x'.

ej

a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
o x o x o x x x x x x x

entonces nada mas quiero que me muestre a1, a3,a5 y los demas no, pero no se como recorrer los campos.

no se si tenga que poner algun ciclo o que.

Ahora a lo que me tiene trabajando un poco de mas.

Para hacer una prueba, cree un proyecto nuevo, en ese proyecto tengo un datasource, un query y un dbgrid.

al dataset le asigno el query1.
y todo funciona, pongo el codigo sql para que vean

Código Delphi [-]
  Query1.DataBaseName := 'c:\setkimv2.0.1\';
  datasource1.DataSet := query1;
  Query1.SQL.Clear;
  Query1.sql.Add('SELECT *');
  Query1.SQL.Add('from res_textil');
  Query1.SQL.Add('WHERE LabFolio = :ctrl' );
  Query1.ParamByName('ctrl').AsString := edit1.text;
  Query1.Active := True;
  Query1.Open;


y si me muestra bien los datos en el dbgrid, pero me muestra todos los analisis, hasta los que tienen 'x', y eso no quiero.

Alguien sabe como hacerle para recorrer los campos y saber cuales tienen 'x' y cuales no, ya que me interesan que se muestren solamente los que son <> 'o'.

Espero haberme entendio =)

Muchas gracias.
Cómo te sientes hoy??
Responder Con Cita
  #2  
Antiguo 08-02-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Moderador
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.186
marcoszorrilla Va por buen camino
La idea puede ser una variable de tipo texto en donde vayas guardando los campos, separados por coma....

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
MisCampos:String;
begin
MisCampos:='Clave,Empresa';
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('Select '+ MisCampos+ ' from Clientes');
ShowMessage(Query1.Sql.Text);
Query1.Open;
end;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 08-02-2006
Avatar de DTAR
DTAR DTAR is offline
Miembro
 
Registrado: nov 2005
Posts: 53
DTAR Va por buen camino
Talking sa tabla no esta normalizada

o sea... porque no generas una tabla que tenga el codigo del paciente o de muesta o lo que sea... y el codigo de analisis.
para eso tienes que generar una tabla con analisis y vas a poder agregar todo s los analisis que quieras sin tener que modificar la tabla... y asi tambien vas a poder mostrar cuanquier analisis con un simple where
__________________
|DTAR|
Responder Con Cita
  #4  
Antiguo 09-02-2006
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
david duarte Va por buen camino
Si me dices que la tabla no esta normalizada, lo que pasa es que esa es un parte, la estructura de tabla completa la pongo mas abajo.

La verdad es que si estuve pensando en eso, pero no se me ocurrio, al final de cuentas se me hizo lo mismo, pero por lo que veo, no es lo mismo, ademas aqui hay mas gente que sabe mas que yo.

Por mas que pienso, no se me ocurre como quedaria.

en la tabla, tiene los siguientes campos
labfolio, numero, posicion(todas conforman mis llaves primarias),
a1,a2,a3,....a20.

Gracias!!
Cómo te sientes hoy??
Si tienen alguna sugerencia, se les agradecería
Responder Con Cita
  #5  
Antiguo 09-02-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Moderador
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.186
marcoszorrilla Va por buen camino
La idea que te propongo, que yo supuse deducirías es colocar todos los campos en una matriz, mediante los criterios que fueren marcar los que vayan a participar en la consulta.

Y finalmente recorrer la matriz mediante un ciclo e ir añadiendo los campos marcados a la variable MisCampos que yo te propuse.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 09-02-2006
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
david duarte Va por buen camino
Hola!!!

esta bien tu idea, pero estuve pensando y de todos modos creo que a final de cuentas, tienes que recorrer la tabla(no necesariamente secuencialmente), y eso era lo que no queria,ya que la tabla esta en el servidor y en donde tengo que hacer la consulta es en una computadora cliente, por lo tanto, se va a tardar mas.

Lo que yo intentaba expresar o dar a entender, que si por medio del query(que se ejecuta mas rapido) se puede recorrer la tabla por medio de un campo field.value o algo por el estilo que tenga sql, pero creo que no se puede.

Asi que pues tuve que hacerle primeramente un locate al primer registro que tengo que recuperar los campos y ya que esta en el primer registro del folio,recorro todos los campos, y anotando en una variable de tipo string, el ombre de los campos, separados por coma.

y si me funciono, lo que pasa es que le estaba respondiendo DTAR que me dice que mi tabla no esta normalizada, a final de cuentas ese no era el problema.

Asi solucione mi problema!!!

Espero que no se molesten por lo que dije anteriormente.

Saludos!!!!
Cómo te sientes hoy??
Responder Con Cita
  #7  
Antiguo 09-02-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Moderador
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.186
marcoszorrilla Va por buen camino
Si de antemano conoces los campos de la tabla, también puedes presentar los nombres de los campos acompañados por un casilla de verificación, al recorrer las casillas verás cuales están marcadas y entonces, esos campos los vas añadiendo a la variable que te propuse, una vez que el usuario de por finalizada la selección lanzarías el SQL.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #8  
Antiguo 05-04-2010
mematanlimon mematanlimon is offline
Miembro
 
Registrado: may 2007
Posts: 12
mematanlimon Va por buen camino
a la inversa

buenas... estaba leyendo los hilos, y yo necesito hacer lo contrario, desde un archivo de texto separado por comas, poder volcar esos valores a un dbgrid, alquien sabe como se hace??? no encuentro y no se me ocurre un modo, los datos que deseo colocar dentro del dbgrid son de unos tracks de gps:

ejm

TP,D,-53.8122687209398,-68.1476321909577,00/00/00,00:00:00,0
TP,D,-53.8123668730259,-68.1481121387333,00/00/00,00:00:00,0
TP,D,-53.8124318327755,-68.1486702896655,00/00/00,00:00:00,0


donde bueno, como ya dije, debo volcar y separar los campos por las comas
Responder Con Cita
Respuesta


Herramientas
Desplegado

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
Seleccionar todos los registros de una tabla menos 2 FunBit MySQL 4 13-07-2005 17:06:31
Campos autocalculados en una tabla JCarlos Tablas planas 5 31-01-2005 13:08:34
Mostrar campos que no esten en una tabla jbetancurt Firebird e Interbase 2 11-11-2004 04:15:30
manipular archivo planos (.txt) como Tabla @-Soft Conexión con bases de datos 3 24-04-2004 13:56:31
Excel como si fuera una tabla de datos haron Servers 1 13-05-2003 18:58:28


La franja horaria es GMT +2. Ahora son las 05:46:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi