| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Lun 10 Dic, 2018 11:05 pm Asunto: Base de datos |
|
|
Hola a ver si alguien puede hecharme una mano, resulta que tengo hecha una aplicacion con base de datos ABS database que en mi equipo funciona a la pefección. La he hecho con BCB6.
El problema es que no se donde me guarda la dirección original del archivo de base de datos y no hay forma de cambiarla.
En el OnCreate del form tengo el siguiente código:
| Código: |
ABSDatabase1->DatabaseFileName = ExtractFilePath(Application->ExeName) + "\socis.abs";
|
En el mismo equipo si funciona pero en cuanto la paso a otro equipo al ejecutar la aplicación me sale un mensaje de error diciendo que no encuentra el archivo de base de datos (busca en el directorio original) y el archivo se encuentra en el mismo directorio de la aplicación.
Gracias. _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Alpinador Lt Cmdr

Registrado: 21 Abr 2014Mensajes: 123
|
Publicado: Mar 11 Dic, 2018 2:59 pm Asunto: |
|
|
mira a ver si es problema de la doble barra que creo que hay que poner doble barra para que lo interprete bien el compilador
|
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Mar 11 Dic, 2018 8:36 pm Asunto: |
|
|
Nada, ya lo había probado, me sigue dando el mismo error  _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Jue 13 Dic, 2018 12:26 am Asunto: Solución |
|
|
Publico la solución por si a alguien le sirve de algo en el OnCreate del form principal:
| Código: |
AnsiString rutaprograma = ExtractFilePath(Application->ExeName);
ABSDatabase1->Close();
ABSQuery1->Close();
ABSQuery1->Active = false;
ABSDatabase1->Connected = false;
ABSDatabase1->DatabaseFileName = rutaprograma+"socis.abs";
ABSDatabase1->Open();
ABSQuery1->Open();
ABSQuery1->Active = true;
ABSDatabase1->Connected = true;
|
 _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Jue 13 Dic, 2018 12:24 pm Asunto: |
|
|
Falsa alarma sólo funciona en el equipo de origen en los otros no  _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Felip Master

Registrado: 09 Jun 2004Mensajes: 200
|
Publicado: Jue 13 Dic, 2018 9:07 pm Asunto: |
|
|
| ¿No tiene un antivirus (o algo del género) bloqueando el acceso? |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Jue 13 Dic, 2018 10:42 pm Asunto: |
|
|
No ya lo he probado en montón de equipos y algo pasa pero no sé que es. _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Vie 14 Dic, 2018 12:22 am Asunto: |
|
|
Por fín, resulta que el truco es que en tiempo de diseño la base de datos y los querys deben estar cerrados o inactivos y activarlos luego cuando el programa arraca, y así si que funciona:
| Código: |
void __fastcall TEsquinque::FormCreate(TObject *Sender)
{
AnsiString rutaprograma = ExtractFileDir(Application->ExeName);
ABSDatabase1->Close();
ABSQuery1->Close();
ABSDatabase1->DatabaseFileName = rutaprograma+"\\socis.abs";
ABSDatabase1->Open();
ABSQuery1->Open();
ABSQuery1->Active = true;
ABSDatabase1->Connected = true;
}
|
 _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
|