Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Como posicionarme en un registro sin locate? (https://www.clubdelphi.com/foros/showthread.php?t=51744)

Gaim2205 27-12-2007 17:41:41

Como posicionarme en un registro sin locate?
 
Tengo una ADOTable, a la cual le hago un locate asi:
Código Delphi [-]
ADOTable1.Locate('trabajador',numtra,[]);

si encierro dicha instruccion en un if siempre me da falso, no lo encuentra al parecer porque es un dato de tipo entero y el locate funciona con strings.

Como puedo hacer para posicionarme en un registro determinado ya que despues necesito hacer algo asi:

Código Delphi [-]
For i := 1 to n do
Begin
ADOTable1.Next;
variable := ADOTable1.FieldByName('nombre').AsString

Gracias.

droguerman 27-12-2007 17:58:26

cambia el valor de la propiedad recno
ADOTable1.recno := i;

Gaim2205 27-12-2007 18:14:25

el problema es que tengo que posicionarme en el registro que corresponda a un dato entrado por el usuario en un Edit, p. ej:

Si el usuario pone, n. de trabajador = 8026, tengo que posicionarme en ese registro de la tabla, el cual no se que posicion tiene ya que los numeros de trabajadores no son consecutivos.

Espero haberme dado a entender.

kuan-yiu 27-12-2007 18:34:51

Yo uso "locate" con campos tipo integer sin ningún problema. Lo que tienes que hacer es pasar ese número que teclean en el edit a Integer.

Gaim2205 27-12-2007 18:37:04

si lo hice, la variable numtra es un entero

Código Delphi [-]
numtra := StrToInt(Edit1.text);
ADOTable1.Locate('trabajador',numtra,[]);


:(.... tambien trabajas con ADO?

kuan-yiu 27-12-2007 19:07:15

No, actualmente no trabajo con ADO.

¿Has comprobado que teclean un número válido?

Gaim2205 27-12-2007 19:14:45

si claro, hago las pruebas yo mismo

:confused:

Héctor Randolph 27-12-2007 19:31:59

Busca por la función FindKey y similares en la ayuda de Delphi.

A diferencia de Locate, para poder utilizar estas funciones los campos que utilices deben estar indexados.

Saludos

juanlaplata 28-12-2007 12:21:51

No encuentra ninguno o alguno en especial?
Antes del Locate verifica que la tabla este
Código Delphi [-]
TAbla.open;
Tabla.filtered:= False;

waly2k1 28-12-2007 22:54:35

Locate solo string ???
 
Locate funciona con todos los tipos de campos.
fijate bien el campo que estas buscando si es realmente el que te interesa y si el valor ingresado existe realmente en tu tabla, ademas si la base de datos es la que piensas que es la que usas y fijate bien todo hehe porque es ilogico lo que expresas aquí. No deberías tener problemas con Locate si realmente existe el valor en el campo donde buscas y la tabla/query donde lo buscas.

Código:

if Tabla1.Locate('CAMPO', VARIABLE, [] ) then
MessageBox( Handle, PChar( '¡Tás!' ), PChar( 'Info...' ), MB_ICONWARNING) ;

Saludos y espero lo resuelvas

Gaim2205 03-01-2008 16:57:58

Perdon por la respuesta tardía, me olvidé completamente de éste hilo. La verdad si traté todo lo que me comentan, he usado un Locate docenas de veces :p, y jamás habia tenido problemas (ni con una TTable común, ni con MDOTable que usé alguna vez cuando trabajé con firebird). Asi que yo se lo atribuyo a los ADO o bien a mi base de datos sql server, o tal vez me volví tonto, en fin... Al final lo solucioné con la sugerencia del FindKey de Hector Randolph.

Muchas gracias a todos por su interés.


La franja horaria es GMT +2. Ahora son las 16:32:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi