Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   campos memo, autoincremental y time (https://www.clubdelphi.com/foros/showthread.php?t=53066)

anubis 09-02-2008 02:35:02

campos memo, autoincremental y time
 
Hola de nuevo, estoy enredando con el firebird, al final, gracias a vuestras soluciones, he podido hacer que el firebird funcione en delphi con los componentes zeos, solo uso el zeosdatabase, el ztable y luego el datasource.
Estoy usando el ib_sql para crear las tablas y los index, hasta ahi va bien la cosa, pero me he encontrado varios problemas con los tipos de datos, provengo de paradox.

El tipo de dato time no existe, me recomienda el timestamp lo que nose si se puede usar como el time normal.
El campo autoincrement tampoco existe, aunque he visto en otro post del clubdelphi una solucion, pero me lia bastante.
El campo memo no lo he visto por ningun lado.

Si me podeis echar una manita porque no veo documentacion


gracias

egostar 09-02-2008 03:11:07

Claro que existen TIME y DATE además del TIMESTAMP, tal vez es la versión de tu FB, yo uso la 2.0 y si trae ese tipo de campos.

Edito:

Los campos autoincrementales tengo entendido que se hacen con disparadores
Los campos memo son los campos BLOB

Salud OS

Delphius 09-02-2008 03:20:09

Hola anubis respondiendo a tus inquietudes:

1. Es TIMESTAMP, no deberías tener problemas.
2. No existe ese tipo. Se consigue mediante generador y tigger:

Por ejemplo, este es un generador (sacado de la DB de ejemplo):

Código SQL [-]
CREATE GENERATOR CUST_NO_GEN;

Y este en un Tigger que ejecuta a dicho generador.

Código SQL [-]
CREATE TRIGGER SET_CUST_NO FOR CUSTOMER
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
    /* FIXED by helebor 19.01.2004 */
    if (new.cust_no is null) then
    new.cust_no = gen_id(cust_no_gen, 1);
END

Asi trabaja Firebird, y en lo personal, no es liosa. Aunque hay que tener presente de que los generadores se escapan de las transacciones. Es decir que por más que canceles una transacción, el valor ha sido generado, asi que ten cuidado de cuando y como usarlo. Tal vez es aquí donde te está costando entenderle.

3. Existe el campo BLOB.

Con respecto a documentación:
Sitio Oficial
Firebird México

Y por supusto, Clubdelphi.

Saludos,

anubis 09-02-2008 04:06:49

Gracias por las respuestas.
Uso la version firebird 2.0 pero quiza sea por culpa del ib_sql, porque al colocar un time me sale con que para date se use timestamp, estoy intentando descargar otra opcion para crear las bases de datos y las tablas.

gracias

RONPABLO 10-02-2008 16:23:22

Yo también pase de paradox a FIrebird y te puedo contar algunas de mis experiencias... como tal no te puedo ayudar mucho con los ZEOS en el momento de evaluarlos no me gustaron mucho y proseguí con los IBX...

Consejos.

1. Los campos blobs se podría decir que son los equivalentes a los campos memo, pero creo que es mejor usar un varchar de un tamaño muy grande... ej. vachar(3000)...

2. Si el problema que tienes con los clientes en paradox al tener varios conectados es la saturación del la red en Firebird los tendrás si usas sin nigun tratamiento especial de la información los componentes xxTable (xx = zeos, mdo, ibx), ya que este tipo de componente abre toda la información de la tabla, lo mejor es usar xxDataSets o investigar si se tiene una propiedad filter en el componente xxTable (los IBX y los MDO se que lo tiene y con ellos puede armar un "where id = 1" por ejemplo).

3. Para crear la bd y sus tablas a mi me gusta crearlas en alguna herramienta como ibExpert o DB WorkBench y luego por medio de bkup y restores trasladarlo a los diferentes servidores... en estas herramientas (de uso externo a Delphi) no tendrás problemas como los que describe con los tipos Date o Time, ni creando Procedimientos Almacenados, Triggers, Indices, Llaves foráneas, entre muchas otras opciones

4. Cuando se esta pasando una aplicación que estaba en paradox a Firebird es muy complejo cambiar todos los componentes de tipo TTable a xxDataSet, mientras que cambiarlos a xxTable es un poco mas fácil y rápido por lo cual lo mejor es localizar los procedimientos críticos (en este caso donde mayor cantidad de información se esta trayendo simultáneamente de forma innecesaria), darles u tratamiento especial ya sea por xxDataSets o xxTable con filtros y las demás tablas se irán cambiando de a poco


5. Los locate en componentes de tipo xxDataSet o xxTable dan un poco de problema si no son usados en campos tipo varchar o enteros.

6. Si en algún momento sientes que un Query es my lento usa Indices


7. Poco a poco ve integrando SP (Procedimientos almacenados) a la base de datos, son muy útiles


La franja horaria es GMT +2. Ahora son las 02:40:06.

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