 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Lun 09 Ago, 2010 9:27 am Asunto: Firebird & RAD 2010 |
|
|
¡Hola comunidad del Foro!
Comentarles que he estado probando el nuevo RAD 2010 y me parece excelente, han modificado muchas cosas de la VCL (transformando todo a UnicodeString, String) respectivamente, se sigue mantentiendo la compatibilidad de llamadas al API de Windows con AnsiString, asi que aún no se descarta la clase AnsiString para eliminarla definitivamente de nuestros códigos.
El tema que establezco es para indicar la nueva forma de trabajar con Firebird & RAD 2010 aun personalmente me gusta llamarlo por las siglas de la empresa y el año asi que C++ Builder le llamaré ECB2010 (Embarcadero C++ Builder 2010)
Como es conocido por la mayoria de la comunidad, nuestras conexiones a Firebird o al menos yo así las hacia, era utilizando los componentes de Interbase, que dada la compatibilidad de Firebird (descendiente de él) los programas se conectaban y funcionaban a la perfección.
En dias pasados instaló el IDE en un equipo con Win7 y me decido a probar el ECB2010, instalación correcta, actualizaciones correctas.
Transfiero el programa creado y editado en CGCB2007 (Codegear C++ Builder 2007) al nuevo IDE y la sorpresa para no ser mayor, algo de movimientos de UnicodeString, AnsiString ( nada de componentes ) y el resultado es satisfactorio, compila, ejecuta y toda la cosa, andaba bien feliz pues dije ¿Qué problemas hay? al parecer ninguno.
Pero oh!! sorpresa, al ejecutar el programa desde el IDE, el programa se interrumpe y nada del IDE me indica que esta fallando, reviso linea por linea y al parecer no existe ningún problema.
pero no se conecta a la base de datos de Firebird, para tratar los registros de las tablas.
Me doy a la tarea de investigar un poco y revisando internet, existe un video (http://www.youtube.com/watch?v=eZe4AlSKq9M) donde el nuevo ECB2010 tiene ya un Driver Nativo para Firebird.
En el video el autor "Andreano Lanusse" explica con detalle la forma de trabajar y al parecer es bastante sencilla y me parece acertada la idea de trabajar ahora con el Driver nativo de Firebird usando los componentes dbExpress.
Les paso mis experiencias y la forma que he solucionado estos detalles.
1.- Conexion a Firebird
Debo anticipar que ya tenia instalado Firebird y decidi hacer la operación de conectarme a las bases de datos tal y como el video explica, pero el problema es que NO puedo conectarme ya que me dice que no existe la libreria de firebird, para establecer contacto, indicandome que el archivo puede estar fuera de la ruta (Path a firebird) asi que sin mas copie el archivo con el nombre fbclient.dll a la ruta del directorio "bin" de ECB2010 (C:\Program Files\Embarcadero\RAD Studio\7.0\bin) con esto ya pude instalar y configurar la conexión a la base de datos.
2.- Conexión y edición de la base de datos.
La idea central es no usar una conexión como la que maneja el Autor del video y creo un formulario con los siguientes elementos.
TSQLConnection *BaseDatos;
Propiedades:
ConnectionName: <Nombre que le di a la conexión>
Driver: Firebird
Name: BaseDatos
TSQLDataSet *Empleados;
Propiedades:
SQLConnection: BaseDatos // es el nombre del TSQLConnection
CommandText: "select * from empleados" //Cadena SQL para los datos
Name: Empleados
Los siguientes 2 componentes sirve para traer un conjunto de datos, ya que los dbExpress no estan pensados para traer páginas de datos como lo hace Interbase asi que debe realizarse un "puente" entre el DataSet y algun componente como El DBGrid.
TDataSetProvider *dspEmpleados;
Propiedades:
DataSet: Empleados
Name: dspEmpleados
TClientDataSet *cdsEmpleados;
Aqui unicamente establecí la información para conectar el "puente" del componente "Provider" el cual esta relacionado con el DataSet.
Propiedades:
Name: cdsEmpleados
ProviderName: dspEmpleados // nombre del componente arriba.
TDataSource *dsEmpleados;
Este último componente apunta al componente de arriba.
Propiedades:
DataSet: cdsEmpleados.
A los componentes que me permiten la visualización de datos, unicamente establecí la propiedad DataSource
TDBGrid *DBGrid1; y TDBNavigator *DBNavigator1;
DataSource: dsEmpleados
3.- Ingresar Datos a una Tabla.
El ingreso de los datos a la tabla usando un boton de comandos fué el siguiente.
| Código: | void __fastcall TForm1::Button1Click(TObject *Sender)
{
this->cdsEmpleados->Insert();
this->spEmpleados->ExecProc();
this->cdsEmpleadosID->Value = this->spEmpleados->ParamByName("new_value")->Value;
this->cdsEmpleadosID_SUCURSAL->Value = 1;
this->cdsEmpleadosEM_NOMBRES->AsString = "Cesar";
this->cdsEmpleadosEM_TELEFONO->AsString = "*******";
this->cdsEmpleados->Post();
this->cdsEmpleados->ApplyUpdates(0);
}
//---------------------------------------------------------------------------
|
Pude verse tambien en la parte del código y de la imágen adjunta, el uso de un componente TSQLStoredProc, para el Incremento y uso de un procedimiento almacenado de la base de datos el cual modifiqué las siguientes propiedades.
TSQLStoredProc *spEmpleados;
SQLConnection: BaseDatos
StoredProcName: <Nombre del procedimeinto almacenado en la tabla>
Y la ejecución dando como resultado la visión de una tabla de Firebird en un DBGrid y un botón para insertar un registro.
Pues bien, eso es todo para conectarse a las bases de datos usando el motor de Firebird en el nuevo ECB2010 y pues algo triste por la separación de Interbase & Firebird de los componentes IBX, pero si Embarcadero lo ha echo, imágino por que tiene pensado grandes cosas para Firebird, pues en los últimos años este pequeño y potente motor, esta empezando a desbancar a los grandes motores de datos en el formato SQL y lo bueno que esta siendo tomado por Embarcadero para asegurar una continuidad, ya que eso implica que el motor Firebird pronto lo veremos como la base de datos relacional mas eficiente del mercado.
Saludos. _________________

Ultima edición por Cesar C. Salazar Gonzalez el Lun 09 Ago, 2010 10:09 pm, editado 1 vez |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Lun 09 Ago, 2010 7:27 pm Asunto: |
|
|
Anexo:
La forma anterior de conexión en Los componentes de Interbase era de la siguiente manera
| Código: | localhost:3050:D:\BasesDatosFirebird\BaseDatos.fdb |
La nueva forma de conexión de Interbase Firebird, indica que debe establecerse el puerto de conexión de la siguiente manera, cambiando los dos primeros puntos por la diagonal invertida al estilo unix para separar el Servidor "/" Puerto ":" Ruta de la base de datos
| Código: | localhost/3050:D:\BasesDatosFirebird\BaseDatos.fdb |
Siendo esta última la que funciona en todos las conexiones de datos en ECB2010.
Asi que si no les funciona de la manera habitual, puden intentar con esta segunda forma.
Saludos. _________________
 |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Sab 13 Nov, 2010 12:32 am Asunto: |
|
|
Esto es solo un comentario.....
Te has dado cuenta de que si creas una base de datos firebird con un campo TIME, y luego lo lees con el Data Explorer del B2010 a través del dbExpres el campo TIME te lo muestra como un tipo de dato TIMESTAMP de 64bits como antiguamente se hacía con INTERBASE versión 5, (a la HORA que tengas en la tabla el dbExpres le añade la FECHA:30/12/1899), creo que si hay componentes nativos de INTERBASE, estos están mejor depurados, además no utilizan tantas capas. Está claro que con dbExpres se pueden hacer conexiones a INTERBASE o FIREBIRD, pero esto ya se podía anteriormente. Por otro lado si abres una tabla con el Data Explorer integrado en el B2010 solo te muestra los primeros 100 registros de la tabla y los otros los desecha.
También he notado que le cuesta abrir una tabla, si esta tiene miles de registros, aunque como ya he dicho antes solo te muestre 100 registros. En mi opinión el dbExpres junto al DataExplorer es una herramienta integrada de gran utilidad para supervisar la estructura de la Base de Datos en tiempo de diseño, pero de ahí a que sea preferible utilizar el dbExpres en lugar de los IBX nativos... eso ya es otra cosa...
Si estoy equivocado, perdona mi intrusión, pero he creído que seria útil poner opiniones al respecto.
Por todo ello yo personalmente prefiero utilizar los componentes IBX, que además tiene componentes de administración, reparación de Bases de Batos, Backups y Restores y que nunca me han dado problemas. Por todo ello no entiendo el por qué de tu interés en utilizar componentes dbExpres para las conexiones. ¿Es que los IBX no te han ido bien?
En cuanto a lo de INTERBASE VS FIREBIRD, totalmente de acuerdo, yo ya estoy preparando mi aplicación estrella para pasar de INTERBASE a FIREBIRD. ¿Ventajas?.... innumerables:
Código nativo de 64bits, aprovecha multiprocesamiento con varios procesadores, tablas de hasta 32tb, soporte para bases de datos OLAP, compatibilidad y conexiones con ORAQLE, futuro garantizado al ser OPEN SOURCE verdadero, 4 modelos a elegir (CLASIC, SERVER, SUPER-SERVER, EMBEBIDO), instalador en Español... y por si fuera poco, además gratuita.
¿Habías pensado en esta rutina para tus aplicaciones? La verdad, creo que debería de ir en todos los programas.
https://cppbuilder.es/viewtopic.php?t=14277
Saludos, Cesar...
POSDATA...
No solo B2010 soporta FIREBIRD, también lo hace ya VISUAL C++ STUDIO de Microsoft, ¿Por que será?
Parece que FIREBIRD está entrando con fuerza en la comunidad de SQL. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Sab 13 Nov, 2010 3:25 am Asunto: |
|
|
Hola Jésus gusto en saludarte.
Bien para no agrandar el tema con otras palabras, YO tambien estoy al 100% de acuerdo contigo y prefiero seguir usando los componentes de Interbase aún en la version 2010 estos siguen funcionando muy eficientemente y no la manera en que el video del autor indica, pues lo que hace el autor es demostrar una conexión, pero creo que no ha tomado en cuenta los volumenes de datos con los cuales trabajamos, pareciera que quieren sacar un "DBM" <- al estilo paradox, para firebird, pero a gusto profesional y con la experiencia de tiempo en el desarrollo y mas en firebird, sigo yendo por los IBX en todas las versiones de C++ Builder.
Saludos esperemos algún otro comentario. _________________
 |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|