Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Como registrar un modulo de datos (https://www.clubdelphi.com/foros/showthread.php?t=61744)

lledesma 20-11-2008 15:32:08

Como registrar un modulo de datos
 
Hola comunidad:
Mi pregunta: trabajo con firebird 2.0 y mi aplicacion tiene un modulo de datos en el que se define la conexion a esta base de datos. El problema se presenta al interactuar con otra aplicacion que trabaja con sqlserver. Tengo el modulo de datos con la conexion a sqlserver. Agrego el modulo de datos (sqlserver) a mi aplicacion, pero tengo que verificar si la base de datos sqlserver existe y solo en este caso declarar el modulo de datos. La aplicacion hecha con sqlserver no siempre existe (se utiliza en algunas empresas y en otras no) en caso que no exista no la puedo utilizar porque daria error en el momento que tenga que realizar algun cambio en esta base de datos desde mi aplicacion (tengo que replicar mis datos en esa base de datos para mantener consistencia de datos en ambas).
Espero se entienda, desde ya muchas gracias.

Neftali [Germán.Estévez] 20-11-2008 16:38:49

Cita:

Empezado por lledesma (Mensaje 326985)
...Agrego el modulo de datos (sqlserver) a mi aplicacion, pero tengo que verificar si la base de datos sqlserver existe y solo en este caso declarar el modulo de datos.

Coloca un ADOConnection e intenta conectar (capturando error con Try..except, por ejemplo) a la Base de Datos de SQLServer. Si la conexión falla, puedes suponer que el módulo no está.

De todas formas no acabo de entender muy bien, si es esto lo que preguntas.

olbeup 20-11-2008 20:14:19

Hola Lledesma,

La solución a tu problema es muy simple:

1.) Para saber si existe una base de datos utiliza este código:

Código SQL [-]
SELECT
    COUNT(*) AS Existe
  FROM master..sysdatabases
  WHERE name = 'BaseDeDatos'
Te devuelve 1 si encuentra la base de datos
Te devuelve 0 si no la ha encontrado

2.) Para saber si existe una tabla utiliza este otro codigo:

Código SQL [-]
SELECT
    COUNT(*) AS Existe
  FROM BaseDeDatos..sysobjects
  WHERE name = 'Tabla'
Te devuelve 1 si encuentra la tabla
Te devuelve 0 si no la ha encontrado

Espero que te sirva

Un saludo.;)

lledesma 20-11-2008 20:17:05

Gracias Neftali por tu pronta respuesta.
La idea es que no muestre el error al usuario que utiliza la aplicacion. Tendria que manejar el evento del error si la excepcion falla?.
Gracias de nuevo

lledesma 20-11-2008 20:18:53

Olbeup, gracias.
Pruebo lo que me indicas y te aviso

Neftali [Germán.Estévez] 21-11-2008 13:18:24

Cita:

Empezado por lledesma (Mensaje 327056)
Gracias Neftali por tu pronta respuesta.
La idea es que no muestre el error al usuario que utiliza la aplicacion. Tendria que manejar el evento del error si la excepcion falla?.

Pues sí; En tu caso en el EXCEPT en lugar de mostrar el error te apuntarás que eso lo está instalado y listo.

Algo así:

Código Delphi [-]
try
  // intentar conectar
  ....

  _ModuloInstalado := True;
except
  on E:EOLEException do begin
    // error en la conexión 
    _ModuloInstalado := False;
  end
  else begin
    // otro error 
    _ModuloInstalado := False;  // igualmente no podremos usarlo
    //  hacer otras cosas
    // ....
  end;
end;

lledesma 21-11-2008 14:08:43

Mil Gracias


La franja horaria es GMT +2. Ahora son las 16:01:48.

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