Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-06-2007
JosepGA JosepGA is offline
Miembro
 
Registrado: jun 2007
Ubicación: Tarragona
Posts: 166
Poder: 17
JosepGA Va por buen camino
Crear Base de Datos con DbExpress

Hola a todos, es mi primer mensaje, pero espero que podais ayudarme,

trabajo con dbexpress y firebird 1.5, estoy creando una aplicación con un mantenimiento de empresas, y al crear una nueva empresa, necesito crear una base de datos del estilo GESTION-NºEMPRESA.FDB, lo he intentado con SQLConnection pero me devuelve el error "cannot prepare Create Database\Schema".

Me he quedado atascado, no se como crear la base de datos utilizando puramente dbexpress.

he buscado en los foros y no he encontrado una respuesta a algo similar.

Gracias a todos por la ayuda que me podais prestar.
Responder Con Cita
  #2  
Antiguo 06-06-2007
Avatar de rruz
[rruz] rruz is offline
Miembro Premium
 
Registrado: jun 2006
Posts: 146
Poder: 18
rruz Va por buen camino
Estimado JosePGA necesitaria el codigo que utilizas para crear la bdd para ver que esta fallando.

Saludos
Responder Con Cita
  #3  
Antiguo 06-06-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
No utilizo DBeXpress... pero entiendo que el problema se da porque este motor está tratando de preparar el query antes de ejecutarlo, como si se tratase de una consulta. El error, por lo que puedo imaginar, no lo genera el propio DBX, sino ib/fb.

Es probable que haya un componente que no tenga este comportamiento, que haya una propiedad que lo condicione o bien que haya una forma distinta de invocar su ejecución (en otros motores puede ser ExecSQL, por ejemplo).

En fin, la idea es lanzar directamente la instrucción al motor, sin intentar prepararla.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 06-06-2007
JosepGA JosepGA is offline
Miembro
 
Registrado: jun 2007
Ubicación: Tarragona
Posts: 166
Poder: 17
JosepGA Va por buen camino
Ejemplo de código

Gracias por vuestros comentarios, aqui os adjunto un ejemplo de como lo he intentado hacer ( tambien lo he realizado con parametros, pero me da el mismo mensaje de error ):

procedure CrearBaseDatos;
Var
SQLstmt : String;
Begin
SQLstmt := 'CREATE DATABASE ' + Chr( 39 ) + 'C:\BASE.FBD' + Chr( 39 );
SQLstmt := SQLstmt + ' PAGE_SIZE 8192';
SQLstmt := SQLstmt + ' USER ' + Chr( 39 ) + 'CODUSUARIO' + Chr( 39 );
SQLstmt := SQLstmt + ' PASSWORD ' + Chr( 39 ) + 'CLAVE' + Chr( 39 );
SQLstmt := SQLstmt + ' DEFAULT CHARACTER SET ISO8859_1';

SQLConexionGeneral.ExecuteDirect( SQLstmt );
End;

El problema es que no se como evitar que prepare el script, y no se como lo gestionan otros programadores que trabajan con dbexpress.

gracias por adelantado a vuestra colaboración
Responder Con Cita
  #5  
Antiguo 08-06-2007
JosepGA JosepGA is offline
Miembro
 
Registrado: jun 2007
Ubicación: Tarragona
Posts: 166
Poder: 17
JosepGA Va por buen camino
Unhappy Crear Base de Datos, alguien me puede ayudar ?

Cita:
Empezado por JosepGA
Gracias por vuestros comentarios, aqui os adjunto un ejemplo de como lo he intentado hacer ( tambien lo he realizado con parametros, pero me da el mismo mensaje de error ):

procedure CrearBaseDatos;
Var
SQLstmt : String;
Begin
SQLstmt := 'CREATE DATABASE ' + Chr( 39 ) + 'C:\BASE.FBD' + Chr( 39 );
SQLstmt := SQLstmt + ' PAGE_SIZE 8192';
SQLstmt := SQLstmt + ' USER ' + Chr( 39 ) + 'CODUSUARIO' + Chr( 39 );
SQLstmt := SQLstmt + ' PASSWORD ' + Chr( 39 ) + 'CLAVE' + Chr( 39 );
SQLstmt := SQLstmt + ' DEFAULT CHARACTER SET ISO8859_1';

SQLConexionGeneral.ExecuteDirect( SQLstmt );
End;

El problema es que no se como evitar que prepare el script, y no se como lo gestionan otros programadores que trabajan con dbexpress.

gracias por adelantado a vuestra colaboración

sigo atascado con el tema, nadie se ha encontrado con ese problema ?
Responder Con Cita
  #6  
Antiguo 09-06-2007
Avatar de rruz
[rruz] rruz is offline
Miembro Premium
 
Registrado: jun 2006
Posts: 146
Poder: 18
rruz Va por buen camino
Dbexpress no es capaz de preparar el comando, es una falencia del driver pero puedes usar lo siguiente.

Código Delphi [-]

function isc_dsql_execute_immediate(pstatus: plongint; var db_handlelongint;  var trans_handle: plongint; length: word; SQL: pchar; dialect:
word;  pxsqlda: pointer): longint; stdcall; external 'GDS32.DLL';

Function CreateDataBase:Boolean;
var
  StatusVector : TStatusVector;
  nDBHandle, nTRHandle : plongint;
  SQL : array[0..1024] of char;
  nResult : integer;
begin
  Result := False;
  nDBHandle := 0;
  nTRHandle := 0;
  StrPCopy(SQL, 'CREATE DATABASE "localhost:c:\database\test.gdb"' +
    'page_size 4096 user "SYSDBA" password "masterkey"');
  nResult := isc_dsql_execute_immediate(@StatusVector, nDBHandle, nTRHandle,
0, SQL, 1, nil);
  if nResult <> 0 then
  begin
    MessageDlg('Error al crear la base de datos', mtWarning, [mbOK], 0);
    exit;
  end;
  Result := true;
end;

Saludos
Responder Con Cita
  #7  
Antiguo 12-06-2007
JosepGA JosepGA is offline
Miembro
 
Registrado: jun 2007
Ubicación: Tarragona
Posts: 166
Poder: 17
JosepGA Va por buen camino
Smile Gracias por la ayuda

Hola, gracias a todos por la ayuda, aunque al final lo he solucionado de otra forma, que es la siguiente:

como no podia atarme a que solo fuera firebird/interbase, he creado una base de datos base, es decir, al crear una empresa la copio con el nombre mas el codigo de la empresa, aunque tambien me ha dado dolores de cabeza, pues al intentar copia me daba error de que no podia encontrar el archivo origen cuando este estaba en una ruta de red, me he repasado los hilos del foro pertinente, y no encontraba la solución, al final me he dado cuenta de que la ruta que se debe indicar es una ruta de red de windows diferente a la que se indica en las bases de datos, ejemplo:

Base de datos: Servidor:\Aplicacion\NombreArchivo.FBD
Ruta para copias: \\Servidor\Disco C(C)\Aplicacion\NombreArchivo.FBD

Espero que os sirva de ayuda

Un saludo a todos
Responder Con Cita
Respuesta



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
Crear base de datos xerkan Firebird e Interbase 10 04-10-2007 03:59:22
Crear base de datos y cargar datos desde delphi Albano MySQL 4 17-05-2007 20:01:18
Crear Base de Datos SQL m@kio Conexión con bases de datos 2 08-08-2005 17:01:35
migracion de base de datos dbExpress a ADO scooterjgm Conexión con bases de datos 11 13-09-2004 10:56:09
migracion de base de datos dbExpress a ADO scooterjgm Conexión con bases de datos 2 05-09-2004 11:18:49


La franja horaria es GMT +2. Ahora son las 00:39:57.


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
Copyright 1996-2007 Club Delphi