• Domingo 17 de Noviembre de 2024, 19:43

Autor Tema:  Acces Y Visual Basic  (Leído 6079 veces)

jpardo84

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Acces Y Visual Basic
« en: Lunes 26 de Abril de 2004, 21:47 »
0
Hola, espero que se encuentren muy felices y prósperos. Necesito averiguar la ruta de mi base de datos, pues resulta que tengo algunos formularios que utilizan DAO para efectuar algunos procesos, entonces debo proporcionar la ruta de mi base de datos al objeto DATABASE, por ejemplo asi: SET Mibasedatos = Workspaces(0).Opendatabase ("C:\Mis Documentos\pedidos.mdb") pero como la ruta quedaría fija ahi escrita en el código, qué pasaría si en el futuro tengo que mover mi base de datos pedidos.mdb a otra carpeta o a otra unidad, pues cuando ejecute este código mi aplicación no encontraría el archivo en tal ruta, entonces mi pregunta es ¿puede Acces97 autoaveriguar cuál es la ruta donde se encuentre actualmente una base de datos abierta?  si es así, sería genial porque ya no colocaría la ruta, sino sólo el nombre del archivo "pedidos.mdb" y antes el código que averiguara la ruta actual.

Ah... les cuento que ya probé con (App.Path & "pedidos.mdb") pero arroja Error de compilación,  no se ha definido la varibale.

Si al guién me entiende y me puede colaborar, de antemanto te agradezco inmensamente. Que la sigan pasando muy bien....Saludos

Blag

  • Moderador
  • ******
  • Mensajes: 697
    • Ver Perfil
    • http://atejada.blogspot.com
Re: Acces Y Visual Basic
« Respuesta #1 en: Lunes 26 de Abril de 2004, 22:51 »
0
Bueno, en realidad sería App.Path & "\pedidos.mdb", porque recuerda que el archivo va a estar dentro de una carpeta y el "\", representa eso.

No se porque te dá error de compilación......ya que no necesitas ninguna variable....el App.Path es interno al VB.

Saludos,

 :devil:

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #2 en: Martes 27 de Abril de 2004, 09:19 »
0
Hola.

Ojo cuando uséis 'App.Path'... Mucha gente añade un slash (\) antes del nombre de archivo. Esto funciona bien hasta que App.Path = C:\ , por ejemplo. Me explico:

Si la aplicación se encuentra en la raíz de C: , App.Path devuelve C:\.

Si la aplicación se encuentra por ejemplo en C:\Ruta\ , App.Path devuelve C:\Ruta.

Lo que yo suelo hacer es lo siguiente:
Código: Text
  1.  
  2. Dim str1 As String
  3. str1 = App.Path
  4. If Right(str1,1) <> "\" Then str1 = str1 & "\"
  5. str1 = str1 & "NombreDeArchivo.ext"
  6.  
  7.  

Citar
¿puede Acces97 autoaveriguar cuál es la ruta donde se encuentre actualmente una base de datos abierta?
Acces97 no tiene nada que ver aquí. Además, no puede detectar 'una base de datos abierta'  porque en este caso supongo que NO está abierta.

En cuanto a lo del error que te da, no tiene nada que ver con el tema que estamos tratando... está bien claro, en algún sitio tienes una variable sin declarar: ejecuta la aplicación desde el IDE y comprueba cuál es la palabra que te aparece resaltada.

Suerte.

Juanolo

  • Miembro MUY activo
  • ***
  • Mensajes: 202
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #3 en: Martes 27 de Abril de 2004, 17:00 »
0
Está casi todo dicho, pero me permito darte un pequeño consejo:
En lugar de declarar:
 SET Mibasedatos = Workspaces(0).Opendatabase ("C:\Mis Documentos\pedidos.mdb")
reemplaza la cadena por una variable. Por ejemplo, podrías declarar la variable global MiBase. Luego, al iniciar la aplicación cargas la variable:
MiBase="C:\Mis Documentos\pedidos.mdb"
Luego la instrucción sería:
SET Mibasedatos = Workspaces(0).Opendatabase (MiBase)
Así cuando cambies la ubicación, basta con que  cambies la cadena que cargas en la variable, no debiendo tocar el resto del código.
Una posibilidad un tanto más avanzada, es que des al usuario la posibilidad de indicar la dirección y guardar esta información en un archivo INI (por ejemplo), y cargarla desde ahí cuando sea necesario.
Espero te sirva.
Salu2.
La luz que sólo se ilumina a sí misma, es oscuridad.

FRIJU

  • Miembro MUY activo
  • ***
  • Mensajes: 158
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #4 en: Martes 27 de Abril de 2004, 17:54 »
0
Hola compañer@s!!
   Y se hace una DSN y vincula a esa DSN.

Kev

  • Miembro HIPER activo
  • ****
  • Mensajes: 654
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #5 en: Miércoles 28 de Abril de 2004, 00:41 »
0
Falta "\", pero buscando en la web encontre que al usar app.path usan una condicion para averiguar si la direccion tiene o no al final el caracter "\", alguien sabe porque se pregunta eso, puede darse el caso de que app.path devuelva al final de la ruta el caracter "\"

Nota.- La mayoria aconseja usar ADO en lugar de DAO, aunque con DAO haces cosas que no puedes hacer don ADO como por ejemplo compactar un base de datos.

Adios.
La teoria es asesinada tarde o temprano por la experiencia
Albert Einstein
Kev - 3 DCE
-----------------------------------------------------
Articulos:
Convertir texto a imagen en ASP.NET
Trabajando con el Global.asax

Juanolo

  • Miembro MUY activo
  • ***
  • Mensajes: 202
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #6 en: Miércoles 28 de Abril de 2004, 01:31 »
0
Brroz sabe la respuesta a tu pregunta.
La dió un par de mensajes más arriba y me pareció muy interesante.
Salu2.
La luz que sólo se ilumina a sí misma, es oscuridad.

jpardo84

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #7 en: Miércoles 28 de Abril de 2004, 03:43 »
0
Hola amigos, he leido todas sus respuestas y me alegra mucho el interes de ustedes por colaborarme y he aprendido muchas cosas, tienen razon que me faltaba la "\", y muchas gracias, pero les cuento algo que no estoy seguro, bueno el App.Path parece ser que no funciona en Access97, esto lo digo porque probé en Visual Basic 6.0 un simple código como este para probar:

Private Sub Command1_Click()
 Dim a As String
 a = App.Path
 MsgBox a
End Sub

y claro que me muestra la ruta actual.

Pero digito las mismas lineas en un formulario de Access97 y un botón de comando y cuando escribo app.path en minusculas y doy enter para cambiar al siguiente renglón, ni si quiera convierte en mayusculas las inciales de App.Path o sea que el visual basic de Access97 no tiene ni idea de esta función, o sea que piensa que app.path es una variable no declarada porque cuando ejecuto el código me depura el código me dice Error de compilacio, no se ha definido la variable y
me pone en azul app.

Depronto estoy equivocado o le falte algo  mi Access97 pero ya he probado en varios equipos. Si alguien sabe algo sobre lo que afirmo, le agradezco de nuevo....muchos Saludos y que la pasen super....

jpardo84

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #8 en: Miércoles 28 de Abril de 2004, 03:56 »
0
Soy yo de nuevo, depronto no debería estar preguntando estas cosas en este foro especialmente dedicado para Visual Basic y de antemano les pido disculpas, y me he tomado el atrevimiento de exponer mi situación aquí, pues mi aplicación sólo está en Access, o sea que "no" estoy creando una aplicación para tratar de accederr a una base de datos Access97, sino que allí mismo estoy haciendo toda la aplicación con formularios y todo, porque debo crearla en poco tiempo para una prueba. Pero debo utilizar código de todas formas para automatizar algunos procesos y en uno de ellos debo acceder por código a asi misma (o sea a la base de datos que esta abierta ahi mismo junto con todo) para enviarle un SQL pero eso si lo se hacer, pero como les comentaba antes, la base de datos se va cambiar de directorio y el codigo debe veriguar la ruta enque se encuentra para poder acceder a la base de datos o sea a sus tablas para tal proceso. Pero de  nuevo les pido disculpas porque se que hay un foro para Access, pero casi no hay actividad allí y no me responden, y como lo que pregunto tiene que ver con Visual Basic, ya ven...me toco andar por aquí, de todas formas la idea es compartir y tratar de solucionar si es posible un caso.
Gracias de nuevo....Saludos

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #9 en: Miércoles 28 de Abril de 2004, 09:13 »
0
Hola jpardo84.

La forma que conozco para obtener el path de la base de datos es a través del objecto CurrentDb. La propiedad Name proporciona el nombre con la ruta completa de la base de datos, por lo que como imagino por lo que dices que lo que necesitas es el nombre y ubicación de la bd, no necesitas hacer nada más. Si sólo necesitaras recuperar la ruta, necesitarías hacer una muy sencilla función para recuperarla.

Suerte.

FRIJU

  • Miembro MUY activo
  • ***
  • Mensajes: 158
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #10 en: Miércoles 28 de Abril de 2004, 09:21 »
0
Hola Compañe@s!
       Si la base de datos es de Access y es para hacer una prueba no te hace falta realizar ninguna comprobación donde está ya que en Access estas trabajando con todos los objetos insertados.
Cuando termines de realizar las pruebas, yo suelo hacer lo siguiente:
1º.-Dejo la base de datos en una carpeta que su nombre tenga alhuna relación con el contenido de la base de datos.
2º.- Creo debajo de esta carpeta una carperta  que le puedes llamar datos y la ocultas.
3º.- Entras a la base de datos y en el menú, Herramientas, Utilidades, dividor de base de datos, divides la base de datos

De esta manera los datos estarán vinculados y cuando realices alguna modificación en la BD, ya sea por errores o por cambio de versión. tendrás por un lado el código y por otro los datos.


No se si te vale, pero yo es como lo hago.

jpardo84

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #11 en: Miércoles 28 de Abril de 2004, 17:29 »
0
Buenos días amigos, lei nuevamente sus respuestas y gracias de nuevo. Respecto al objeto CurrentDb la verdad no sabría como hacerlo si me dieras la idea para utilizar la función depronto solucionaría mi problema y muchas gracas también por el consejo de la divisiónde la base de datos. Pero para no confundirlos olvidémonos de la base de datos y mejor imaginen que creo un archivo en Access, pero sin crear tablas o sea un archivo Access llamado Pedidos.mdb ubicada en C:\  y con un sencillo formulario independiente que no hace casi nada, unicamente averiguar la ruta en donde se encuentre, o sea que si yo muevo el archivo Pedidos.mdb a la unidad D:\ cuando yo abra el formulario y oprima el botón me muestre D:\ esto es lo que necesito saber la ruta actual donde quiera que yo lo mueva.  El botón debería tener el siguiente código o algo me visualice la ruta actual:

Private Sub Command1_Click()
 MsgBox App.Path
End Sub

Si esto me funcionara,  maravilloso... porque cuando yo cree la base de datos en serio necesito automatizar muchas funciones con código que dependen de la ruta donde se encuentre, pero de eso me encargo yo.

En conclusión sólo necesito que Acces me muestre desde dónde tengo abierto un formulario al hacer click en un botón y ya.

De nuevo le doy gracias Brroz, FRIJU, Juanolo, Kev y Blaq por su interes.....muchos Saludos

Bopo

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #12 en: Jueves 29 de Abril de 2004, 05:00 »
0
Lo que yo uso para el path es

Código: Text
  1. If Len(App.Path) = 3 Then
  2. ruta = ""
  3. Else
  4. ruta = "\"
  5. End If
  6. rutafinal = App.Path & ruta & "archivo.mdb"
  7.  

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #13 en: Jueves 29 de Abril de 2004, 09:32 »
0
Este se me escapó y no lo puedo eliminar...

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #14 en: Jueves 29 de Abril de 2004, 09:37 »
0
Hola jpardo84.

Código: Text
  1.  
  2. Private Sub Command1_Click()
  3.     Dim str1 As String, int1 As Integer
  4.     str1 = CurrentDb.Name
  5.     'Con vba de access no dispones de InStrRev , una pena...
  6.     For int1 = Len(str1) To 1 Step -1
  7.         If Mid(str1, int1, 1) = "\" Then Exit For
  8.     Next int1
  9.     str1 = Left(str1, int1)
  10.     MsgBox str1
  11. End Sub
  12.  
  13.  

Abur.

jpardo84

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Re: Acces Y Visual Basic
« Respuesta #15 en: Jueves 29 de Abril de 2004, 16:37 »
0
Ok Brroz,  diste en el blanco, eso era precisamente lo que necesitaba, estoy muy agradecido contigo y con todo los que participaron de la discusión.
Este código lo andaba buscando desde hace unos 8 meses y nada hasta que por fin:

Dim str1 As String, int1 As Integer
   str1 = CurrentDb.Name
   'Con vba de access no dispones de InStrRev , una pena...
   For int1 = Len(str1) To 1 Step -1
       If Mid(str1, int1, 1) = "\" Then Exit For
   Next int1
   str1 = Left(str1, int1)
   MsgBox str1

Genial, ahora puedo utilizar la variable str1 para suministrarle la ruta al objeto Database ya sea en DAO o ADO.

De nuevo les estoy mu agradecido, y espero participar de nuevo en algún otro tema.....Saludos y un buen día...!!