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)
-   -   ¿Cómo creo una base de datos desde Delphi? (https://www.clubdelphi.com/foros/showthread.php?t=75039)

Thoma 26-07-2011 11:32:05

¿Cómo creo una base de datos desde Delphi?
 
Hola, de nuevo estoy retomando el Delphi y mi duda es la siguiente:
Cuando intento conectarme a una base de datos y esta no existe, quiero crearla desde Delphi.
Hojeando un libro me pone lo siguiente:
Create database “c:\pruebas.GDB” User “ SYSDBA” password “masterkey” page_size 2048;
¿Para utilizar estas instrucciones hace falta algún componente específico?
¿Hay alguna otra forma de crear la base de datos desde Delphi?

guillotmarc 26-07-2011 13:47:44

Hola.

Es bastante habitual tener un archivo de datos en blanco, y copiarlo a una nueva base de datos para crearlo.

Puesto que vas a tener dificultades para crear una base de datos en código Delphi. La mayoría de componentes de conexión necesitan primero conectarse a una base de datos para poder lanzarle consultas. Por lo tanto no puedes crear la base de datos, puesto que primero necesitas conectarte a una base de datos existente.

Yo utilizo esto de copiar una base de datos en blanco que siempre tengo disponible. Probablemente otros usuarios te puedan aportar más soluciones.

Saludos.

Thoma 26-07-2011 15:30:04

Estoy revisando un manual que he encontrado por internet sobre los componentes Zeos y pone lo siguiente:
CreateNewDataBase:

TZConnection
:
ZConnection1.Database := 'd:\db1.fdb';
ZConnection1.Protocol := 'firebird-1.5';
ZConnection1.Properties.Add ('CreateNewDatabase=CREATE DATABASE ' +
QuotedStr ('d:\db1.fdb') + ' USER ' +
QuotedStr ('sysdba') + ' PASSWORD ' + QuotedStr ('masterkey') +
' PAGE_SIZE 4096 DEFAULT CHARACTER SET ISO8859_1');
ZConnection1.Connect;
:
He intentado instalar los componentes Zeos, pero me da una serie de errores y no puedo instalarlos. Utilizo el Delphi XE, no sé si por ello es por lo que no puedo instalarlos.

guillotmarc 26-07-2011 18:21:25

Cita:

Empezado por Thoma (Mensaje 407413)
He intentado instalar los componentes Zeos, pero me da una serie de errores y no puedo instalarlos. Utilizo el Delphi XE, no sé si por ello es por lo que no puedo instalarlos.

Si detallas los errores que te encuentras, quizás te podamos ayudar.

Thoma 27-07-2011 10:48:46

Cuando activo el ZComponent150.bpl y lo compilo me da los siguientes errores:

[DCC Error] ZComponent.dpk(58): E1030 Invalid compiler directive: '$ENDIF'
[DCC Fatal Error] ZComponent.dpk(58): F2063 Could not compile used unit '..\..\src\component\ZStreamBlob.pas'

Código Delphi [-]
package ZComponent;
{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS ON}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DESCRIPTION 'Zeos Database Components'}
{$LIBSUFFIX '150'}
{$RUNONLY}
{$IMPLICITBUILD OFF}

requires
  rtl,
  dbrtl,
  ZPlain,
  ZDbc,
  ZCore,
  ZParseSql,
  vclactnband,
  vcl;

contains
  ZSqlUpdate in '..\..\src\component\ZSqlUpdate.pas',
  ZAbstractDataset in '..\..\src\component\ZAbstractDataset.pas',
  ZAbstractRODataset in '..\..\src\component\ZAbstractRODataset.pas',
  ZStreamBlob in '..\..\src\component\ZStreamBlob.pas',
  ZAbstractConnection in '..\..\src\component\ZAbstractConnection.pas',
  ZGroupedConnection in '..\..\src\component\ZGroupedConnection.pas',
  ZConnectionGroup in '..\..\src\component\ZConnectionGroup.pas',
  ZConnection in '..\..\src\component\ZConnection.pas',
  ZDataset in '..\..\src\component\ZDataset.pas',
  ZDatasetUtils in '..\..\src\component\ZDatasetUtils.pas',
  ZSqlStrings in '..\..\src\component\ZSqlStrings.pas',
  ZSqlProcessor in '..\..\src\component\ZSqlProcessor.pas',
  ZSqlMonitor in '..\..\src\component\ZSqlMonitor.pas',
  ZStoredProcedure in '..\..\src\component\ZStoredProcedure.pas',
  ZAbstractTable in '..\..\src\component\ZAbstractTable.pas',
  ZSqlMetadata in '..\..\src\component\ZSqlMetadata.pas',
  ZSequence in '..\..\src\component\ZSequence.pas'

  {$ENDIF};

end.

Neftali [Germán.Estévez] 27-07-2011 11:40:11

Para el error de la directiva simplemente elimina el {ENDIF} que hay al final. Esta desparejado. A mi tambien me ha pasado al compilar la version 7.

P.D: Los errores y acentos no estçan puestos porque a mi teclado no le sale de los coj.... ponerlos. :(

Thoma 27-07-2011 12:35:11

He comentado en {ENDIF} y ahora me da éste error:

[Fatal Error] Error in module ZComponent: CONTAINS clause is incorrect

Neftali [Germán.Estévez] 27-07-2011 12:54:10

Cita:

Empezado por Thoma (Mensaje 407496)
He comentado en {ENDIF} y ahora me da éste error:

[Fatal Error] Error in module ZComponent: CONTAINS clause is incorrect

¿Has dejado bien el ; ?
Yo lo tengo igual que tú y las tengo instaladas.

Código Delphi [-]
package ZComponent;
{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS ON}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DESCRIPTION 'Zeos Database Components'}
{$LIBSUFFIX '150'}
{$RUNONLY}
{$IMPLICITBUILD OFF}

requires
  rtl,
  dbrtl,
  ZPlain,
  ZDbc,
  ZCore,
  ZParseSql,
  vclactnband,
  vcl;

contains
  ZSqlUpdate in '..\..\src\component\ZSqlUpdate.pas',
  ZAbstractDataset in '..\..\src\component\ZAbstractDataset.pas',
  ZAbstractRODataset in '..\..\src\component\ZAbstractRODataset.pas',
  ZStreamBlob in '..\..\src\component\ZStreamBlob.pas',
  ZAbstractConnection in '..\..\src\component\ZAbstractConnection.pas',
  ZGroupedConnection in '..\..\src\component\ZGroupedConnection.pas',
  ZConnectionGroup in '..\..\src\component\ZConnectionGroup.pas',
  ZConnection in '..\..\src\component\ZConnection.pas',
  ZDataset in '..\..\src\component\ZDataset.pas',
  ZDatasetUtils in '..\..\src\component\ZDatasetUtils.pas',
  ZSqlStrings in '..\..\src\component\ZSqlStrings.pas',
  ZSqlProcessor in '..\..\src\component\ZSqlProcessor.pas',
  ZSqlMonitor in '..\..\src\component\ZSqlMonitor.pas',
  ZStoredProcedure in '..\..\src\component\ZStoredProcedure.pas',
  ZAbstractTable in '..\..\src\component\ZAbstractTable.pas',
  ZSqlMetadata in '..\..\src\component\ZSqlMetadata.pas',
  ZSequence in '..\..\src\component\ZSequence.pas';

end.

Thoma 27-07-2011 13:37:12

He estado estableciendo las rutas en el Paht y al compilar el archivo ZComponentDesing150.bpl me da algunos Warnig's. y al hacer la Instalación me dice los siguiente:
"El programa no puede iniciarse porque falta ZComponent150.bpl en el equipo. Intente reinstalar el programa para corregir este problema"

y al pulsar Aceptar me da otro mensaje:
Can't load package ...\ZComponentDesign150.bpl. No se pude encontrar el modulo especificado.

José Luis Garcí 27-07-2011 16:46:07

Hola Thoma, yo lo que hago es lo siguiente, selecciono la ruta de la siguiente manera

Código Delphi [-]
procedure TFCreadorTablas.Button1Click(Sender: TObject);
//------------------------------------------------------------------------------
//****************************************************[ Cargamos la ruta ]******
//------------------------------------------------------------------------------
begin
  if SaveDialog1.Execute then
  begin
    Label1.Caption:=ExtractFilePath(SaveDialog1.FileName);
  end;
end;

en un edit pongo el nombre y sólo el nombre de la BD, sin extensión y pulso el boton crear BD, con el siguiente código

Código Delphi [-]
procedure TFCreadorTablas.Button3Click(Sender: TObject);
//------------------------------------------------------------------------------
//********************************************[ CReamos La Base De Datos ]******
//------------------------------------------------------------------------------
var VarSRut:string;
begin
  if Label1.Caption='' then VarSRut:='C:\'+Edit1.Text+'.FDB'
                       else VarSRut:=Label1.Caption+Edit1.Text+'.FDB';
  IBDatabase1.DatabaseName := VarSRut;
  IBDatabase1.Params.Clear;
  IBDatabase1.Params.Add('user ''SYSDBA''');
  IBDatabase1.Params.Add('password ''masterkey''');
  IBDatabase1.Params.Add('PAGE_SIZE = 4096');
  IBDatabase1.SQLDialect := 3;
  IBDatabase1.CreateDatabase;
  showMessage ('Base de Datos Creada'+#13+ #13+
               'Grabado en la ruta: '+VarSRut);
end;


Como vez sólo uso un Ibdataset, para su creación, claro que mi programa tiene más funciones, pero para crear la BD, espero sea lo que buscas.

Neftali [Germán.Estévez] 27-07-2011 16:48:10

A mi para que me funcione (se me olvido comentártelo) he tenido que ca,biar la ruta de todos los packages:



Esto para todos los packages.

Thoma 27-07-2011 19:39:40

Jose Luis Garci, he probado la forma de crear la BD según el ejemplo que me has puesto y me ha funcionado. ¡¡Muchas Gracias!!
....
Neftali, he probado poniendo la ruta según como me dices, pero sigue dandome los mismos errores.

José Luis Garcí 27-07-2011 20:27:16

Me alegro que te funcionara Thoma


La franja horaria es GMT +2. Ahora son las 06:36:13.

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