Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-10-2010
Avatar de cesarsoftware
cesarsoftware cesarsoftware is offline
Miembro
 
Registrado: nov 2006
Posts: 241
Poder: 20
cesarsoftware Va por buen camino
Hola de nuevos compis.

Perdonarme la intromision para formularos una pregunta,
¿Como puedo crear la base de datos desde codigo?, ya sabeis que no me gusta usar otras aplicaciones, hasta ahora usaba ibaccess para crearlas, pero me empieza a dar problemas y prefiero crearlas yo.

He probado SQLConnection.ExecuteDirect('CREATE DATABASE c:\mibase.fdb') y me dice que no encuentra el fichero, "UNAVAILABLE DATABASE".
En la pagina http://www.firebirdsql.org/refdocs/l...reate-database dice que se hace asi, pero supongo que lo que "falla" es el componente tsqlconnecion, no se.

Una ayudita "please", prometo documentarlo, jejeje
Responder Con Cita
  #2  
Antiguo 05-10-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Hola.

Yo en mi aplicación tengo una copia de una base de datos vacía, así que para crear una nueva bbdd por código, solo tengo que copiar la base de datos en blanco.

Puedes probar a conectar a una base de datos existente y desde esa conexión lanzar el create database.

Puedes ejecutar el comando externo isql.exe para ejecutar un script de creación de la base de datos (aunque tendrás que distribuir con tu aplicación el isql.exe para asegurarte de tenerlo disponible).

También puedes probar usar directamente el api de Firebird, saltándote dbExpress.

http://stackoverflow.com/questions/4...ress-in-delphi

Finalmente parece que en DBX4, a partir de Delphi 2007, ya se puede hacer. Pero no logro encontrar el artículo que citan en los blogs de Embarcadero (es como si todas las entradas de la epoca Borland/CodeGear hayan sido eliminadas). Parece que esa funcionalidad viene en dbxcommons.pas

http://es.w3support.net/index.php?db=so&id=400114

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 05-10-2010 a las 12:36:49.
Responder Con Cita
  #3  
Antiguo 05-10-2010
Avatar de cesarsoftware
cesarsoftware cesarsoftware is offline
Miembro
 
Registrado: nov 2006
Posts: 241
Poder: 20
cesarsoftware Va por buen camino
Gracias guillotmarc.
Yo uso la misma tecnica, dispongo de una base de datos vacia y la mando junto con la aplicacion y creo las tablas que necesito.
Los articulos mencionados ya los habia leido, parece facil con ib pero no asi con dbx, creo que seguiremos usando la tecnica de base en blanco ya que el comando "create database" con una base dase datos abierto indica "cannot prepare a CREATE DATABASE/SCHEMA statement".

Seguiremos investigando.
Responder Con Cita
  #4  
Antiguo 04-11-2010
Chandra_ Chandra_ is offline
Miembro
 
Registrado: may 2008
Posts: 50
Poder: 19
Chandra_ Va por buen camino
Hola

Como comento en otro post, estoy tratando de buscar soluciones para usar Firebird en D2007 con dbExpress (me acabo de enterar que lo que yo hacía de usar Firebird en lugar de Interbase así... a pelo, no es muy ortodoxo, al parecer).

El caso es que estoy tratando de usar el dbExpress Driver for Firebird en D2007, siguiendo las instrucciones de cesarsoftware. Me he bajado el zip (la última versión: v26), pero no encuentro por ningún lado el dbxdrivers.ini dentro del zip.

El instalador de Firebird 2.5 guarda un archivo similar en:
C:\Users\Public\Documents\RAD Studio\dbExpress\dbxdrivers.ini
Supongo que se refiere a ese ¿no?

Sin embargo, en la sección "[Installed Drivers]" no me aparece ninguna entrada "FirebirdConnection=1"; ni tengo sección "[FirebirdConnection]". No entiendo nada...

Por otro lado... ¿es fiable este driver?

Gracias
Responder Con Cita
  #5  
Antiguo 04-11-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Hola.

Esas entradas en dbxdrivers.ini las tienes que poner tú manualmente.

No sé cuan confiable es el driver, en unas primeras pruebas me ha funcionado bien, pero no he programado nada serio con él. Quizás puedas ponerte en contacte con cesarsoftware y preguntarle como le va (utiliza los mensajes privados del foro). NOTA: Si lo haces, no te olvides comentarlo aquí para que lo sepamos también los demás.

Aunque yo no me preocuparía tanto por el tema. Esta es una de las ventajas de dbExpress. Si no te funciona bien, simplemente cambias la conexión y utilizas el driver de Interbase que viene con Delphi, o compras el driver dbExpress de DevArt o el InterXpress de Upscene. El caso es que no vas a tener que cambiar nada de tu programa, solo especificarle de usar un driver distinto.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #6  
Antiguo 04-11-2010
Chandra_ Chandra_ is offline
Miembro
 
Registrado: may 2008
Posts: 50
Poder: 19
Chandra_ Va por buen camino
Cita:
Empezado por guillotmarc Ver Mensaje
Hola.

Esas entradas en dbxdrivers.ini las tienes que poner tú manualmente.

No sé cuan confiable es el driver, en unas primeras pruebas me ha funcionado bien, pero no he programado nada serio con él. Quizás puedas ponerte en contacte con cesarsoftware y preguntarle como le va (utiliza los mensajes privados del foro). NOTA: Si lo haces, no te olvides comentarlo aquí para que lo sepamos también los demás.

Aunque yo no me preocuparía tanto por el tema. Esta es una de las ventajas de dbExpress. Si no te funciona bien, simplemente cambias la conexión y utilizas el driver de Interbase que viene con Delphi, o compras el driver dbExpress de DevArt o el InterXpress de Upscene. El caso es que no vas a tener que cambiar nada de tu programa, solo especificarle de usar un driver distinto.

Saludos.
Gracias por responder, guillomarc.

Me ha comentado casimiro en otro hilo que, si le doy un oso "normal", no tengo por qué instalar drivers; de manera que tal vez siga como hasta ahora: D2007+dbExpress+Firebird sin nada más.
Responder Con Cita
  #7  
Antiguo 04-11-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Cita:
Empezado por Chandra_ Ver Mensaje
Gracias por responder, guillomarc.

Me ha comentado casimiro en otro hilo que, si le doy un oso "normal", no tengo por qué instalar drivers; de manera que tal vez siga como hasta ahora: D2007+dbExpress+Firebird sin nada más.
No, si te ha funcionado bien hasta ahora, no tienes porqué cambiar.

NOTA: Y en el caso de que en un futuro necesites lanzar una consulta que requiera de las nuevas características de Firebird, y que por tanto no funcione correctamente con el driver de Embarcadero, entonces tienes la sencilla solución de cambiar de driver (sin tocar nada más del programa). Así que en principio no hay nada malo en seguir programando como lo haces.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #8  
Antiguo 26-11-2010
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 23
Delfino Va por buen camino
Tanto Marco cantu como Ian Marteens dicen en sus libros sobre Delphi6 q se puede incrustar la dll del driver DBX en el ejecutable, pero ninguno detalla el como

Alguien sabe como?
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #9  
Antiguo 26-11-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
¿ Que Delphi utilizas y que Driver dbExpress ?.

Para Delphi 6 y el driver de Interbase que viene de serie, solo tienes que añadir dbExpInt en el Uses de tu Formulario principal y el código del driver dbExpress es linkado junto con tu aplicación.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #10  
Antiguo 27-11-2010
Avatar de Estifmauin
Estifmauin Estifmauin is offline
Miembro
 
Registrado: may 2008
Ubicación: Alicante
Posts: 24
Poder: 0
Estifmauin Va por buen camino
Cita:
Empezado por cesarsoftware Ver Mensaje
Hola de nuevos compis.
¿Como puedo crear la base de datos desde codigo?, ya sabeis que no me gusta usar otras aplicaciones, hasta ahora usaba ibaccess para crearlas, pero me empieza a dar problemas y prefiero crearlas yo.
SQLConnection, al igual que ADOConnection necesita una base de datos a la que conectarse para poder "actuar", así que no puede crear ella misma una desde cero.
Yo uso el componente TIBDatabase, de las IBX de Delphi, ya que la creación de una bbdd Firebird es igual a una Interbase (al menos por ahora).

Código Delphi [-]
function CrearBDFB(path :string; ps :integer; cs :string):boolean;
var
    db :TIBDatabase;
    r :string;
begin
result:=false;
if ps <= 0 then ps:=4096;
if cs = '' then cs:='ISO8859_1';
db:=TIBDatabase.Create(nil);
try
    with db.Params do begin
        Clear;
        Add('user ''sysdba''');
        Add('password ''masterkey''');
        Add('page_size = '+IntToStr(ps));
        Add('default character set '+cs);
    end;
    db.SQLDialect:=3;
    db.DatabaseName:=path;
    try
        db.CreateDatabase;
        result:=true;
    except
        on e:exception do
            ShowMessage('No se ha podido crear la base de datos.'+#13+'Motivo: '+e.Message);
    end;
finally
    FreeAndNil(db);
end;
end;

Requiere uses ibdatabase

Espero que te ayude.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problema con odbc de firebird mr_mustard Firebird e Interbase 0 30-09-2006 20:04:49
odbc para firebird 1.5 ronimaxh Firebird e Interbase 2 18-08-2004 20:33:51
Sobre ODBC de Firebird rpadin Firebird e Interbase 1 18-08-2004 15:08:53
ODBC firebird Salomon Firebird e Interbase 5 10-05-2004 12:39:24
Firebird Odbc hecjona Noticias 1 30-03-2004 22:05:54


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


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi