Hola, buen día chicos:
Hace un par de meses venia trabajando en un proyecto personal para catalogar imágenes y dejar de tener todo perdido en el PC. ademas de tener la opción de crear un catalogo compartido con otros usuarios de la misma maquina. Bajo ese marco de trabajo tengo una rutina que hasta la versión 3.19 en kdeNeon me funcionaba perfecto.
Por cosas de la vida actualice mi maquina a Manjaro con plasma y aquí esta la versión 3.21 de Gambas3. Me toco cambiar los componentes gb.db a gb.db2.
La aplicación con la BD creada sigue funcionando, agrego, elimino, etc., pero al iniciar desde cero la aplicación donde debe crear la BD no hace nada por que la sección de creación de BD no funciona y no envía mensaje de error, salvo cuando reintenta abrir la BD y no la encuentra.
$DB.Databases.Add(Constants.DATABASE_NAME) <== esta linea no esta haciendo nada ni enviando mensaje alguno hacia afuera
Sera error de la nueva versión?, error de los nuevos componentes?
este código lo rescate desde el tutorial de
http://jsbsan.blogspot.com.es/
Código:
Private Sub CreateDatabase()
'Crear conexión temporal para crear la BD
$DB = New Connection
$DB.Type = Constants.DATABASE_SQLITE3
$DB.Host = $DbLibraryDirectory
$DB.Name = "" 'Liberamos el nombre para poder crear la BD física
$DB.Open()
If Error Then
$Log4Gambas.Fatal(("No se puede abrir conexión para crear BD:") & " " & Error.Text)
ERROR.Propagate
Endif
'Ya sabemos que el archivo de base de datos no existe, aqui preguntamos via connect
If Not $DB.Databases.Exist(Constants.DATABASE_NAME) Then
'' NOTE: Aqui ocurre la magia, se crea la base de datos
$DB.Databases.Add(Constants.DATABASE_NAME)
Wait 0.05 ' Pequeña pausa para asegurar creación fisica del archivo
If Error Then
$Log4Gambas.Fatal(("No se puede crear base de datos:") & " " & Error.Text)
$DB.Close()
ERROR.Propagate
Endif
Endif
' cerramos la conexion para asegurar soltarla y ahora usar el nombre
$DB.Close()
' Reconectar con el nombre de la BD y crear esquema
$DB.Name = Constants.DATABASE_NAME
' Volvemos a conectarnos
$DB.Open()
If Error Then
$Log4Gambas.Fatal(("No se puede reabrir BD recién creada:") & " " & Error.Text)
ERROR.Propagate
Endif
$DB.Close()
$Log4Gambas.Info(("Base de datos creada exitosamente"))
End