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 17-06-2008
Avatar de johurgi
johurgi johurgi is offline
Miembro
 
Registrado: jul 2006
Posts: 95
Poder: 18
johurgi Va por buen camino
Resultado tquery

Hola a todos,

¿Como puedo coger los datos que me devuelve una query?tengo en mi programa una tquery que consulta un numero variable de columnas, estas columnas tengo que leerlas despues una a una.

Mis datos en la tabla los tengo de la siguiente forma.
Código SQL [-]
COD     TEXTO
--------------
...
1.1       HOLA
1.2       MUNDO
1.3       .
...


Y el codigo que habia escrito y no me funciona es el siguiente


Código:
filtro:='select * from tabla where cod like '1.*';
consulta.sql.text:=filtro;
consulta.execsql;
consulta.open;
if consulta.recordcount <> 0 then
begin
//RECOGO LOS DATOS
end;
gracias por vuestra ayuda.
Responder Con Cita
  #2  
Antiguo 17-06-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Código:
 
filtro:=consulta.sql.text:='select * from tabla where cod like '1.*';
consulta.open;
While Not Consulta.Eof do
begin
  showMessage(Consulta.fields[0].AsString);
  Consulta.Next;
end;
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 17-06-2008
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Arrow Consulta....

Cita:
Empezado por johurgi Ver Mensaje
Hola a todos,

¿Como puedo coger los datos que me devuelve una query?tengo en mi programa una tquery que consulta un numero variable de columnas, estas columnas tengo que leerlas despues una a una.

Mis datos en la tabla los tengo de la siguiente forma.
Código SQL [-]
COD     TEXTO
--------------
...
1.1       HOLA
1.2       MUNDO
1.3       .
...


Y el codigo que habia escrito y no me funciona es el siguiente


Código:
filtro:='select * from tabla where cod like '1.*';
consulta.sql.text:=filtro;
consulta.execsql;
consulta.open;
if consulta.recordcount <> 0 then
begin
//RECOGO LOS DATOS
end;
gracias por vuestra ayuda.

Creo que una buena forma sería a través de un array dinámico:

Código Delphi [-]
procedure cargarArrayDinamico(...);
var
  A : array of array of string;
  I, J : Integer;
begin
  SetLength(A, consulta.fieldCount); //Cantidad de columnas que te devolvió la consulta
  consulta.first;
  for I := 0 to consulta.recordCount do //Cant. de registros que devolvió la consulta
  begin
  //Recorremos todas las columnas  
    for J := Low(A[i]) to High(A[i]) do
    begin
       SetLength(A[i], consulta.recordCount); //Le agregamos las filas a la segunda dimensión, para cada A[i]  
    end;
  end; //del primer for...
//a esta altura ya tengo el array del mismo tamaño que la consulta y puedo hacer lo que quiera con ellas.

No se si esto es lo que pides.

No he probado aún este código pero la idea está. No conozco una función que te levante directamente los valores de la consulta y los mande a un array pero supongo que con esto se arregla la cosa...
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #4  
Antiguo 19-06-2008
Avatar de johurgi
johurgi johurgi is offline
Miembro
 
Registrado: jul 2006
Posts: 95
Poder: 18
johurgi Va por buen camino
Gracias por vuestra ayuda.

Al final hice lo que me digiste poliburro, y me funciono, lo unico que al ser un tabla con mas de 150000 registro acaba el pc por quedarse sin memoria.

Y he cambiado la forma de hacerlo, lo he echo con un ttable utilizando la propiedad de filter, pero me vuelve a dar problemas en la segunda pasada del bucle que se encarga de dar la condicion de filtrado me da un error cuando intento establecer el nuevo filtro:

Código:
while not tabla1.eof do
begin
  tabla2.filter:='codigo='''+tabla1Cod.asstring'''';
  tabla2.filtered:=true;
  if tabla2.recordcount <> 0 then
  begin
    while not tabla2.eof do
    begin
       res:=res + tabla2Texto.asstring;
       tabla2.next;
    end
   tabla2.filtered:=false;
   {Inserto en otra tabla}
  end
  tabla1.next;
end
El error que me da cuando intento volverla a filtrar es el de "Operation not aplicable".

si alguien me pudiera echar una mano se lo agradeceria

Un saludo
Responder Con Cita
  #5  
Antiguo 19-06-2008
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
Estas planteando una situacion master detail, ubica informacion sobre eso en el foro que se ha tratado varias veces.

En resumen la tabla1 seria la maestra y la tabla2 la detalle, cada vez que se mueva la tabla1 automaticamente se filtran los registros en la 2
__________________
...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
  #6  
Antiguo 19-06-2008
Avatar de johurgi
johurgi johurgi is offline
Miembro
 
Registrado: jul 2006
Posts: 95
Poder: 18
johurgi Va por buen camino
voy a probar lo que me dices de maestro detalle, haber que tal, me acabas de dar una idea.

gracias
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
Resultado vacío [TQuery] senda SQL 9 29-06-2007 21:53:20
sql resultado carols018 MySQL 2 23-11-2006 16:48:17
TQuery nenufer Conexión con bases de datos 2 22-05-2006 16:41:03
Búsquedas a través de TTable y/o TQuery y resultado en DBGrid nax Conexión con bases de datos 5 11-02-2005 05:08:55
Resultado TQuery tabla de PostgreSQL jomf PostgreSQL 2 03-01-2005 18:25:43


La franja horaria es GMT +2. Ahora son las 02:58:55.


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