En Delphi, un tipo de datos de registro es un tipo especial de tipo de datos definido por el usuario. Un registro es un contenedor para una mezcla de variables relacionadas de diversos tipos, denominadas campos, recopilados en un tipo.
En las aplicaciones de bases de datos, los datos se almacenan en campos de varios tipos: entero, cadena, bit (booleano), etc. Si bien la mayoría de los datos se pueden representar con tipos de datos simples, hay situaciones en las que necesita almacenar imágenes, documentos enriquecidos o datos personalizados. tipos en una base de datos. Si este es el caso, utilizará el tipo de datos BLOB (Objeto grande binario) ("memo", "ntext", "image", etc. - el nombre del tipo de datos depende de la base de datos con la que trabaja).
Aquí se explica cómo Tienda (y recuperar) un grabar (estructura) valor en un campo de gotas en una base de datos.
TUser = registro ...
Supongamos que ha definido su tipo de registro personalizado como:
TUser = registro empaquetado
Nombre: cadena [50];
CanAsk: boolean;
NumberOfQuestions: entero;
final;
"Record.SaveAsBlob"
Para insertar una nueva fila (registro de base de datos) en una tabla de base de datos con un campo BLOB llamado "datos", use el siguiente código:
var
Usuario: TUser;
blobF: TBlobField;
bs: TStream;
empezar
User.Name: = edName.Text;
User.NumberOfQuestions: = StrToInt (edNOQ.Text);
User.CanAsk: = chkCanAsk.Checked;
myTable.Insert;
blobF: = myTable.FieldByName ('data') como TBlobField;
bs: = myTable.CreateBlobStream (blobF, bmWrite);
tratar
bs.Write (Usuario, SizeOf (Usuario));
finalmente
bs.Free;
final;
final;
En el código de arriba:
"Record.ReadFromBlob"
Una vez que haya guardado los datos del registro (TUser) en un campo de tipo blob, a continuación se explica cómo "transformar" los datos binarios en un valor TUser:
var
Usuario: TUser;
blobF: TBlobField;
bs: TStream;
empezar
if myTable.FieldByName ('data'). IsBlob entonces
empezar
blobF: = DataSet.FieldByName ('datos') como TBlobField;
bs: = myTable.CreateBlobStream (blobF, bmRead);
tratar
bs.Read (usuario, sizeof (TUser));
finalmente
bs.Free;
final;
final;
edName.Text: = User.Name;
edNOQ.Text: = IntToStr (User.NumberOfQuestions);
chkCanAsk.Checked: = User.CanAsk;
final;
Nota: el código anterior debe ir dentro del controlador de eventos "OnAfterScroll" del conjunto de datos myTable.
Eso es. Asegúrese de descargar el código de ejemplo Record2Blob.