 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
SumSum Lt JG


Registrado: 06 Oct 2002Mensajes: 52
|
Publicado: Mar 21 Mar, 2006 7:21 pm Asunto: Filter con Firebird |
|
|
Tengo un problema y es que no me funciona los filtros en Firebird
yo hago en un IBQuery
FILTRO="CODIGO='"+cod+"'";
IBQuery1->Filter=FILTRO;
IBQuery1->FindFirst();
Esto me funcionaba con TQuery normales cuando utilizaba DBASE
Si alguien sabe qué tengo que cambiar.
Muchas Gracias. _________________ Asun |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mie 22 Mar, 2006 7:04 am Asunto: |
|
|
Hola al parecer tu codigo es para realizar una busqueda por codigo dentro de una Tabla de Interbase/Firebird, como bien has dicho la funcion Filtered es para compatibilidad de programas anteriores como el tipo DBASE
pero en este tipo de arquitectura como cliente servidor para interbase/firebird es algo mas complejo o mas bien es otra manera de pensar
puedes seguir usando el TIBQuery o de preferencia y por experiencia el componente TIBDataSet que es mucho mas potente.
viendo el codigo que tienes lo que realmente quieres hacer es esto (es lo que pienso, si no fuera asi, me puedes indicar con mayor precision),
de los mil millones de registros (je je, me gusta hacerla dificil) quieres traer a los registros que empiezen con cierto numero de caracteres que es lo que se ve,
empecemos por pasos
1.- al hacer el select * from tuTabla (me imagino que esta asi, aqui vienen los mil millones de registros), si la tabla es modo local, no hay mucho problema, por que llegan rapido, pero en una red, como se ha comentado es calentar el cable desde el servidor a la terminal que realiza la consulta.
2.- todo ha funcionado perfectamente y la terminal cuenta con el N numero de registros, ahora bien dentro de ella muestras con el filtro los datos que empiecen con tal Codigo, ejemplo cod="1234"
tu filtro queda conformado de la siguiente manera
FILTRO="CODIGO='1234' ";
IBQuery1->Filter=FILTRO;
IBQuery1->FindFirst();
y solo aparecen los codigos que tienen al principio o solo el que tiene 1234 como codigo, pero,aqui viene el pero, cuando haces un filtro, esto es una busqueda secuencial *renglon a renglon, y si tienes que comparar los mil millones de registros con este codigo para que sea filtrado?, bien tambien es algo tardado.
3.- la mejor opcion en la parte de tu busqueda es usar un codigo como el siguiente, al igual que tu los codigos de busqueda son bastante complejos, mas aún cuando se viene de clipper o dbase o paradox,
lo primero que debes hacer es lo siguiente
1.- cambiar el IBQuery por el IBDataset, pero si te gusta mas el primero no hay problema
cambiar tu sentencia Select del IBQuery o IBDataSet
por algo como esto
| Código: | Select * from tuTabla
Where Codigo STARTING WITH :CODG |
Bien que hace esto? pues lo que hace es traer de los mil millones de registros los que inicien con el parametro "CODG"
quedando algo asi en tu codigo
| Código: | IBQuery->Close();
IBQuery->ParamByName("CODG")->Value = 1234;
IBQuery->Open(); |
Con esto ya solo muestras los registros que a ti te interesen.
por aquello de las dudas, en alguna parte de no recuerdo que libro lei que la clausua ORDER BY TuCampo
hacia una consulta no viva, y si querias insertar o modificar esta no se podia, pues bien, haciendolo con un IBDataSet en la parte SelectSQL, y estableciendo algo como esto, siguiendo con la misma linea del IBQuery
| Cita: | Select * From tuTabla
Where Codigo STARTING WITH :CODG
Ordery By Codigo |
es posible insertar o modificar el campo.
ahora bien, si no es esta la respuesta que necesitas puedes explicarnos con mas detalle
Saludos _________________
 |
|
| Volver arriba |
|
 |
SumSum Lt JG


Registrado: 06 Oct 2002Mensajes: 52
|
Publicado: Mie 22 Mar, 2006 10:28 pm Asunto: |
|
|
Muchas gracias por tu respuesta.
Pero en fin, me lo temía... tengo que modificar bastante código en el programa y dispongo de poco tiempo, pero espero que merezca la pena las horas sin sueño ya que con la versión que tengo en DBASE estoy teniendo bastantes problemas con la concurrencia de usuarios y el cliente está negro. _________________ Asun |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|