Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-08-2005
Acker Acker is offline
Miembro
 
Registrado: ago 2005
Ubicación: Málaga
Posts: 33
Poder: 0
Acker Va por buen camino
Exclamation Problemas con Locate

Buenas dias!!

Soy un principiante en esto de Delphi, y tengo una duda que espero que me puedan resolver.
Se trata de lo siguiente, al usar la funcion Locate me dice que no se puede usar teniendo la base de datos cerrada, asi que la abro (Open) pero sigue sin situarme el cursor en el registro que busco. Me pasa lo mismo en un proyecto que funciona perfectamente en otra maquina. A que se puede deber???
Espero vuestra ayuda!

P.D.- Si no esta suficientemente clara mi pregunta os ruego que me lo hagais saber para poder explicarla algo mejor.

Un saludo y Gracias
Responder Con Cita
  #2  
Antiguo 05-08-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues tienes que añadir el motor de base de datos que estas utilizando. Access, Paradox, Firebird......

Para utilizar Locate tienes que tener la tabla por la que vas a buscar abierta y además no es preciso que tengas indice declarado por el campo por el que haces la búsqueda aunque en aras a la rapidez es conveniente que el campo esté indexado.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 05-08-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Puedes poner el código que utilizas?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 05-08-2005
Acker Acker is offline
Miembro
 
Registrado: ago 2005
Ubicación: Málaga
Posts: 33
Poder: 0
Acker Va por buen camino
A ver, contestando a vuestras dos respuestas.

El motor de Base de Datos es Paradox, y el codigo que uso es:

procedure TFIdentificacion.BAceptarClick(Sender: TObject);
begin
DMBaseDeDatos.TUsuarios.Locate('nombreUsuario',EUsuario.Text,[])
end;
end.
Mi objetivo con él es que me diga si un usuario introducido por teclado esta o no en la base de datos

Gracias
Responder Con Cita
  #5  
Antiguo 05-08-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Prueba con éste:

Código Delphi [-]
  procedure TFIdentificacion.BAceptarClick(Sender: TObject);
 var
   b:Boolean;
  begin
 DMBaseDeDatos.TUsuarios.First; 
 b := DMBaseDeDatos.TUsuarios.Locate('nombreUsuario',
                                                      EUsuario.Text, [loCaseInsensitive])
 if (b) then
   MessageDlg('Encontrado', mtInformation, [mbOK], 0);
 end
 else begin
   MessageDlg('No Encontrado', mtError, [mbOK], 0);
 end;
 
  end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 05-08-2005
Acker Acker is offline
Miembro
 
Registrado: ago 2005
Ubicación: Málaga
Posts: 33
Poder: 0
Acker Va por buen camino
Neftali, siento decirte que tampoco me funciona.
Me tiene esto bastante cabreado.
No podra ser de algo de configuracion del entorno? o del sistema operativo?
Es que como comente al principio del hilo, un proyecto que funciona en otra maquina, me falla a mi tambien por lo mismo.

Madre mia, que desesperacion!!! algo tan absurdo y que me haga perder tanto tiempo!
Responder Con Cita
  #7  
Antiguo 05-08-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Seguro que tienes un campo en esa tablas con ese mismo valor?

Revisa que no tenga espacios, caracteres extraños, acentos,...
¿No te encuentra ningun valor en esa tabla (ningun nombre de usuario) o sólo es uno el que te falla? ¿El resto de valores sí los encuentra?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 05-08-2005
Acker Acker is offline
Miembro
 
Registrado: ago 2005
Ubicación: Málaga
Posts: 33
Poder: 0
Acker Va por buen camino
Que va tio, no encuentra nada, y no tiene ni acentos, espacios ni nada. lo mas gracioso es que si en lugar de poner para que busque DBEUsuario.text pongo una cadana de caracteres si que me la encuentra (si esta) y no si no esta.

Raro, no???
Responder Con Cita
  #9  
Antiguo 05-08-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Buenas!

Parece una tontería pero prueba esto:

String temp;

temp = trim(EUsuario.Text);
b := DMBaseDeDatos.TUsuarios.Locate('nombreUsuario',
temp, [loCaseInsensitive])
if (b) then
MessageDlg('Encontrado', mtInformation, [mbOK], 0);
end
else begin
MessageDlg('No Encontrado', mtError, [mbOK], 0);
end;



Un saludo

Edu
Responder Con Cita
  #10  
Antiguo 05-08-2005
Acker Acker is offline
Miembro
 
Registrado: ago 2005
Ubicación: Málaga
Posts: 33
Poder: 0
Acker Va por buen camino
Edu, parece que funciona, jejeje
Pero otra cosilla, este codigo es si tengo un Edit en lugar de un DBEdit. con los dbedit que estado tiene que tener la tabla antes de usar la tabla??
Open, edit,...., no se si me explico
Y sobre todo, cual es la funcion de trim??
Responder Con Cita
  #11  
Antiguo 05-08-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Un DBEdit contiene un campo del registro activo en la tabla, por lo que no creo que debas utilizarlo en tu caso, si simplemente lo que quieres es buscar un valor.


La función trim simplemente elimina los espacios que pueda haber al principio y al final de la cadena, pero lo que realmente he pensado es más sutil: El campo dbedit.text lo que devuelve es un tipo de datos Variant (o sea, un comodín). La función trim interpreta el el variant es realmente una cadena, mientras que el locate no. Y el trim, aunque reciba un variant nos devuelve un String.

No sé si me he explicado muy bien, pero la idea es esta.

Un saludo

Edu
Responder Con Cita
  #12  
Antiguo 05-08-2005
Acker Acker is offline
Miembro
 
Registrado: ago 2005
Ubicación: Málaga
Posts: 33
Poder: 0
Acker Va por buen camino
Te has explicado perfectamente. Seguiremos en contacto por que a medida que vaya avanzando en la practica me iran surgiendo dudas.

Muchas gracias chic@s por vuestra ayuda!

Un saludo
Responder Con Cita
  #13  
Antiguo 05-08-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por epuigdef
temp = trim(EUsuario.Text);
A eso me refería... (a los espacios)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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


La franja horaria es GMT +2. Ahora son las 10:09:45.


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