FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Modificar la base de datos usada.
Hola amigos.
Tengo una pequeña aplicación que se conecta a una base de datos firebird para recoger una serie de datos. Tengo definido un Alias en el cual se especifica la ruta de la base de datos y luego un Tdatabase que abre la base de datos mediante ese alias. Bueno mi pregunta es si hay alguna manera de cambiar la base de datos asignada al alias mediante código, por ejemplo, supongamos que tengo una base de datos real y otra para hacer pruebas y yo quiero que utilice una u otra en función de una casilla del formulario, es decir si marco la casilla "pruebas" que utilice la base de datos para pruebas y si marco la casilla "producción" que utilice la verdadera, esto es solo un ejemplo, en la realidad puede haber varias bases y no saber de antemano los nombres a utilizar. Un saludo y gracias por la atención. |
#2
|
||||
|
||||
Hay infinitas formas de hacerlo
Por ejemplo, podes guardar el Alias en un archivo, y cuando se inicia el programa, se lee ese archivo, y se asigna el alias correspondiente (clasico archivos ini) Tambien podes guardar en el ini "Pruebas = True" y en base a eso actuar en consecuencia en tu programa Otra forma es usar compilacion condicional
|
#3
|
|||
|
|||
Gracias
Muchas gracias, ya tengo varios hilos para tirar y tratar de conseguirlo.
|
#4
|
|||
|
|||
Hola.
Ya he conseguido (tampoco es muy complicado) usar una archivo ini, en el cual indicar la ruta y el nombre de la base de datos a utilizar, pero estoy atascado en como indicar al alias que use esa ruta con el nombre indicado en el ini. Recordar que no se de antemano la ruta completa de base de datos hasta que no lea el ini, y por lo tanto no puedo tener varios alias creados por adelantado y usar uno otro. Utilizo FireBird. Muchas gracias por vuestra paciencia. |
#5
|
||||
|
||||
Yo agregaria el alias como un dato mas en el ini
|
#6
|
||||
|
||||
Hola Meridiano.
¿ Y no te convendría aprovechar el archivo aliases.conf ?. Para la elección de una ruta u otra podes aplicar, por ejemplo, lo que te explicó AgustinOrtu en el mensaje #2. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#7
|
|||
|
|||
Gracias por responder.
El problema es que no puedo crear varios alias por adelantado, porque no se el nombre de las bases de datos que se van a utilizar, mi idea era crear un alias con una base de datos y luego mediante código modificar la base de datos a la que apunta el alias. AgustinOrtu: No puedo meter el alias en el ini, porque estan creados los alias de antemano (solo tengo 1 con la base de prueba, que luego quiero cambiar a la que tenga que usar cada uno) El problema que tengo es que no se que código utilizar para modificar la base de datos a la que apunta el Alias. Puede que como dice ecfisa pueda modificar el archivo aliases.conf para indicar alli las nuevas rutas. Investigaré esto. Muchas gracias. |
#8
|
||||
|
||||
Recordar que la función principal de los alias es que los usuarios no sepan la ruta real de la base de datos.
Si estos la conocen, es un gran agujero de seguridad para acceder a ella. Al menos, así debería ser tratado. |
#9
|
|||
|
|||
Gracias Casimiro, en realidad los usuarios no verían la base de datos, es decir no se les pedirá introducir la base de datos, sino que en función de su nombre, numero de identidad, u otra información única accederían a una base de datos u otra, por lo que no quedaría al descubierto la ubicación y nombre de la base de datos.
Tu (u otra persona, claro) me podrías explicar, o indicarme un sitio donde lo hagan, como conectar una base de datos firebird con un control TDataBase sin utilizar los alias y por medio de código, yo lo he probado todo lo que se me ocurría y no conseguí nada. Muchas gracias por los comentarios y las ayudas. |
#10
|
||||
|
||||
Pero entonces estarias trabajando a priori con dos bases:
1) Base de autenticacion por llamarlo de una manera. En este paso identificas cual es el alias que le tenes que dar al usuario en cuestion. Es decir que esta base conoce a todos los usuarios y la base real que usa cada uno 2) Base real; con la que se va a trabajar Decime si estoy encaminado porque no te entendi muy bien |
#11
|
||||
|
||||
Pregunto lo mismo que AgustinOrtu.
|
#12
|
|||
|
|||
Gracias por vuestra rapidez e interes.
Realmente lo que estoy buscando es poder cambiar la base de datos que utiliza el programa sin tener que recompilar y hacer cambios en el ejecutable. Es decir que si hoy quiero utilizar los datos de la base c:\ruta\base1.gdb pueda usarla, y si mañana quiero utilizar la base d:\xxx\base5.gdb pueda modificar el ini (o cualquier otro sitio de donde la tome) y si dentro de un mes 'me apetece' tomarla de otro sitio que pueda definirlo y tomarla de ese sitio que a priori no conozco. Dicho de otra manera, lo que quiero es poder indicar la base de datos a mi antojo sin tener que recompilar el ejecutable (obviamente las bases tendrán la misma estructura, solo cambiarán los datos (información) almacenada). Siento marearos tanto, los ejemplos anteriores eran para tratar de facilitar las cosas, pero veo que no cumplieron su cometido. A riesgo de ser pesado voy a repetirlo otra vez: Tengo una aplicación que accede a una base de datos firebird, mediante un alias, que está en la ruta c:\ruta\base1.gdb. Mi objetivo es poder utilizar otra base de datos con la misma estructura, pero con diferentes datos, situada en otra ubicación, sin tener que modificar el código y tener que recompilar nuevamente. La nueva ruta se puede obtener de un archivo ini, que si fuese necesario por seguridad podría estar con la información encriptada para que no sea legible a gente con malas intenciones. El por qué de esta paranoia, pues realmente no lo sé, puede ser por si la base se hace muy grande reemplazarla por otra y poder volver a utilizar la vieja cambiando el ini, o tener una para cada año, indicando el año el nombre o cosas así. Espero que me podáis ayudar y se me quite esta 'cosa' de la cabeza. Reitero mi gratitud. |
#13
|
||||
|
||||
Entonces, según he entendido, no tienes que cambiar nada en tu programa, lo que tienes que hacer es cambiar el alias.
Mejor dicho, el valor del alias. Ejemplo, el alias tiene el valor: c:\datos\labasedatos.fdb y mañana montas un nuevo servidor, solamente debes cambiar el alias a: 192.168.1.100:/datos/labasedatos.fdb Pero tu programa no cambia nada. |
#14
|
|||
|
|||
Gracias Casimiro
Y como hago ese cambio mediante código. |
#15
|
||||
|
||||
#16
|
||||
|
||||
Crea una utilidad externa que modifique el ini con el alias indicado. Luego lo encripta
Tu programa decodifica el ini, y luego lee el alias Es decir tu programa siempre le hace caso al ini // no tengo delphi a mano y no recuerdo si la sintaxis es exactamente asi
Si el contenido del ini es Cita:
|
#17
|
||||
|
||||
Por cierto, un alias no sería más bien algo como 'BdGestion" y lo otro la ruta?
|
#18
|
||||
|
||||
Hola Meridiano.
Cita:
Está probado con IBX, pero con pequeñas adaptaciones a otros componentes, la funcionalidad es la misma. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 11-09-2015 a las 14:19:21. Razón: corregir nombre de constantes |
#19
|
|||
|
|||
Gracias Ecfisa.
Con tu código solucioné el problema. Un saludo y gracias a todos por vuestra colaboración. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
funcion en dll usada en vb6 se comporta diferente en delphi | erickperez6 | Varios | 2 | 29-05-2013 18:37:53 |
Conectar base de datos Firebird con base de datos Oscommerce 2.3.3 | Adriadob | Firebird e Interbase | 11 | 31-10-2012 11:28:46 |
¿Qué versión de Delphi me recomiendan? ¿Cuál es la más usada? | Chiefesito | Varios | 18 | 13-09-2006 00:10:24 |
problema al modificar 1 base de datos paradox7 | adaypr | C++ Builder | 4 | 18-08-2006 02:49:26 |
Ultima celda usada en excell | davezf | Varios | 4 | 03-02-2005 23:22:59 |
|