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)
-   -   Guardar array en tabla (https://www.clubdelphi.com/foros/showthread.php?t=12205)

StartKill 09-07-2004 01:50:04

Guardar array en tabla
 
Hola a todos.

Saludar a todos aquellos que nos apoyan y nos hacen crecer en un sin fin de conocimientos en el mundo de la programacion.

Trabajo con delphi 7.0 interbase 6.0.1, utilizo los componentes IBX.

Estoy tratando de hacer esto: Guardar un array de dos dimesiones en una tabla y en un campo, es posible esto?.

Como lo guardaria?, como lo recuperaria? y si no fuera asi :( , espero alguna idea i/o sugerencia que sera bienvenida.

Gracias, your friend,

StartKill
Lima-Perú

delphi.com.ar 09-07-2004 02:45:29

Yo te recomendaría, para que tu diseño sea mas flexible, que cada item del array sea un registro de una tabla, seguramente creando un esquema entidad-relación.
Por otro lado, si esto no te convence y los datos que almacenas en cada item, no tienen una longitud dinámica, podrías copiar el espacio de memoria a la base de datos, como se hace en este hilo, pero en este caso se guardan registros. (No es la única técnica)

Saludos!

Rufus 09-07-2004 12:55:55

Coincido con delphi.com.ar en que si es posible se deberia evitar el uso de matrices en tablas de base de datos, sustituyendo estas por tablas relacionadas.

No obstante, puede haber casos en los que sea muy conveniente dejar una matriz dentro de un campo. En ese caso, interbase o firebird manejan el tema sin problema. Se pueden crear de cualquier tipo de datos excepto de BLOB.

Para un array de dos dimensiones utiliza algo asi:
Código SQL [-]
 CREATE TABLE TABLA1
   (CAMPO1 INTEGER[X,Y],
    .....);
donde X e Y son el numero de elementos para cada dimensión. El primer elemento sera 1, el segundo 2 y así hasta el último que hayas especificado. Se puede especificar tambien que empieze su numeracion por otro número, por 0 por ejemplo.

Para insertar, selecccionar o eliminar has de seguir la misma nomenclatura:
Código SQL [-]
 SELECT CAMPO1[2,3]
 FROM TABLA1 ...
para seleccionar el elemento [2,3]

StartKill 13-07-2004 00:47:05

Hola my friend's

Despues de mis arduas pruebas y repruebas tome la descicion de seguir sus consejos "evitar usar arrays en tablas" la verdad como todo principiante "todo se puede"... pero en la practica "se puede pero mejor no lo uses es mejor asi..." :D

He optado en tenerlo en tablas y registros gracias.

Your friend,

StartKill
Lima-Perú

Gydba 13-07-2004 14:18:50

Buena buenas

El uso de array en algunos casos es necesario según la aplicación que se le dé. En algún momento necesité utilizarlos pero por una razón de compatibilidad con mi diseño no pude implementarlos.

Un aviso interesante según una respuesta en la comunidad Borland.
Cita:

Empezado por community.borland.com
There is currently no provision to access arrays from ISQL or
WISQL. In order to take advantage of arrays, it is necessary
to either used embedded SQL programming, or API level
programming.

Por otro lado les mandé un mail a los autores de Firebird e incluso a Borland sobre el tema de los campos arrays y ambas respuestas fueron muy simples: que trate de evitarlos. Lo más convincente que me dijeron era que con este tipo de campos se perdía la posibilidad de migración a otras bases.

No sé si esto le sirve a alguien pero, como decimos en mi barrio, es lo que hay :) :)

Saludos


La franja horaria es GMT +2. Ahora son las 00:30:40.

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