Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
No Puedo Añadir A La Base De Datos
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje No Puedo Añadir A La Base De Datos 
 
Buenas tengo una conexión hConn, un formulario para añadir artículos a la base de datos. El botón Aceptar de dicho formulario tiene el siguiente código:

PUBLIC SUB BtnAccept_Click()

  IF Editando THEN
    TRY hResul["time"] = ComboTime.Text
    TRY hResul["place"] = TxtPlace.Text
    TRY hResul["applicant"] = TxtApplicant.Text
    TRY hResul["equipment"] = ComboEquip.Text
    TRY hResul["level"] = ComboLevel.Text
    TRY hResul["schooloffice"] = ComboSchool.Text
    TRY hResul["comments"] = TxtComments.Text
    TRY hResul["status"] = ComboStatus.Text
    TRY hResul["serviceDay"] = TxtDay.Text
    TRY hResul.Update()
  ELSE

  TRY hConn.Exec("insert into services values (&1,&2,&3,&4,&5,&6,&7,&8,&9)", ComboTime.Text, TxtPlace.Text, TxtApplicant.Text, ComboEquip.Text, ComboLevel.Text, ComboSchool.Text, TxtComments.Text, ComboStatus.Text, TxtDay.Text)
  
  ENDIF
  
ME.Close()
  
  CATCH
  Message.Error("Unable to enter the requested information.")
  
  
END

Hasta ayer todo funcionaba de maravilla. Pero ahora cuando intento añadir, hace como si lo hubiera hecho y no hace nada, hasta revise la base de datos y no aparecen. Lo extraño es que me deja editar y los cambios si se guardan. Hace poco me dejo añadir solo UNO ya no más.

He revisado el código y no entiendo que puede estar pasando. Alguna Idea?
 



 
techm3 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Puedo Añadir A La Base De Datos 
 
¿Algún problema quizás con los permisos de lectura y escritura?
Es solo una idea.Suerte
 




===================
Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
 
Dani26 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Puedo Añadir A La Base De Datos 
 
Hola.

Si no has modificado nada de tu código, entonces puede ser que alguna actualización del sistema haya provocado un cambio y por eso no puedes acceder a tu base de datos.
Trata de conectarte a ella solo mediante algún terminal y enviándole sentencias SQL, así sabrás si es un fallo general.

Saludos
 



 
abarzuaf - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Puedo Añadir A La Base De Datos 
 
Creo que tal vez debieras añadir un Commit por algún lado, para asegurarte de que la inserción va a la base de datos y no se queda flotando en el misterioso mundo de los cachés de disco del servidor...

De todas formas, cambia eso de

  Message.Error("Unable to enter the requested information.")

Por algo así

  Message.Error("Se produjo el siguiente Error:" & Error.Text)

que te informará de qué es lo que está fallando cuando algo falle. El otro mensaje no dice nada útil.

Por otra parte...¿no te falta ahí un FINALLY por algún lado? no es que sea obligatorio, pero es mucho más limpio ¿no?

Suerte
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Puedo Añadir A La Base De Datos 
 
Por terminal todo funciona bien. Al ejecutar el programa no me da ningún error, hace como si hubiera aceptado la información, pero al chequear MySQL desde la terminal no se muestra lo que "se acaba de añadir".

Entonces, no entiendo que pasa porque tengo otro formulario con el código parecido para entrar otro tipo de datos y me los acepta perfectamente. Ya he revizado el código y no veo ninguna diferencia;este es:

' gambas class file

PRIVATE hConn AS Connection
PRIVATE Editando AS Boolean
PRIVATE hResul AS Result

PUBLIC SUB RunNew(Data AS Connection)
  
  hConn = Data
  ME.ShowModal()
  
END



PUBLIC SUB BtnCancel_Click()

  ME.Close()

END

PUBLIC SUB BtnAccept_Click()

  IF Editando THEN
    TRY hResul["title"] = TxtTitle.Text
    TRY hResul["collection"] = TxtCollection.Text
    TRY hResul["classification"] = TxtClass.Text
    TRY hResul["concentration"] = ComboConcentration.Text
    TRY hResul["format"] = ComboFormat.Text
    TRY hResul["comments"] = TxtComments.Text
    TRY hResul.Update()
  ELSE

  TRY hConn.Exec("insert into movinfo values (&1,&2,&3,&4,&5,&6)", TxtTitle.Text, TxtCollection.Text, TxtClass.Text, ComboConcentration.Text, ComboFormat.Text, TxtComments.Text)
  
  ENDIF
  
ME.Close()
  
  CATCH
  Message.Error("Imposible introducir los datos solicitados \n" & ERROR )
END

PUBLIC SUB RunEdit(Data AS Result)
  
  hResul = Data
  Editando = TRUE
  TxtTitle.Text = hResul["title"]
  TxtCollection.Text = hResul["collection"]
  TxtClass.Text = hResul["classification"]
  ComboConcentration.Text = hResul["concentration"]
  ComboFormat.Text = hResul["format"]
  TxtComments.Text = hResul["comments"]
  ME.ShowModal()
  
END

PUBLIC SUB Form_Open()

  IF Editando = TRUE THEN
  ME.Title = "Editing..."
  ELSE
  ME.Title = "Add to Database"
  ENDIF
  ME.Move(FMain.ScreenX + (FMain.Width - ME.Width) / 2, FMain.ScreenY + (FMain.Height - ME.Height) / 2)

END

 



 
techm3 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Puedo Añadir A La Base De Datos 
 
Nuevamente tengo que hacer una recomendación importante:

No abuséis de TRY

Si como suponemos es un error en tu código, con el uso del TRY en casi todas las sentencias nunca te enterarás de dónde se produce el error.

Para controlar los errores con TRY es necesario especificar justo después otra sentencia como ésta:

IF ERROR THEN...

' muestras el error o rediriges a otra rutina

ENDIF


Si no lo haces así, los errores simplemente serán ignorados y la cláusula CATCH no los interceptará.

Prueba a quitar todos los TRY y con seguridad verás en qué linea y porqué se produce el fallo. En general, debemos anticiparnos a los posibles errores creando código para tratar de evitarlos y sólo cuando no tengamos la seguridad de que se vayan a producir, usar los mecanismos de control de errores como TRY, FINALLY y CATCH.

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: No Puedo Añadir A La Base De Datos 
 
Hola jguardon,

Borre los TRY y me dió el siguiente error al intentar guardar los datos:
 screenshot_1280333102_472466


 lo extraño y lo que no entiendo, es porque el mismo formulario lo puedo utilizar perfectamente para editar los datos que ya están guardados en la base de datos.
 



 
techm3 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Puedo Añadir A La Base De Datos 
 
No dices en qué linea se para el programa...

Pero creo que podría ser cuando ejecutas la consulta:

hConn.Exec("insert into movinfo values (&1,&2,&3,&4,&5,&6)", TxtTitle.Text, TxtCollection.Text, TxtClass.Text, ComboConcentration.Text, ComboFormat.Text, TxtComments.Text)


No veo en tu código que hayas instanciado un nuevo objeto connection con sus parámetros adecuados.

Por ejemplo en el Form_Open() o en otro procedimiento separado que llamarás desde aquél

PUBLIC SUB Form_Open()

 hConn = New Connection
 hConn.Type = "sqlite3"
 hConn.Host = "ruta/a/tu/bd" ' en caso de sqlite
 'si es MySql será algo como localhost o la IP del servidor
 hConn.Name = "nombre_bd"
 hConn.Open()
 ' etc etc

 IF Editando = TRUE THEN
 ME.Title = "Editing..."
 ELSE
 ME.Title = "Add to Database"
 ENDIF
 ME.Move(FMain.ScreenX + (FMain.Width - ME.Width) / 2, FMain.ScreenY + (FMain.Height - ME.Height) / 2)

END



También veo que en el código del botón 'BtnAccept_Click()' repites la inserción de datos de dos formas diferentes (que si no veo mal, hacen lo mismo) sólo con la condición booleana de una variable, pero sea la que sea, la inserción se ejecutará igualmente.

Busca en el foro "clase connection" y obtendrás resultados interesantes. También hay ejemplos en el libro y en el sitio web de gambas. Busca también sobre la clase Result.

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: No Puedo Añadir A La Base De Datos 
 
La conexión está declarada en un botón de otro formulario con el cual se abre la que tengo.

PUBLIC SUB BtnData_Click()

  IF ConectarBase() THEN RETURN
  FDataServices.RunNew(hConn)
  CerrarConexion()
  Form_Open()

END


La cuestión es que todo estaba funcionando bien, tal y como estaba, hasta hace dos días. De hecho el otro formulario que les comente aún sigue trabajando como está, no me ha dado problemas y la única diferencia entre los dos es a que columna irá la informacón y cuál es la info.

Comparto con ustedes ambos formularios por si acaso pasé por alto algo que si vean.  


El Que Funciona
' gambas class file

PRIVATE hConn AS Connection
PRIVATE Editando AS Boolean
PRIVATE hResul AS Result

PUBLIC SUB RunNew(Data AS Connection)
  
  hConn = Data
  ME.ShowModal()
  
END



PUBLIC SUB BtnCancel_Click()

  ME.Close()

END

PUBLIC SUB BtnAccept_Click()

  IF Editando THEN
    TRY hResul["title"] = TxtTitle.Text
    TRY hResul["collection"] = TxtCollection.Text
    TRY hResul["classification"] = TxtClass.Text
    TRY hResul["concentration"] = ComboConcentration.Text
    TRY hResul["format"] = ComboFormat.Text
    TRY hResul["comments"] = TxtComments.Text
    TRY hResul.Update()
  ELSE

  TRY hConn.Exec("insert into movinfo values (&1,&2,&3,&4,&5,&6)", TxtTitle.Text, TxtCollection.Text, TxtClass.Text, ComboConcentration.Text, ComboFormat.Text, TxtComments.Text)
  
  ENDIF
  
ME.Close()
  
  CATCH
  Message.Error(Error.Text)
END

PUBLIC SUB RunEdit(Data AS Result)
  
  hResul = Data
  Editando = TRUE
  TxtTitle.Text = hResul["title"]
  TxtCollection.Text = hResul["collection"]
  TxtClass.Text = hResul["classification"]
  ComboConcentration.Text = hResul["concentration"]
  ComboFormat.Text = hResul["format"]
  TxtComments.Text = hResul["comments"]
  ME.ShowModal()
  
END

PUBLIC SUB Form_Open()

  IF Editando = TRUE THEN
  ME.Title = "Editing..."
  ELSE
  ME.Title = "Add to Database"
  ENDIF
  ME.Move(FMain.ScreenX + (FMain.Width - ME.Width) / 2, FMain.ScreenY + (FMain.Height - ME.Height) / 2)

END


Y El Que No Funciona

' gambas class file

PRIVATE hConn AS Connection
PRIVATE Editando AS Boolean
PRIVATE hResul AS Result

PRIVATE FUNCTION ConectarBase() AS Boolean
  
    IF hConn <> NULL THEN RETURN FALSE
    
    hConn = NEW Connection
    
    hConn.Host = "localhost"
    hConn.Name = "amp"
    hConn.Type = "MySQL"
    hConn.login = "root"
    hConn.Password = "nadielosabe71"
    TRY hConn.OPEN()
    IF ERROR THEN
      hConn = NULL
      Message.Error(Error.Text)
      RETURN TRUE
    ENDIF
    
      RETURN FALSE
    END

PUBLIC SUB RunNew(Data AS Connection)
  
  hConn = Data
  ME.ShowModal()
  
END

PUBLIC SUB MFecha(fecha AS Date)
TxtDay.Text = fecha
END

PUBLIC SUB DateChooser3_Change()
MFecha(DateChooser3.Value)
END

PUBLIC SUB BtnCancel_Click()

  ME.Close()

END

PUBLIC SUB BtnAccept_Click()

IF Editando THEN
     hResul["time"] = ComboTime.Text
     hResul["place"] = TxtPlace.Text
     hResul["applicant"] = TxtApplicant.Text
     hResul["equipment"] = ComboEquip.Text
     hResul["level"] = ComboLevel.Text
     hResul["schooloffice"] = ComboSchool.Text
     hResul["comments"] = TxtComments.Text
     hResul["status"] = ComboStatus.Text
     hResul["serviceDay"] = TxtDay.Text
     hResul.Update()
  ELSE
     ConectarBase()
     hConn.Exec("insert into services values (&1,&2,&3,&4,&5,&6,&7,&8,&9)", ComboTime.Text, TxtPlace.Text, TxtApplicant.Text, ComboEquip.Text.ComboLevel.Text, ComboSchool.Text, TxtComments.Text, ComboStatus.Text, TxtDay.Text)
  
  ENDIF
  
ME.Close()
  
  CATCH
  Message.Error(Error.Text)
  
END

PUBLIC SUB RunEdit(Data AS Result)
  
  hResul = Data
  Editando = TRUE
  ComboTime.Text = hResul["time"]
  TxtPlace.Text = hResul["place"]
  TxtApplicant.Text = hResul["applicant"]
  ComboEquip.Text = hResul["equipment"]
  ComboLevel.Text = hResul["level"]
  ComboSchool.Text = hResul["schooloffice"]
  TxtComments.Text = hResul["comments"]
  ComboStatus.Text = hResul["status"]
  TxtDay.Text = hResul["serviceDay"]
  ME.ShowModal()
  
END

PUBLIC SUB Form_Open()

  IF Editando THEN
    ME.Caption = "Editing..."
  ELSE
    ME.Caption = "Add Service"
  ENDIF
  
  ME.Move(FMain.ScreenX + (FMain.Width - ME.Width) / 2, FMain.ScreenY + (FMain.Height - ME.Height) / 2)

END
 

 



 
techm3 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Puedo Añadir A La Base De Datos 
 
Volví a reescribir el código y me dejó añadir un solo registro, al intentar añadir otro no hizo nada.
 



 
techm3 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes No Puedo Crear Una Base De Datos JosueCR Bases de Datos 3 Lunes, 09 Agosto 2010, 05:50 Ver último mensaje
JosueCR
No hay nuevos mensajes Consejos Para Añadir Imágenes A Una Base... Shell Bases de Datos 13 Miercoles, 10 Octobre 2012, 08:30 Ver último mensaje
Shell
No hay nuevos mensajes Como Puedo Modificar Datos De La Base De D... metalgearxd General 2 Viernes, 01 Marzo 2013, 13:40 Ver último mensaje
metalgearxd
No hay nuevos mensajes Como Puedo Proteger Mi Base Da Datos SqLite Ricardo Prieto General 1 Viernes, 01 Julio 2016, 17:23 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

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