Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Problema En Modo Depuración.Creacion De Una Base De Datos Con Código
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Problema En Modo Depuración.Creacion De Una Base De Datos Con Código 
 
Hola Comunidad.

Con Sqlite3.

Estoy probando la creación de una base de datos desde código y observo
comportamientos diferentes.

En modo depuración no responde correctamente. Dando conexión ya abierta.
Hasta le añadí un retardo para ver el comportamiento.
Es muy diferente a cuando se ejecuta con normalidad con F5.

A modo de ejemplo la mayoría del código lo use en Form_Open.
La base no estaba creada.

¿ Es como si ya estuviese abierta en memoria ?.
Es extraño que se pretenda cerrar la conexión, asignar un nombre y luego abrirla.
Sera un procedimiento cuando la base de datos no tiene un nombre.  

A menos que se cierre, esto no la hace nula y sigue manteniendo los datos de la conexión.
Cambiando solo el nombre de la base o archivo.

Naturalmente el código no es adecuado si ya la base esta creada.

PRIVATE hConn AS Connection

PUBLIC SUB Form_Open()

  DIM hTabla AS Table
  
  hConn = NEW Connection
  WITH hConn
    .Host = User.Home & "/Prueba/Bases2/"
    .Name = ""
    .Type = "sqlite3"
  END WITH

  hConn.Open 'Aquí comienza el problema en modo depuración
 
  IF NOT hConn.Databases.Exist("biblio") THEN  hConn.Databases.Add("biblio")  

  hConn.Close
      
  hConn.Name = "biblio"    
  hConn.Open
  
  hTabla = hConn.Tables.Add("datos")

  WITH hTabla
    .Fields.Add("titulo", gb.String, 40)
    .Fields.Add("autor", gb.String, 40)
    .Fields.Add("fecha", gb.Date)
    .Fields.Add("precio", gb.Float)
    .Fields.Add("descripcion", gb.String, 200)
  
    .PrimaryKey = ["titulo"]
    .Update    
  END WITH

    
END


PUBLIC SUB Form_Close()  
  hConn.Close  
  hConn = NULL
END
 


Quizás esto no se puede ejecutar en modo depuración.  

Saludos.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Viernes, 27 Abril 2012, 13:11; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema En Modo Depuración.Creacion De Una Base De Datos Con Código 
 
Compañero yo uso estas lineas para crear una bd sqlite3

SUB agregoTabla()
  DIM hcon AS NEW Connection
  DIM latabla5 AS Table
  DIM dbName AS String

  DBName = "MiAgenda"
  ' Abre la conexion sólo al servidor de datos, sin abrir tablas
  hcon.Type = "sqlite3"
  hcon.Host = User.Home & "/base_de_datos"
  hcon.Name = ""
  hcon.Login = ""
  hcon.Password = ""
  hcon.Port = ""

  TRY hcon.Open()

IF NOT Exist(hcon.Host & "/" & hcon.name) THEN
ENDIF

  ' Comprueba si existe la base de datos /user/home/importada_csv, y si no existe la crea
  IF NOT hcon.Databases.Exist(DBName) THEN
    hcon.Databases.Add(DBName)
    ' Esta espera es necesaria con bases SQLite , aunque no con Mysql
    WAIT 0.5
  END IF
  ' Se cierra la conexión al servidor  
  hcon.Close()
  ' Se abre la conexión a la base de datos
  hcon.Host = User.Home & "/base_de_datos"
  hcon.Name = DBName
  TRY hcon.Open()
  IF ERROR THEN
    Message.Error("No se pudo abrir la base de datos")
'    RETURN FALSE
  END IF  
  latabla5 = hcon.Tables.Add("tabla1") 'creamos una tabla
  latabla5.Fields.Add("id", db.Serial)
  latabla5.Fields.Add("usuario", gb.String, 120, NOT NULL)
  latabla5.Fields.Add("algo1", gb.String, 20, NOT NULL)
  latabla5.Fields.Add("algo2", gb.String, 20, NOT NULL)
  latabla5.PrimaryKey = ["id"]
  latabla5.Update()

  hcon.Close
CATCH
  ' Message.Error(Error.Text)
'    RETURN FALSE
END


lo modificas a tu necesidad

Espero te sea de ayuda
 



 
última edición por Haseo el Viernes, 27 Abril 2012, 15:31; editado 1 vez 
Haseo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema En Modo Depuración.Creacion De Una Base De Datos Con Código 
 
Shell, cuando dices "modo depuración" supongo que te refieres a depuración paso paso. Porque F5 ya es depuración en sí mismo.

Yo creo que el problema viene porque hay ciertas cosas que no se completan hasta que termina el método que las contiene, en este caso el Form_Load, por eso paso a paso puede ser que veas cosas raras. Es posible -aunque lo desconozco- que cree la bd en memoria y sólo la escriba a disco cuando finaliza el método.

Prueba a usar puntos de interrupción o sentencias Print o Debug entre las líneas de tu interés. Mientras el programa está pausado, se pueden ver los valores que adquieren los objetos  con doble clic sobre el objeto o variable en el editor de código.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema En Modo Depuración.Creacion De Una Base De Datos Con Código 
 
Haseo:

Gracias.


Jesús:

jguardon escribió: 
Shell, cuando dices "modo depuración" supongo que te refieres a depuración paso paso. Porque F5 ya es depuración en sí mismo.


Si, efectivamente.Paso a paso ,F8. F5 ya seria una ejecución.(Aunque en el fondo estés viendo un resultado, final).  

jguardon escribió: 

Prueba a usar puntos de interrupción o sentencias Print o Debug entre las líneas de tu interés. Mientras el programa está pausado, se pueden ver los valores que adquieren los objetos  con doble clic sobre el objeto o variable en el editor de código.


Ok, probare eso.

Saludos.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema En Modo Depuración.Creacion De Una Base De Datos Con Código 
 
Shell

"F5" o pulsar el símbolo "Play" en el IDE, aunque diga ejecutar, en realidad se ejecuta en modo depuración. Todo lo que se ejecuta dentro del IDE se ejecuta en modo depuración.

Puedes estar seguro de ello, porque cuando tu programa tiene un error, se detiene en la línea que lo produjo, indicando el tipo de error y el stack abajo a la derecha. Igualmente cuando el programa se detuvo tras el error, puedes comprobar los valores de los objetos como expliqué antes.

La ejecución del programa sólo tiene lugar fuera del IDE, a partir del fichero .gambas generado. Ahí, cuando hay un error no controlado, el programa casca sin remedio.

Creo que convenía aclarar este punto.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema En Modo Depuración.Creacion De Una Base De Datos Con Código 
 
Jesús:

Tienes toda la razón,el IDE siempre esta de fondo.
Creando los puntos de interrupción no se ha generado un error.

Saludos.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Problema Con El Administrador De Base De D... kexxya Bases de Datos 3 Lunes, 28 Marzo 2011, 17:54 Ver último mensaje
kexxya
No hay nuevos mensajes Problema Al Crear Base De Datos soldadozero Bases de Datos 19 Jueves, 29 Agosto 2013, 14:39 Ver último mensaje
Dani26
No hay nuevos mensajes Duda Sobre El IDE Gambas3 En El Modo Depur... gambafeliz General 4 Domingo, 24 May 2020, 12:21 Ver último mensaje
gambafeliz
No hay nuevos mensajes ComboBox. Valores Desde Modo Diseño Y Des... Shell General 0 Martes, 16 Junio 2020, 12:13 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron