PDA

Ver la Versión Completa : Como posicionarme en un registro sin locate?


Gaim2205
27-12-2007, 17:41:41
Tengo una ADOTable, a la cual le hago un locate asi:
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:


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


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
TAbla.open;
Tabla.filtered:= False;

waly2k1
28-12-2007, 22:54:35
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.

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.