PDA

Ver la Versión Completa : Controles Para C++ Builder


nax
30-03-2004, 18:37:43
¿Podría alguien recomendarme algunos controles libres de cargo para usar con C++ builder y FireBird? De antemano gracias.

guillotmarc
01-04-2004, 21:03:33
Hola.

C++ Builder debe llevar (si no estoy equivocado) los controles IBX y dbExpress que permiten el acceso a Interbase, y por extensión a Firebird (aunque con estos controles puedes tener problemas de compatibilidad en el futuro, a medida que Interbase y Firebird se vayan diferenciando cada vez más).

Creo que la mayoría de controles para Delphi, tienen versiones para C++ Builder. Así que puedes probar los controles que hemos citado algunas veces en este Foro. (Por ejplo, de gratuitos tienes los UIB, Zeos, SQL-Direct, ...)

http://www.clubdelphi.com/foros/showthread.php?t=3567

Saludos.

nax
02-04-2004, 22:01:47
Listo!! Me he instalado ya el Zeos, graciar marc ;) Sin embargo hay un problemilla. Tengo instalada una bd en firebird. En mi forma de C++ Builder coloqué un componente ZConnection1 con las siguientes propiedades:

void __fastcall TForm1::ConectarClick(TObject *Sender)
{
ZConnection1->HostName = "LocalHost";
ZConnection1->Database = "C:\db\Prueba.gdb";
ZConnection1->Port = 3050;
ZConnection1->Protocol = "firebird-1.5";
ZConnection1->User = "PRUEBA";
ZConnection1->Password = "prueba";
ZConnection1->Connected = true;
}

Sin embargo, me arroja el siguiente error:
... bla bla bla... "No dynamic library from the list fbclient.dll found"

¿Alguien tiene alguna idea de lo que pasa? De antemano muchas gracias :)

guillotmarc
05-04-2004, 11:17:16
Hola.

Localiza la librería fbclient.dll (es la librería cliente de Firebird). Probablemente esté en la carpeta bin de la carpeta de instalación de Firebird. Y copia esa librería dentro de la carpeta System32, o bien en la carpeta de tu aplicación.

Saludos.

nax
06-04-2004, 17:43:50
Hecho! La conexión a una bd firebird desde controles zeos ha quedado ya lista, el problema es ahora intentando hacerlo remotamente. El puerto está funcionando, pero el componente ZTable no me lista las tablas que existen en la bd. Con más calma: coloco un componente ZConnection con las siguientes propiedades:

ZConnection1->HostName = "Servidor";
ZConnection1->Database = "\\SERVIDOR\db_memorias\PRUEBAS.FDB";
ZConnection1->Port = 3050;
ZConnection1->Protocol = "firebird-1.5";
ZConnection1->User = "PRUEBA";
ZConnection1->Password = "prueba";
ZConnection1->Connected = true;

Hasta aquí todo bien, se conecta adecuadamente. El problema viene con el componente ZTable. Ajusto su propiedad Connection a ZConnection1, pero al momento de pedir me liste las tablas definidas en la bd, desde la propiedad TableName, me manda el error:

SQL Error: Dynamic SQL Error code = -901 feature is not supported. Error code: -901. Unsuccessful execution caused by system error that does not preclude successful execution of subsecuent statements The SQL: SELECT DISTINCT RDB$RELATION_NAME, RDB$SYSTEM_FLAG, RDB$VIEW_CONTEXT FORM RDB$RELATION_FIELDS WHERE 1 = 1;

¿Alguna idea del error? De antemano muchas gracias :)

jachguate
06-04-2004, 17:54:11
Nunca he usado Zeos... pero te aseguro que lo que está mal es la dirección del archivo, pues tenes que hacerlo como si la vieras localmente. Es decir, simplemente c:\db_memorias\pruebas.fdb. De hecho, no tenes que tener un recurso compartido para acceder a la base de datos.

Saludos.

;)

guillotmarc
06-04-2004, 19:10:57
Hola.

A lo que dice Juan Antonio, solo comentar que ha olvidado poner el nombre del servidor delante. La cadena de conexión tiene que ser :

nombre_servidor:ruta_local_en_el_servidor\Base_de_datos

O sea :

SERVIDOR:c:\db_memorias\pruebas.fdb

Y como comenta Juan Antonio, olvídate poner la base de datos en un recurso compartido, no hace ninguna falta que el cliente tenga acceso a la base de datos.

Saludos.

nax
06-04-2004, 20:08:13
Gracias por responder tan pronto! Bien, de hecho lo hice primero como Juan Antonio lo indicó y no tuve problema c:\db_memorias\pruebas.fdb
Pero si lo indico como SERVIDOR:c:\db_memorias\pruebas.fdb entonces el compilador me manda el error que comenté.
Por otro lado, al momento de editar la tabla me arroja el error de que no es posible hacer esa operación en un componente de sólo lectura, pero ya verifiqué y esa propiedad en el ZConnection está como ReadOnly = false, y en ZTable no existe tal propiedad, ¿dónde podría estar el origen del error?

P.D.
Disculpen mi falta de experiencia en el uso de este espacio, pero es la primera vez que me inscribo y hago uso de un Foro. :o

guillotmarc
06-04-2004, 20:25:44
Hola.

No leí bien el código que pusiste. En él se ve como hay una propiedad Hostname, así que Juan Antonio vió (al contrario que yo), que no era necesario especificar el Servidor en la cadena. El propio componente va a poner el nombre del Servidor, usando esa propiedad.

No conozco los componentes Zeos, así que no sé si un ZTable es de solo lectura. Lo mejor es que habiendose solucionado ya el problema de conexión, abras un nuevo hilo para solucionar el problema con las ediciones.

NOTA : Bienvenido al Foro, ya que eres nuevo te recomiendo que leas la Guía de Estilo (pulsa el enlace que hay en mi firma), para ver las normas y recomendaciones del uso del Foro.

Saludos.

nax
06-04-2004, 20:44:53
Gracias Marc!!! Me estoy ya leyendo la Guía de Estilo. Por otro lado, ya quedó solucionado el problema!! Habro el Hilo para indicar la solución (eso entendí). Hasta pronto :)

jachguate
06-04-2004, 22:43:40
pues creo que si ya está solucionado, y dado que ya se trató aqui mismo, mejor poné aqui la solución.

Hasta luego.

;)

nax
06-04-2004, 23:00:29
Ups, disculpa Juan Antonio, leí tu mensaje después de haber abierto el nuevo hilo, por cualquier cosa pongo la solución en éste. Lo único que hay que hacer es poner a True la propiedad RequestLive del ZTable.

Saludos, hasta pronto y gracias Juan por la ayuda brindada :)

_____________________
Noé Alejandro Castro S.