Difference between revisions of "Database field type/es"

From Free Pascal wiki
(Descripción)
Line 113: Line 113:
 
== ver además ==
 
== ver además ==
 
* [[Databases/es]]
 
* [[Databases/es]]
[[Category:Databases]]
+
[[Category:Databases/es]]

Revision as of 09:53, 7 March 2013

Descripción

Los tipos de los campos para bases de datos FCL-DB son de variados de forma que para los datasets existe un subconjunto (subset) de tipos definidos disponibles. Cada tipo soportado puede diferir dependiendo del tipo de dataset utilizado.

Tipos

Actualment están definidos los siguientes tipos para campos:

Ver Documentación de tipos de campos en FCL Por hacer: añadir información de asignación (e.g. puedes usar .AsString) e información adicional más abajo por completar. Si alguien con más experiencia en estos temas completa los tipos definidos o añade alguno que no figure vendría bien.

(ft = field type = tipo de campo)

  • ftADT:
  • ftArray:
  • ftAutoInc: un campo entero con autoincremento.
  • ftBCD: un valor decimal codificado en binario de punto flotante.
  • ftBlob: un objeto binario largo (BLOB: Bynary Large OBject), destinado principalmente para almacenar datos binarios arbitrarios.
  • ftBoolean: un valor booleano (yes/no).
  • ftBytes: Por lo visto un número de bytes almacenados tal cual. Precisa tener la propiedad de tamaño definida para que funcione.
  • ftCurrency: a format to precisely store currency values.
  • ftCursor:
  • ftDBaseOle: Por lo visto parece almacenar objetos OLE en una base de datos DBasee. Precisa tener la propiedad de tamaño definida para que funcione.
  • ftDataSet: Por lo visto parece almacenar un dataset completo (posiblemente para implementar la tabla master/detail)).
  • ftDate: una fecha (date) sin información de tiempo (time).
  • ftDateTime: información de fecha (date) y hora (time).
  • ftFMTBcd: Necesita tener el tamaño definido para funcionar..
  • ftFixedChar: un campo tipo caracter de ancho fijo, similar al tipo ShortString de Pascal. Precisa tener la propiedad de tamaño definida para que funcione.
  • ftFixedWideChar: un campo de tipo multi carácter de tamaño fijo. Precisa tener la propiedad de tamaño definida para que funcione.
  • ftFloat: un tipo numérico de punto flotante.
  • ftFmtMemo: Precisa tener la propiedad de tamaño definida para que funcione.
  • ftGraphic: Precisa tener la propiedad de tamaño definida para que funcione.
  • ftGuid: este tipo de campo se utiliza para almacenar un GUID (Globally Unique Identifier). Con el código actual este campo tiene establecido un tamaño de 38.
  • ftIDispatch:
  • ftInteger: un campo tipo entero (integer).
  • ftInterface:
  • ftLargeint: tipo de campo que contiene un entero largo, permitiendo almacenar más bytes que el integer y por tanto tiene un rango numérico mayor.
  • ftMemo: es un tipo de campo que almacena una cantidad variable de datos de tipo cadenas (string) / texto.
  • ftOraBlob: presumiblemente para almacenar un Oracle BLOB.
  • ftOraClob: presumiblemente para almacenar Oracle CLOB: un tipo de datos Oracle que puede albergar hasta 4 GB de datos. [1]
  • ftParadoxOle: presumiblemente para almacenar objetos OLE en bases de datos Paradox.
  • ftReference:
  • ftSmallint: un campo de tipo más pequeño que integer conteniendo menos byte que ftInteger.
  • ftString: un campo que almacena datos tipo string (cadena). Necesita tener definida su propiedad de tamaño definida con el número máximo de caracteres a contner.
  • ftTime: este campo almacena únicamente datos de tipo horario (time).
  • ftTimeStamp: campo que almacena datos tipo fecha (date) / hora (time). Probablemente equivalente a ftDateTime
  • ftTypedBinary: ¿Campo que almacena algo parecido al de BLOB?
  • ftUnknown:
  • ftVarBytes: presumiblemente una variante de campo para almacenar datos binarios con X bytes.
  • ftVariant: presumiblemente para almacenar datos Variant.
  • ftWideMemo: presumiblemente un ftMemo con caracteres multibyte.
  • ftWideString: presumiblemente un ftString con caracteres multibyte.
  • ftWord: presumiblemente almacena un número tipo word.

Observar que para campos de tipo cadena (string) el tamaño indica el número de caracteres que puede almacenar. DataSize por tanto indica el tamaño del campo en bytes. En caso de utilizar caracteres multibyte como los que maneja UTF8 o UTF16 lógicamente dicho tamaño ya no reflejaría el número de caracteres de forma directa, pero como se indica en caso de utilizarlo únicamente para caracteres en los estándares ANSI/ASCII DataSize (tamaño de dato) y Size (tamaño) indican efectivamente lo mismo.

Definiendo tipos en tu dataset

Por hacer: escribir esta sección entera explicando las distintas maneras de hacer cosas (TFieldDef, TFields) y que tipo de dataset suporta cada método.

Asignando y retornando valores

Una vez que se tienen definidos los campos en el dataset, se puede asignar y retornar datos en la siguiente manera - aquí se supone que se tiene un dataset llamado FTestDataset:

  FTestDataset.Open; //Abre para visualización/edición/inserción
  FTestDataset.Append;
  FTestDataset.FieldByName('TuNombreDeCampo').Asstring := 'Este es mi campo de datos'; //Supongamos que tu nombre de campo es del tipo memo
  FTestDataset.Post; //"Commit (acometer)"/save (salvar) los cambios en el campo al dataset
  WriteLn('Tú nombre de campo es:' + FTestDataset.FieldByName('TuNombreDeCampo').AsString 
  { Retorna el valor del campo en el registro actual. Como no hemos movido el campo deberíamos obtener justamente lo que acabemos de entrar }

Para campos de tipo text/memo, utilizar el método AsString. Para campos binarios, se supone que puede utilizarse el método AsString - pero debe haber algún otro modo además

ver además