Programación General > Delphi
Posición De Un Registro
(1/1)
Anonymous:
Cómo puedo determinar la posición de un registro en la tabla, sabiendo que estoy utilizando TTable para acceder a la base de datos. Algo como: Se encuentra en la posición 3 de 17 registros
Ayla:
Una solución un poco cutre, a mi ver .... :rolleyes: . Es recorrer la tabla con un while hasta que encuentres la posición correcta. Ej:
--- Código: Text --- i := 1; table.First; while i < 3 do begin table.Next; i=i+1; end;
Supongo que el TTable lo tienes asociado a un TDataSet, así que mírate en la ayuda la propiedad BookMark del DataSet. No recuerdo bien pero creo que mediante esa propiedad podías colocarte en una posición determinada de la tabla. A ver si tengo un hueco y te lo confirmo.
Espero que te sirva. :hola:
Anonymous:
Que tal Ayla, gracias por la respuesta, pero lo que yo necesito es la posición absoluta del registro actual, algo que en Visual Basic sería como:
--- Código: Text --- Dim posicion as Integerposicion = DataEnvironment1.rsCommand1.AbsolutePositionlabel1 = "posicion " + Str(posicion) + " de ... registros" Entonces en n tendría la posición absoluta del registro actual para ponerla en una label y saber en que posición me encuentro en el momento, yo ya he probado con recorrer toda la tabla así:
--- Código: Text --- var buscamos:String; posicion:Integer;begin buscamos := DBEdit1.Text; posicion := 1; Table1.First; while (DBEdit1.Text <> buscamos) do begin posicion := posicion + 1; Table1.Next; end; Label1.Caption := 'Estamos en la posición ' + IntToStr(posicion) + ' de ' + IntToStr(Table1.REcordCount);end; Pero el gran problema es que la base de datos es una encuesta y no hay un campo que sirva para diferenciar un registro de otro, mejor dicho pueden haber varios registros con la misma información. He pensado en ponerle un campo de autoincremento para diferenciar un registro de otro y poder recorrer la tabla buscando el valor de este campo con el codigo anterior y determinar la posición actual. Pero son demasiados registros para estar recorriendolos cada momento. Bueno, ... la pregunta es la siguiente. Hay alguna forma de determinar la posición absoluta del registro actual?.
makio:
Espero quen esto te ayude para lo que quieres hacer.
La propiedad RecNO, te devuelve en que registro te encuentras.
El ejemplo que te pongo hace lo siguiente: primero busco en mi tabla (propiedad Locate) supongamos clientes al que tenga el nombre que empieze por FER me pondra el el primer registro que encuentre con esta especificacion, al tener localizado al cliente, para saber en que numero de registro se encuentra se utiliza la función RecNO y listo.
procedure TForm1.Button1Click(Sender: TObject);
var
regAct:integer;
begin
table1.Locate('nombre','FER',[loPartialKey]);
regAct:=table1.RecNo;
end;
Espero haberte resuelto tu duda :D
Anonymous:
Gracias por el dato makio, no se me había ocurrido, justo lo que necesitaba.
Navegación
Ir a la versión completa