Ver Mensaje Individual
  #2  
Antiguo 14-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Muy sencillo. En cada tabla (o más genéricamente, en cada dataset), se tiene el concepto de registro activo. Son los datos de ese registro activo a los que puedes acceder, y lo haces de varias formas:

La más sencilla, es como si el reegistro activo fuera un arreglo:

Código:
Table1['nombre'], Table1['apellidos'], Table1['edad']
donde los índices del arreglo son los nombres de los campos. Este método tiene la desventaja de que los datos se tratan con el tipo de datos genérico variant, que no es óptimo y podría impactar en el rendimiento.

Otra manera es usando el método FieldByName:

Código:
Table1.FieldByName('nombre'), Table1.FieldByName('apellidos'), Table1.FieldByName('edad')
FieldByName regresa un objeto de tipo TField, lo que quiere decir que no te está dando directamente el valor del campo. Para ello, debes usar una de las propiedades de TField, tal como AsString, AsInteger, AsBoolean, etc, según el tipo de datos que tenga el campo en la base de datos:

Código:
Table1.FieldByName('nombre').AsString, Table1.FieldByName('apellidos').AsString, Table1.FieldByName('edad').AsInteger
Aunque hace un poco más larga la escritura, tiene la conveniencia de que te devuelve el tipo de datos preciso y no generico.

Esos datos los usas como cualquier otra variable, de manera que puedes copiarlos directamente a variables del tipo adecuado, por ejemplo:

Código Delphi [-]
{ Copiamos el valor del campo 'nombre' en el cuadro de edición Edit1 }
Edit1.Text := Table1.FieldByName('nombre').AsString;

o bien:

Código Delphi [-]
var
  E: Integer;

begin
  E := Table1.FieldByName('edad').AsInteger;
end;

Ahora, realmente sólo puedes acceder a un registro a la vez, el mencionado registro activo. Para acceder a los datos de otro registro, debes primero moverte a ese registro. Hay varias maneras de hacer esto. or un lado cuentas con métodos como Table1.First, Table1.Next que te colocan en el primer registro a avanzan al siguiente. Son útiles para el recorrido secuencial de todos los registros. Pero cuents también con métodos como Table1.Locate para localizar un registro con un criterio dado.

En fin, espero que esto te aclare un poco.

// Saludos
Responder Con Cita