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)
-   -   Acceder a un array de tabla en BBDD Interbase desde Delphi (https://www.clubdelphi.com/foros/showthread.php?t=26249)

JoelCarlos 18-10-2005 03:22:53

Acceder a un array de tabla en BBDD Interbase desde Delphi
 
Hola a todos por aca,

A ver si tengo mas suerte esta vez, pues he puesto varios hilos y veo que muchos los leen pero nadie me respode...

La duda especifica que tengo ahora es que he creado un campo o columna de tipo ARRAY en una tabla de una base de datos en INTERBASE y necesito acceder a ella desde una aplicacion en Delphi para mostrar y poder modificar su contenido, he probado escribiendolo asi:

nombre_campo_array[numero_elemento]

nombre_campo_array_numero_elemento

nombre_campo_array(numero_elemento)

pero no funciona, el Delphi al ejecutar me dice que no existe ese campo en la tabla.

Espero que alguien que haya utilizado esto me pueda ayudar, mi email joelcarlos@yahoo.com

A la espera de sus comentarios y ayuda y agradecido de antemano,

Saludos

Joel Carlos

dec 18-10-2005 03:32:31

Hola,


Cita:

Empezado por JoelCarlos
A ver si tengo mas suerte esta vez, pues he puesto varios hilos y veo que muchos los leen pero nadie me respode...

No es por iniciar un "flame", como dicen, pero creo que ese comentario está demás. Tu mensaje es el número 111.130, o sea, el que hace ciento once mil ciento treinta... en estos Foros. Y por supuesto que no todos son preguntas sin respuesta.


Cita:

Empezado por JoelCarlos
Espero que alguien que haya utilizado esto me pueda ayudar, mi email joelcarlos@yahoo.com

Y eso, a todas luces, también sobra, puesto que si te respondieran (que no harán) privadamente en tu correo, ¿qué se ganaría en este foro? ¿A quién serviría la respuesta sino fuera a ti solamente? ¿Pero no es contrario eso al propio foro? Tú has preguntado a muchos, deja que muchos se aprovechen de las posibles respuestas.

Por cierto, te deseo toda la suerte del mundo: yo, lamentándolo mucho, no puedo responderte, porque no sé, simplemente, no porque no quiera.

JoelCarlos 18-10-2005 03:45:32

Hola David

No se por que te molestaron mis comentarios pero en verdad he colocado VARIOS mensajes con dudas, urgentes y no tan urgentes y nunca he recibido respuesta de alguien de los tantos que los han visitado, luego me he roto la cabeza buscando y buscando hasta encontrar variantes para resolverlos, visitando una y otra vez el forum y revisando mi correo a la espera de ayuda pero lamentablemente no he recibido ninguna.

Mis comentarios que tanto te molestaron segun parece son solo para pedir por favor ayuda aunque sea poca para resolver los temas con los que acudo al forum, donde he encontrado en otros hilos respuestas a dudas que por supuesto no he publicado pues ya estan resueltas por otros. Y si coloco mi correo es porque a veces muchos prefieren escribir un email que publicar en un forum pues no estan muy seguros de la ayuda que puedan dar , pues a mi mismo me ha sucedido, asi que bueno, no lo tomes a mal, solo es para motivar la discusion no para herir sensibilidades ok?

De todas formas gracias por leer mi duda y al menos escribirme para darme tu punto de vista

Gracias y saludos nuevamente y recuerda si sabes quien me pueda ayudar con la duda ponlo en contacto conmigo o el forum

Joel Carlos

Espero que

dec 18-10-2005 03:54:59

Hola,


Cita:

Empezado por JoelCarlos
No se por que te molestaron mis comentarios pero en verdad he colocado VARIOS mensajes con dudas, urgentes y no tan urgentes y nunca he recibido respuesta de alguien de los tantos que los han visitado, luego me he roto la cabeza buscando y buscando hasta encontrar variantes para resolverlos, visitando una y otra vez el forum y revisando mi correo a la espera de ayuda pero lamentablemente no he recibido ninguna.

No me molestaron tus comentarios: simplemente considero que están demás. Eso es todo. Respecto a lo que dices en el anterior párrafo... ¿Quieres decir que este sitio Web lleva unos ocho años funcionando porque no ha ayudado nunca a nadie? ¿Que los más de 100.000 mensajes publicados son todos lamentables agujeros negros sin respuesta? ¿Que los más de 20.000 temas no sirven absolutamente para nada, porque en ninguno se obtiene ninguna respuesta?

De verdad que no lo entiendo. Otra vez vuelvo a desearte lo mejor. Si te parece dejamos todo esto, pues el objeto de tu Hilo era conseguir respuesta a tu duda y no otra cosa. Lamento haber iniciado esta discusión, sinceramente. Te pido disculpas si crees que lo que dije lo hize con mala intención. Empero, me permito remitirte a la guía de estilo de estos Foros, por si no la leíste aún y puede serte de alguna utilidad.

Neftali [Germán.Estévez] 18-10-2005 09:50:48

Cita:

Empezado por JoelCarlos
...La duda especifica que tengo ahora es que he creado un campo o columna de tipo ARRAY en una tabla de una base de datos en INTERBASE

Deberías dar un poco más de información en tus preguntas, más aun si ya has hecho alguna y no te han contestado. Piensa que a veces cosas que para uno mismo són obvias, para el resto "suenan raro", simplemente porque tú tienes todas la información y el resto sólo tienen la mínima parte que tú les das en el mensaje.
Por ejempo, yo colocaría el Script de la tabla, tampoco comentas qué Delphi ni qué Interbase estás utilizando (versión).

Prueba con un código como éste:

Código Delphi [-]
 // Acceder al campo
 Valor := MyDataSet.FieldByName('NombreCampo').Value;
 // Recorrer el array
 for I := VarArrayLowBound(Valor,1) to VarArrayHighBound(Valor,1) do begin
   // No es nulo?
   if (not VarIsNull(Valor[i])) then begin
     ListBox1.Items.Add(Valor[i]);
   end;
 end;

rastafarey 18-10-2005 20:44:49

resp
 
Dejen la peleadera.
Cuando terminen de pelear me avisan y les doy la respuesta

JoelCarlos 18-10-2005 22:40:58

Hola a todos,

Gracias por responder, a todos de verdad, disculpen los comentarios al margen y ademas si no di mas informacion. Estoy utilizando Delphi 7 con Interbase 6.

El codigo que me has enviado Neftali no se como utilizarlo, te explico con mas detalles mi problema:

Necesito visualizar los elementos del Array en diferentes campos TDBEdits de un formulario junto con un TDBNavigator que permitiria ver todos los elementos de la tabla. La cantidad de elementos del Array las conozco previamente.

Normalmente cuando es un campo tipico, ya sea numerico, texto o lo que sea, basta con asignar, en tiempo de diseño, a la propiedad DataField del control TDBEdit el nombre del campo directamente , por ejemplo CODIGO, NOMBRE, lo que sea y funciona a la perfeccion. Ahora bien, si el campo de tipo ARRAY le pongo por ejemplo HOMBRES, diganme que valor le asigno a la propiedad DataField del TDBEdit para mostrar o editar el 3er elemento del ARRAY? No me funcionaron las siguientes variantes que ya probe y el Delphi en tiempo de ejecucion me dio el error de que no existia ese campo en la tabla especificada:

HOMBRES(3)
HOMBRES[3]
HOMBRES.3 (parece absurdo pero ya no sabia que inventar sorry ;) )

Espero por sus comentarios y ayuda como siempre

Saludos y agradecido de antemano ;)

Joel Carlos

Neftali [Germán.Estévez] 19-10-2005 10:30:46

Cita:

Empezado por JoelCarlos
...El codigo que me has enviado Neftali no se como utilizarlo, te explico con mas detalles mi problema:

Necesito visualizar los elementos del Array en diferentes campos TDBEdits de un formulario junto con un TDBNavigator que permitiria ver todos los elementos de la tabla. La cantidad de elementos del Array las conozco previamente.

Bueno, he revisado algo más de documentación, porque la verdad no había trabajado nunca con campos array (personalmente no te los recomiendo), y he de decir que el código que te coloqué funciona :D, pero sólo con los componentes FIBPlus :(.
Se trata de definir una variable como array de variants y en ellas recuperar los valores del campo. En éste ejemplo los valores acaban mostrándose en una ListBox.
Borland no tiene implementado soporte para éste tipo de campos, así que no esperes rellenar la propiedad DataField y que aparezcan los valores como pasa con el resto. Debes hacerlo "a mano" como se hace en el ejemplo.

rastafarey 19-10-2005 16:25:21

Resp
 
Para trabajar con array en un poco fastidioso sobre todo par actualizar e insertar para seleccionar es un simple slect a las pociciones del arreglo. Pero pra los demas hay que usar unas funciones piscua o lago asi mira en los ejemplos d ibobjects te expliocan como

Delfino 19-10-2005 17:02:45

extraido de ibphoenix :
Cita:

Search Results

KnowledgeBase Id: 390
Question:

I have just created a table that contains a field with an array of integers
defined as one of the fields. How can I access it from my Delphi application
using the BDE?

Answer:

Delphi's data aware components (BDE) do not support arrays. One has to use
InterBase API calls to get data into and out of the arrays. Thus you must
either write your own array handling code, or use a component set which
supports this.
No estoy seguro pero creo q los Fib+ soportan los array fields, los IBX no lo hacen. De todos modos segun los gurus de IB es desaconsejable usar los..

JoelCarlos 19-10-2005 17:18:54

Hola a todos

Muchas gracias por sus rapidas respuestas, voy a revisar todo lo que me dicen a ver que puedo resolver y les comento despues. Realmente pense que era mas eficiente tener un campo array en interbase para no tener que crear un campo para cada edad , entienden? es decir crear el campo HOMBRES con 100 elementos y no tener que crear H1, H2, H3...H99, H100 ...que creen? el tema es que se necesita guardar un dato para cada edad.

Bueno voy a revisar y les escribo despues sobre el tema

Gracias nuevamente ;)

Saludos

Joel Carlos

Neftali [Germán.Estévez] 19-10-2005 17:51:08

Cita:

Empezado por JoelCarlos
...Realmente pense que era mas eficiente tener un campo array en interbase para no tener que crear un campo para cada edad , entienden? es decir crear el campo HOMBRES con 100 elementos y no tener que crear H1, H2, H3...H99, H100 ...que creen?

No crees 100 campos en la tabla para las 100 edades.
Los campos de Edad ponlos en otra tabla y relaciónala con la actual.

Delfino 19-10-2005 18:52:14

Cita:

No crees 100 campos en la tabla para las 100 edades
Eso, crea una tabla de edades para cada hombre y relacionala master detail con la tabla hombres, 1 hombre tiene n edades..


La franja horaria es GMT +2. Ahora son las 01:18:21.

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