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
 
[SOLUCIONADO] No Me Guarda El Usuario En La Base De Datos Sqlite
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje No Me Guarda El Usuario En La Base De Datos Sqlite 
 
Buen dia lo que sucede es que al precionar el boton guardar me saca el mensaje de que de que el usuario ha sido guardado satisfactoriamente paro cuando voy a la base de datos sqlite no aparece, he revisado mi codigo varias veces pero no he podido encontrar el error

Tengo gambas 3.1.1
base de datos sqlite
La conexion a la base de datos esta hecha en un modulo

Private hConn As Connection
Private hresul As Result
Private editando As Boolean
Public Ruta As String

Public Sub runedit(data As Result)

  hresul = data
  editando = True
  
   txt_id.text = hresul["id_user"]
   txt_password.text = hresul["password"]
   txt_name.text = hresul["name_user"]
   txt_gblood.text = hresul["g_blood"]
   txt_sex.text = hresul["sex_user"]
   txt_age.text = hresul["age_user"]
   txt_allergy.text = hresul["allergy_user"]
   txt_photo.text = hresul["photo_user"]
   txt_birth.text = hresul["date_birth_user"]
   txt_phone.text = hresul["phone_user"]
   txt_cell.text = hresul["cell_phone_user"]
   txt_email.text = hresul["email_user"]
   txt_address.text = hresul["address"]
   txt_type_user.text = hresul["type_user"]
  
 Me.ShowModal
  
End

Public Sub runnew(data As Connection)
  
  hconn = data
  Me.ShowModal
  
End
 

Public Sub btnaceptar_Click()

   If editando Then
  '
  Try hresul["id_user"] = Val(txt_id.text)
  Try hresul["password"] = txt_password.text
  Try hresul["name_user"] = txt_name.text
  Try hresul["g_blood"] = txt_gblood.text
  Try hresul["sex_user"] = txt_sex.text
  Try hresul["age_user"] = Val(txt_age.text)
  Try hresul["allergy_user"] = txt_allergy.text
  Try hresul["photo_user"] = txt_photo.text
  Try hresul["date_birth_user"] = Date(txt_birth.text)
  Try hresul["phone_user"] = txt_phone.text
  Try hresul["cell_phone_user"] = txt_cell.text
  Try hresul["email_user"] = txt_email.text
  Try hresul["address"] = txt_address.text
  Try hresul["type_user"] = Val(txt_type_user.text)
  
   Try hresul.Update
   Else
  Try hconn.EXEC("insert into tb_user values (&1,&2,&3,&4,&5,&6,&7,&8,&9,10,&11,&12,&13,&14)", txt_id.Text, txt_password.Text, txt_name.Text,
  txt_gblood.Text, txt_sex.Text, txt_age.Text, txt_allergy.Text, txt_photo.Text, txt_birth.Text, txt_phone.Text, txt_cell.Text, txt_email.Text,
   txt_address.Text, txt_type_user.Text)
  
    Endif
Message("el usuario se ha ingresado correctamente")
  Me.Close()
  Ver_Profesor.Show
  
 Catch
     Message.Error("Imposible introducir los datos solicitados")

End
 


De antemano les agradezco la ayuda que me puedan brindar
Dios los Bendiga
 



 
miguel perez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Me Guarda El Usuario En La Base De Datos Sqlite 
 
Hola miguel perez:

Quita las ordenes "Try", a ver que sucede, seguramente te saltará algún error.

Fijate lo que dice GambasDoc:

Citar:
Try trata de ejecutar una Orden, sin disparar un error.
Utilice ERROR a continuación de TRY para saber si se pudo ejecutar correctamente."

Try : http://gambasdoc.org/help/lang/try?es
Catch en la documentacion: catch en gambasdoc

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Me Guarda El Usuario En La Base De Datos Sqlite 
 
Hola  jsbsan le quite las ordenes Try y no me lanzo ningun error
posteriormente coloque (if error then mensaje) despues de todos Try y me saca error16 y luego me muestra (el usuario se ha ingresado correctamente)
Try hconn.Exec("insert into tb_user values(&1, &2, &3, &4, &5, &6, &7, &8, &9, &10, &11, &12, &13, &14)", txt_id.Text, txt_password.Text,
  txt_name.Text, txt_gblood.Text, txt_sex.Text, txt_age, txt_allergy.Text, txt_photo.Text, txt_birth.Text, txt_phone.Text, txt_cell.Text,
  txt_email.Text, txt_address.Text, txt_type_user.Text)
  If Error Then
    Message("error16")
  Endif
    Endif
Message("el usuario se ha ingresado correctamente")
  Me.Close()
  Ver_Profesor.Show
  


Revise que los nombres de los textbox utilizados estubieran bien, el nombre de la tabla tambien esta bien ¿que podria estar causando el error?
 



 
miguel perez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Me Guarda El Usuario En La Base De Datos Sqlite 
 
En tu caso concreto, el error probablemente es que cuando usas "comodines" en la construcción de la sentencia SQL, la sintaxis es un poco especial. Te explico: resulta que a partir del décimo parámetro, éste hay que envolverlo entre llaves para que funcione. Con un pequeño ejemplo lo entenderás mejor:

hconn.Exec("insert into tb_user values(&1, &2, &3, &4, &5, &6, &7, &8, &9, &{10}, &{11}, &{12}, &{13}, &{14})", ...lista de parámetros...)


Como ves, es muy sencillo, sólo hay que poner las llaves alrededor de los números igual o mayores a 10.

El problema es que sigues usando Try en la ejecución de la consulta a la base de datos. Evidentemente, al producirse un error en esa sentencia, se muestra el mensaje que tú mismo has definido y que no tiene aparentemente ningún sentido. Si quieres mostrar un error, usa para el texto del mensaje Error.Text, Error.Where, etc:

http://www.gambasdoc.org/help/cat/error?es&v3

http://www.gambasdoc.org/help/comp/gb/error?es&v3

Mi opinión, como ya te han dado anteriormente, es que el uso de Try es un arma de doble filo. Hay que saber cuándo y por qué usarlo y en caso de hacerlo hay que usar las cláusula Catch o la clase Error para controlar el flujo del programa ante un error y para obtener toda la información sobre ese error, respectivamente.

Un consejo cuando se empieza a programar, es NO usar Try bajo ningún concepto. Es la única forma de aprender y ver dónde se producen los errores. Cuando sepas programar, usarás Try en contadas ocasiones porque realmente no se necesita casi nunca si el programa está bien pensado.


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 Me Guarda El Usuario En La Base De Datos Sqlite 
 
quite el try y puse los corchetes, pero igual sigue saliendo error y se ejecuta el Catch, el codigo me quedo de la siguiente manera

  hconn.Exec("insert into tb_user values(&1, &2, &3, &4, &5, &6, &7, &8, &9, &{10}, &{11}, &{12}, &{13}, &{14})", txt_id.Text, txt_password.Text,
  txt_name.Text, txt_gblood.Text, txt_sex.Text, txt_age.Text, txt_allergy.Text, txt_photo.Text, txt_birth.Text, txt_phone.Text, txt_cell.Text,
  txt_email.Text, txt_address.Text, txt_type_user.Text)
 
    Endif
 Message("el usuario se ha ingresado correctamente")
  Me.Close()
  Ver_Profesor.Show
  
 Catch
   Message(Error.Text)
  Message(Error.Where)
'   Message.Error("Imposible introducir los datos solicitados")

End
 

Cuando dejo solomente error.text el mensaje que muestra es: "Null Object"
Cuando dejo solo error.where el mensaje que muestra es: "New_profesor.btnaceptar_Click.73" efectivamente esta el la linea que hace la consulta que empieza con hconn.exce(sentencia sql)
Cuando dejo los dos juntos los mensajes cambian segun el orden
si primero esta error.text y luego error.where sale de la siguiente manera "Null object" y "Stock.InitTheme.218"
si primero esta error.where y luego error.text sela de la siguiente manera "New_profesor.btnaceptar_Click.73" y "File or directory does not exist"
 



 
miguel perez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Me Guarda El Usuario En La Base De Datos Sqlite 
 
Null object se refiere, seguramente, a tu conexión. Comprueba que esté abierta y validada en el momento en que intenta hacer la consulta. En otras palabras: hcon es nulo.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Me Guarda El Usuario En La Base De Datos Sqlite 
 
Hola he estado tratando de solucionar el problema pero nada lo de hconn=a null ya lo resolvi sin embargo me sale un error en esta parte del codigo, debe ser algo sobre la sentecia en especial con &{10}, &{11}, &{12}, &{13}, &{14})", porque este codigo lo utiliza en otras tablas mas cortas y me funciona perfectamente

Else
   hConn.Exec("insert into tb_user values(&1, &2, &3, &4, &5, &6, &7, &8, &9, &{10}, &{11}, &{12}, &{13}, &{14})", txt_id.Text, txt_password.Text,
   txt_name.Text, txt_gblood.Text, txt_sex.Text, txt_age.Text, txt_allergy.Text, txt_photo.Text, txt_birth.Text, txt_phone.Text, txt_cell.Text,
   txt_email.Text, txt_address.Text, txt_type_user.Text)
  Endif
 

 



 
última edición por miguel perez el Lunes, 25 Noviembre 2013, 18:05; editado 2 veces 
miguel perez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Me Guarda El Usuario En La Base De Datos Sqlite 
 
Prueba con los objetos de bases de datos de gambas. Te irá mejor


dim r as result

r=hconn.create("tb_user")

r!id= txt_id.Text
r!name=txt_name.Text
r!Gblood=txt_blood.Text
...
...
r.update

catch

  Messate("se produjo el error: " & Error.text " - En " & Error.where)

 


Si tienes algún error en uno de los textbox o en la conexión, te avisará de la línea donde se produce.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Me Guarda El Usuario En La Base De Datos Sqlite 
 
Quedo en las mismas el Error me sigue apareciendo aca

   hConn.Exec("insert into tb_user values(&1, &2, &3, &4, &5, &6, &7, &8, &9, &{10}, &{11}, &{12}, &{13}, &{14})", txt_id.Text, txt_password.Text,
   txt_name.Text, txt_gblood.Text, txt_sex.Text, txt_age.Text, txt_allergy.Text, txt_photo.Text, txt_birth.Text, txt_phone.Text, txt_cell.Text,
   txt_email.Text, txt_address.Text, txt_type_user.Text)
  Endif
 

 



 
miguel perez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: No Me Guarda El Usuario En La Base De Datos Sqlite 
 
La sentencia es correcta, luego el error lo tienes en otro lado. Sube tu proyecto (al menos el formulario que te da el error, la base de datos y los módulos o clases que sean llamados desde él).
Es imposible ayudar viendo sólo esa sentencia.

Saludos.
 



 
shordi - 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 Autentificacion De Usuario En Base De Dato... Cubel Bases de Datos 5 Jueves, 14 Enero 2010, 16:05 Ver último mensaje
Cubel
No hay nuevos mensajes Base De Datos Sqlite gustavo_fleitas Bases de Datos 9 Viernes, 09 Agosto 2013, 08:55 Ver último mensaje
jsbsan
No hay nuevos mensajes Base De Datos Sqlite Basica Andando v3ctor Bases de Datos 1 Martes, 26 Noviembre 2013, 00:00 Ver último mensaje
shordi
No hay nuevos mensajes Programita Para Examinar Base De Datos Sqlite v3ctor Bases de Datos 11 Lunes, 11 May 2015, 23:53 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