Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   manejo bases de datos (https://www.clubdelphi.com/foros/showthread.php?t=43526)

anubis 14-05-2007 08:53:51

manejo bases de datos
 
Hola, la verdad es me estoy liando con las bases de datos, estoy mirando el libro la cara oculta de delphi 4 y estoy mas liado.

Antes he creado bases de datos en access, dbase, pero nose como va la cuiestion con delphi.

Si tengo la base de datos creada, las tablas creadas, los indices creados.
Si me lo permitis os digo lo que he ido haciendo:
base de datos de nombres
tablas: nombres: codigonombre,nombre, apellidos, direccion....
habitacion:numero habitacion, fecha entrada,precio habitacion,codigonombre
indices: indexnombre:codigonombre, nombre+apellidos
indexhabitacion:codigohabitacion
luego he puesto con el bde una ttabla, he asignado en propiedades la base de datos y asginado la tabla y los index. He creado dos ttabla. Dos datasource para las dos tablas.

Hasta ahi el ejemplo sencillo para que me pueda ir enterando.

Ahora como seria para enlazar un campo de la base de datos con un string por ejemplo o viceversa, o esto no funciona asi?
abrir tabla, seleccionar el campo que interesa para buscarlo en la tabla, pasar los datos a string,... añadir, o borrar datos..

la tabla esta creada con paradox, usando el delphi.


perdonadme que pregunte cosas muy basicas.

gracias

roman 14-05-2007 09:22:28

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

anubis 14-05-2007 09:26:43

gracias roman es de gran ayuda, con eso ya puedo enredar, aunque imagino que para estas cosas no seria el metodo mas razonable sino mas bien el mas simple.

gracias de nuevo.


La franja horaria es GMT +2. Ahora son las 15:29:09.

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