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)
-   -   Conexión o ruta relativa (https://www.clubdelphi.com/foros/showthread.php?t=23820)

yosmor 29-07-2005 04:59:26

Conexión o ruta relativa
 
Hola a todos!
Tengo la siguiente inquietud: para conectar una base con el control ADO, genero la cadena de conexión. Lo que deseo es no tener que establecerla en tiempo de diseño, sino que se establezca automáticamente en el mismo directorio donde corre mi aplicación, de esta forma sino encuentra la base pueda a través de código tratar la excepción. :confused:

Gracias,
Saludos.

vtdeleon 29-07-2005 05:15:04

Saludos
Bienvendido al ClubDelphi. Por favor lee la Guia de Estilo.

Con respecto a tu duda, Que motor de base de ddatos usa?

yosmor 29-07-2005 05:40:38

Muchas gracias por la bienvenida y orientarme.

Microsoft Jet para Access

Saludos.

vtdeleon 29-07-2005 05:55:40

Saludos

1ro Debes tener una variable que contenga el directory de la aplicacion, ParamStr(0) devolvera la ruta mas el nombre del archivo (ej:c:\ruta\aplicacion.exe). Debes estraer solo el directorio con ExtractFilePath() y asignarlo a una variable.

En la prodiedad ConnectionString asignaras el proveedor que usaras y el directorio.
Código Delphi [-]
ADOConnection1.ConnectionString:=Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\top\datos.mdb'
Como ver 1ro El proveedor, despues el directorio y archivo de la base de datos
Suerte

yosmor 29-07-2005 07:44:43

Muchas gracias, me ayudaste bastante. Pero ahora tengo el siguiente problema

Código:

var
          ruta:String;
          begin
            ruta:=ExtractFilePath(ParamStr(0))+ 'base.mdb';
            ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ ruta;
            ADOTable1.Active:=True;
          end;

Cuando le doy F9 me da error de conexión. Tengo mal la sintaxis :confused:

Disculpa si son muy evidentes mis errores pero es que estoy migrando a Delphi.

Gracias!,
Saludos.

Lepe 29-07-2005 11:10:23

ponte en la linea de código active := true, en el editor de código de delphi, pulsa la tecla F5 (Insertar un punto de ruptura, breakpoint), dale a F9 y ejecuta tu programa, se parará el programa en esa linea de código, ahora deja el ratón sobre ConnectionString (encima de esa palabra), te aparece una ventanita que evalua la expresion y te dice el valor que tiene.

Supongo que falta una barra invertida antes de base.mdb

Para seguir ejecutando el programa linea a linea, usa F7 y F8. Para continuar con la ejecución normal, vuelve a pulsar F9.

El depurador es una maravilla ehhh ;).

Un saludo

dec 29-07-2005 11:58:56

Hola,

Cita:

Empezado por Lepe
Supongo que falta una barra invertida antes de base.mdb.

La función "ExtractFilePath" se encargará de incluir la barra invertida Lepe. No así la función "ExtractFileDir".

vtdeleon 29-07-2005 13:27:13

Saludos

yosmor, en la linea donde esta ParamStr(0) te da la ruta entera del ejecutable mas el nombre de la aplicacion, por tanto debes extraer solo la ruta, ej ExtractFilePath(ParamStr(0))

yosmor 29-07-2005 14:28:02

Hola!
Gracias a todos!

Cita:

Empezado por vtdeleon
Saludos

yosmor, en la linea donde esta ParamStr(0) te da la ruta entera del ejecutable mas el nombre de la aplicacion, por tanto debes extraer solo la ruta, ej ExtractFilePath(ParamStr(0))

Ok, como puedes ver hice eso

Código:

  ruta:=ExtractFilePath(ParamStr(0))+ 'base.mdb';
      //Ejemplo:
      ShowMessage (ruta); // Lo que me devuelve: 'C:\base.mdb'

Creo que el problema esta aquí, porque me da error de conexión.

Código:

ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ ruta;
Mi pregunta es: que está mal en esta línea :confused:

Saludos y nuevamente muchas gracias a todos.

vtdeleon 29-07-2005 15:13:54

Saludos

No estoy seguro, pero puede ser la version de Microsoft.Jet.OLEDB.4.0

yosmor 29-07-2005 15:33:31

Ayuda, por favor

Código:

ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + '''' + 'C:\base.mdb' + '';
Estoy probando todas las maneras, depurando y evaluando ADOConnection1.ConnectionString, imaginaba que tuviera que ver con el uso de ( ' ) al pasarle la cadena.

Me sigue dando el mismo error de conexión :( y no encuentro la manera, pero seguiré probando.

Saludos.

yosmor 29-07-2005 15:35:33

Cita:

Empezado por vtdeleon
Saludos

No estoy seguro, pero puede ser la version de Microsoft.Jet.OLEDB.4.0

:confused: Pero cuando la establezco por el inspector de objetos no me da problemas y se conecta bien.

yosmor 29-07-2005 18:48:23

Ya he resuelto. :)
Mi problema era que por accidente se me había quedado un control sin enlazar (ADOTable).

vtdeleon - Me ayudaste muchísimo.

Mil disculpas por la confución.

Gracias a todos!,

Saludos.


La franja horaria es GMT +2. Ahora son las 03:00:07.

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