PDA

Ver la Versión Completa : Como registrar un modulo de datos


lledesma
20-11-2008, 15:32:08
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
...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:

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:

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
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í:


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