Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

[SOLUCIONADO]  Problema con ubicación de archivo (base de datos)
#1
Question 

Hola a todos!

Estoy escribiendo una aplicación que guarda apuntes sobre de clases.
[Imagen: YDSGaaF1_o.png]
Utiliza una base de datos sqlite3 para guardar la información. Actualmente el archivo de la base de datos se encuentra en la carpeta del programa.

Tengo dos problemas:
1. Cuando creo el ejecutable (por ejemplo en el escritorio). No se encuentra el archivo
Código:
 Conn = New Connection
 Conn.Type = "sqlite"
 Conn.Host = Application.Path
 Conn.Name = "db_clases_prueba"

Application.path dirige al Escritorio. Si el programa está instalado a /bin...

Lo que lleva al problema #2. ¿Cómo empaquetar y ubicar el archivo en el instalador?. Con los íconos no tengo problema. Leí una entrada que hablaba de esto y sé que Gambas lo hace solo y funciona perfecto.

Mi idea era hacer un
Código:
Mkdir ("$home/MyNotesDb")

Primero (error: acceso prohibido) y luego ver de que manera copiar la base de datos a esa ubicación.

La idea es ya tener una base de datos creada con algunos ejemplos. Cosa que al abrir el programa ya se abra la base de datos.

Espero haber sido claro en mi pregunta Smile

Desde ya agradezco cualquier información que puedan dame.

Agrego.
Intenté esto al crear el instalador, pero tampoco.

[Imagen: O8Qyj6.Screenshot-20220904-165546.png]
    ¡Gracias!
#2

(04-09-2022, 22:10)Ozymandias escribió:  Cuando creo el ejecutable (por ejemplo en el escritorio). No se encuentra el archivo

Hola, si eso que te pasa es un error bastante usual.
Hay varias formas de abordar el problema pero todas tienen un punto en comun y es la creacion de un directorio donde poner la base de datos.
GAMBAS
  1. Public sAppDir As String = User.Home &/ ".config/mynotes"
  2.  
  3.  
  4. Public Sub Form_Open()
  5.  
  6.   ' 1 - Creando el directorio de trabajo
  7.   If Not Exist(sAppDir) Then
  8.     Mkdir sAppDir
  9.   '2a - Copiar la base de datos. Esta es la mas usada
  10.   Copy "./ejemplo.sqlite" To sAppDir &/ "mynotes.sqlite"
  11.  
  12.   '2b - Crear una base de datos usando un archivo SQL, esta es la que prefiero pero es mas complicada y extensa de desarrollar y solo se justifica si preferis trabajar con lenguaje SQL sobre un archivo de texto, pero si aun asi te interesa este método puedo ampliar el tema.
  13.  
  14.   '3 - Conectar con la base de datos
  15.   dbCon.Type = "sqlite3"
  16.   dbCon.Host = sAppDir
  17.   dbCon.Name = "mynotes.sqlite"
  18.   
  19.   Try dbCon.Open()



Listo, con esto deberia funcionar todo.
Luego para cerar el ejecutable o empaquetar sigues los pasos habituales y cuando el usuario abra por primera vez el programa se crera el andamiaje necesario.

1 Saludo.
[-] Los siguientes 3 usuarios dicen gracias a tincho por este post:
  • alberto-moyano, Ozymandias, Shell
    ¡Gracias!
#3

Gracias!
Funcionó perfecto.

Tengo una última duda.
Por qué funciona así?
Código:
 If Not Exist(sAppDir) Then
    Mkdir sAppDir
 Endif
Pero no así?
Código:
Mkdir ("$home/MyNotesDb")
(acceso denegado)

Saludos!
    ¡Gracias!
#4

(05-09-2022, 00:01)Ozymandias escribió:  "$home/MyNotesDb"

Esto es lo que colocas en la terminal de Linux pero estas dentro del codigo gambas asi que si queres enviar ordenes a la terminal tenes que usar Shell o Exec po ejemplo:
GAMBAS
  1. Shell "$home/MyNotesDb"



1 Saludo.
    ¡Gracias!
#5

Gracias!
    ¡Gracias!
#6

¿ Sería más recomendable usar settings ?. ( Para el directorio donde se va a ubicar la base de datos )
Aunque puede que en este caso no sea necesario.
 
Cita:2b - Crear una base de datos usando un archivo SQL, esta es la que prefiero pero es mas complicada y extensa de desarrollar y solo se justifica si preferís trabajar con lenguaje SQL sobre un archivo de texto, pero si aun así te interesa este método puedo ampliar el tema.

Pero entonces no estarías usando código de programación de Gambas. Smile
O casi..ya que ese código lo ejecuta Gambas de alguna forma.
Alguna ventaja le veras.

Saludos

"El buen perfume en frasco pequeño se vende"
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje
Último mensaje por tincho
08-10-2020, 23:15

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)