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 

problema con indices en interbase

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: problema con indices en interbase Responder citando

hola a todo el mundo, no entiendo que estoy haciento mal, tengo un servidor con interbase 6.0 y una base de datos con 6 tablas. Necesito realizar busquedas en cada una de estas tablas, pero al ejecutar estas busquedas el sistema se cuelga. Use las sentencias Locate y Lookup, Que Puedo Hacer?, es urgente. Gracias Por las orientaciones
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Indices Responder citando

Saludos:

Aunque los indices no son necesarios para una busqueda en IB, son recomendables.

Crea un indice sobre un campo unico o casi unico con la sentencia:

Create index NombreDeMiIndice on NombreTabla (Campo1,Campo2...)

Respecto a la busqueda en si, me extraña que se cuelge...

Aqui te pongo un trozo de codigo que utilizo con una grid alimentada por una consulta cualquiera, utiliza Locate y LocateNext y se activa al hacer click sobre el titulo de la columna o pulsar F3
Código:
void __fastcall TfLibros::DBGrid1TitleClick(TColumn *Column)
{

String Columna1="Buscar hacia abajo en Columna "+Column->Field->FieldName;
if (InputQuery(Columna1, "¿Valor a Buscar?", Valor))
{
TLocateOptions Opts;
Opts.Clear();
Opts << loCaseInsensitive;
Variant locvalues;
locvalues = Variant(Valor);

Columna = Column->Field->FieldName;
DBGrid1->SelectedIndex=Column->Index;
if(!Query->Locate(Columna, locvalues, Opts))
  ShowMessage("No se localizo "+Valor+" En la Columna "+Columna);
else
  ShowMessage(Valor+" Localizado, Pulse F3 para buscar Siguente");
}
//--------------------------------------------------------------------

Pon el KeyPreview del form a true y en el evento OnKeyDown escribe:
Código:
void __fastcall TfLibros::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if(Valor!=""&&Key==VK_F3)
{
 TLocateOptions Opts;
Opts.Clear();
Opts << loCaseInsensitive;
Variant locvalues;
locvalues = Variant(Valor);

  if(!Query->LocateNext(Columna, locvalues, Opts))
  {
   String Mensaje="No hay mas "+Valor+" en Columna "+Columna;
   if(InputQuery(Mensaje,"¿Buscar desde el principio?",Valor))
   {
    locvalues = Variant(Valor);
    Query->Locate(Columna, locvalues, Opts);
   }
  }
}
//------------------------------------------------------------------------


Tal vez se pueda mejorar el codigo pero de momento espero te sea util, cualquier duda postea en este mismo hilo y con gusto te respondo.

Ahh... casi lo olvido Valor es una variable publica tipo AnsiString.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Muchas gracias Alfredo,

Los codigos que me muestras como ejemplo me sirvieron de gran manera.

Quizas comentar mas estos temas en nuestros correos. el mio es:

e-mail: jcrparedes@yahoo.es.

Nos hablamos luego.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: No me funciona Responder citando

Hola.

He intentado hacer el ejemplo que ponias para buscar en un DBGrid pero no hace nada cuando doy click o doble click en el titulo.

Que tengo que hacer ? He mirado las propiedades de la DBGrid y no encuentro nada.

Para que compruebes si está en el metodo seguro te pongo la cabecera:
Código:
void __fastcall TPrincipal::DBGrid1TitleClick(TColumn *Column)
{

String Columna1="Buscar hacia abajo en Columna "+Column->Field->FieldName;

if (InputQuery(Columna1, "¿Valor a Buscar?", sBusca))


Un saludo cordial.
_________________
== No !! al fin de c++ Buider. ==
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: mnnn... Responder citando

A ver, dices que no hace nada al dar Click en el titulo? no da algun menaje de error? debe pedirte al menos el valor a buscar.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: respuesta Responder citando

Hola

Pues no, no hace nada. Como si el metodo no existiera.

Que puede ser ?

Lo unico es que esta la tabla dentro de un GroupBox.

Será eso ?

un saludo.
_________________
== No !! al fin de c++ Buider. ==
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: A Ver Responder citando

Vamos a ver, ponle un ShowMessage("ALGO"); dentro del codigo... y dime si sale al menos Question
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: No sale nada. Responder citando

Est muy raro.

No sale nada de nada.

mira el codigo que he puesto:

Código:
void __fastcall TPrincipal::DBGrid1TitleClick(TColumn *Column)
{

ShowMessage("Algo a ver si funciona.");
..sigue el resto de tu código.


_________________
== No !! al fin de c++ Buider. ==
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.