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 

problemas con Locate()

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: problemas con Locate() Responder citando

Hola amigos, estoy usando el método Locate(), para encontrar registros en tablas ADO, pero aparentemente no lo hace bien....
//----------------------------------------------------------------------------------
bool __fastcall TDM::BuscarRegistro(Variant NomCampo, TADOTable Tabla, Variant Vlr)
{
bool ok;
TLocateOptions Opts;

Opts.Clear();
Opts << loCaseInsensitive;
ok = Tabla->Locate(NomCampo,Vlr ,Opts);
return ok;
}
//----------------------------------------------------------------------------------
donde Nomcampo, es el campo clave en la tabla.
Tabla, es la tabla en la que voy a buscar
y Vlr, es el valor que deseo encontrar en la tabla.

si funcionara correctamente, Locate, devuelve un true, cuando encuentra el registro.. cuando el programa ejecuta, Locate, genera una excepción de Key violation, lo cual es correcto, pero la intención de este método es que me permita identificar violaciones de clave, antes de hacer un Post()..

Alguien sabe si Locate() inserta el registro con solo invocarle?

saludos,
_________________
Julian Uribe Hernandez
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Yo uso bastante Locate y no inserta nada, solamente busca de acuerdo a las opciones de TLocateOptions, que no hace falta usarlo si la busqueda es normal.
Ej:
Código:

if (kQ2->Locate("cht", xE->cH, TLocateOptions())) {
...
}


Normalmete lo que busco esta en un string, salvo cuando busco por mas de un campo que uso el variant como en:
Código:

Variant alocv[2];

alocv[0] = Variant(cH);
alocv[1] = Variant(cD);
if (kQ2->Locate("cht;cod", VarArrayOf(alocv,1), TLocateOptions())) {
...
}

Cuando no he querido buscar exacto, y si que pare en el siguiente si no esta lo que busco, he utilizado la opction loPartialKey;

Tu código lo veo correcto, salvo que en la variable NomCampo utilices algo incorrecto.

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: gracias Responder citando

Ya lo solucioné, estaba usando el Locate de forma incorrecta...
Mil gracias,
_________________
Julian Uribe Hernandez
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Y que era lo que usabas incorrectamente???

Yo lo estoy usando tal cual y no me funciona... curiosamente cuando solo busco por un campo..
Volver arriba
Ver perfil de usuario Enviar mensaje privado
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.