|
Página 3 de 3
|
Crear Un Juego A Base De Preguntas Y Respuestas
Autor |
Mensaje |
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Crear Un Juego A Base De Preguntas Y Respuestas
Yo utilizo algo mucho más confiable para determinar si la base de datos es la correcta.
En tu base de datos sqlite puedes establecer el valor de Pragma user_version igual a un número entero que te permite determinar la versión de tu base de datos. Luego en tu programa compruebas la versión y si es menor, actualizas o avisas al usuario.
Un sencillo ejemplo:
Dim dbVersion as Integer
' para establecer el valor de la versión (numero entero)
' cuando creas las tablas
conexion.Exec("PRAGMA tu_database.user_version = &1;", dbVersion)
' para obtener la versión de la base de datos
dbVersion = conexion.Exec("PRAGMA tu_database.user_version;")
El uso final puede variar en tu caso, pero esas son las líneas generales.
Este método es mucho más seguro que comparar el tamaño de la bd.
Mucha más información de los pragmas en ésta web: https://www.sqlite.org/pragma.html#pragma_schema_version
Saludos
estas seguro que funciona porque esto: conexion.Exec("PRAGMA tu_database.user_version;" el resultado de esto es una variable de tipo result
y vos usas dbversion que es de tipo integer?????
estoy haciendo pruebas para dar con el código exacto
necesito el código para leer y dejar en una variable el entero que se encuentra en : user_version
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#21 Martes, 18 Agosto 2015, 20:27 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Crear Un Juego A Base De Preguntas Y Respuestas
buenas,
mi intención es crear un botón para ingresar numero de versión de la base de datos en la ventana donde esta la información del programa.
pero este botón estará oculto al usuario, pues es solo para el programador para asignar numero de versión de base de datos.
sera un botón y label donde se visualizara la versión de la base de datos.
en fin sigo buscando como se hace...
si alguien puede hechar luz sobre este tema se los agradezco,
pues es algo básico en base de datos algo que todos deberíamos tener a mano para entender como es.
Editado 2:
desde la consulta sql de gambas funciona esto:
asignar version: PRAGMA user_version=40
leer version: PRAGMA user_version
sin embargo intento asignar por medio de codigo con esto:
Public Sub btnInsertarVersion_Click()
Dim NumVersion As Integer
NumVersion = InputBox("Inserte número de nueva versión", "Autentificación")
FMain.Conexion.Exec("PRAGMA user_version=&1", NumVersion)
End
pero no funciona
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
última edición por v3ctor el Miercoles, 19 Agosto 2015, 16:49; editado 2 veces
|
#22 Miercoles, 19 Agosto 2015, 16:16 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Crear Un Juego A Base De Preguntas Y Respuestas
=================== No podemos regresar
|
#23 Miercoles, 19 Agosto 2015, 16:58 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Crear Un Juego A Base De Preguntas Y Respuestas
Excelente sensei !!! muchas gracias.
asi quedo el codigo:
Public Sub Form_Open()
QueVersionBaseDatos()
End
Public Sub QueVersionBaseDatos()
Dim resultado As Result
resultado = FMain.Conexion.Exec("pragma user_version")
txtLDBVersion.Text = "Versión BD:" & resultado!user_version
End
Public Sub btnInsertarVersion_Click()
Dim resultado As Result
Dim NumVersion As Integer
resultado = FMain.Conexion.Exec("pragma user_version")
NumVersion = resultado!user_version + 1
FMain.Conexion.Exec("pragma user_version = &1", NumVersion)
QueVersionBaseDatos()
End
saque todo el código de la conexión pues mi base de datos se conecta al abrir el programa y se desconecta antes de cerrar el programa.
Gracias a jguardon, gracias shordi a seguir programando que con gambas es una papa!!
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
última edición por v3ctor el Miercoles, 19 Agosto 2015, 17:35; editado 1 vez
|
#24 Miercoles, 19 Agosto 2015, 17:27 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Crear Un Juego A Base De Preguntas Y Respuestas
buenas,
bueno mas o menos aprendí lo de pragma que supongo también sirve para funciones.
ahora bien tengo que comparar la base de datos de la carpeta de trabajo del programa con la base de datos del proyecto (que esta en el propio ejecutable internamente, después que esta instalado el programa)
lo único que se me ocurre es copiar la base de datos del proyecto como archivo temporal en algún lado que podría ser user.home,
hacer la comparación, y después eliminar este archivo temporal. algo así
temp puede ayudar creo
que piensan ustedes?
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#25 Martes, 25 Agosto 2015, 23:16 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Crear Un Juego A Base De Preguntas Y Respuestas
No entiendo muy bien lo que pretendes hacer con estode las actulizaciones de la BD:
¿Vas a actualizar la BD cada vez que haya un bug en el programa?
¿Vas a enviarle al usuario un paquete con la BD actualizada y crear un módulo que las compare?
¿Vas a colocar en la red la BD actualizada y el usuario se la descargará cuando quiera?
¿Vas a controlar el número de user_version de la BD cada vez que el usuario la modifique o vas a controlarla sólo tú en tus actualizaciones?
etc. etc.
Si describieses lo que quieres hacer con todo detalle podríamos ayudarte mejor.
Saludos
=================== No podemos regresar
|
#26 Miercoles, 26 Agosto 2015, 07:54 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Crear Un Juego A Base De Preguntas Y Respuestas
buenas,
el proceso sera este:
la rutina verifica si existe la base de datos, si no existe hace una copia (parte fácil)
si existe ejecuta un pragma a la base existente y la compara con el resultado de pragma a la base de datos interna del proyecto (que ni idea como se hace)
si es menor , eliminar y hacer una copia, si es igual no hacer nada.
la otra seria poner el numero de versión manual en cada versión nueva que sale.
no se no tengo mucha claridad en este asunto
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
última edición por v3ctor el Miercoles, 26 Agosto 2015, 12:34; editado 1 vez
|
#27 Miercoles, 26 Agosto 2015, 12:29 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Crear Un Juego A Base De Preguntas Y Respuestas
buenas,
bueno encontre una solución de novato... pero anda.
If Not Exist(RutaBD) Then
ExisteBaseDatos()
Else
Conectar()
Sobre.QueVersionBaseDatos()
If VersionDB < 34 Then ' aquí es donde tengo que modificar manualmente en cada versión nueva (el 34)
Message.Info("Se actualizará la base de datos..." & gb.NewLine & "Base antigua: " & VersionDB & gb.NewLine & "Última versión: " & 34) 'aquí también
ActualizarBDbiblia()
Endif
Endif
Public Sub QueVersionBaseDatos()
Dim resultado As Result
resultado = FMain.Conexion.Exec("pragma user_version")
FMain.VersionDB = resultado!user_version
txtLDBVersion.Text = "Versión BD:" & FMain.VersionDB
End
la versión 0.3.5 tiene la versión 33 la próxima que voy a sacar tendrá la 34
las versiones anteriores que no tienen user_version al consultar da 0 por lo tanto actualizara.
jajaj voy resolviendo a los tortasos, y bueno ser novato no es fácil jajajjaj
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#28 Jueves, 27 Agosto 2015, 16:37 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 3 de 3
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|