Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Filter con Firebird

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Filter con Firebird Responder citando

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
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

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
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.