|
Página 1 de 2
|
[SOLUCIONADO] No Me Guarda El Usuario En La Base De Datos Sqlite
Autor |
Mensaje |
miguel perez
Usuario
Registrado: Agosto 2013
Mensajes: 7
Edad: 33
|
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
|
#1 Miercoles, 23 Octobre 2013, 18:08 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
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
|
#2 Miercoles, 23 Octobre 2013, 18:48 |
|
|
miguel perez
Usuario
Registrado: Agosto 2013
Mensajes: 7
Edad: 33
|
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?
|
#3 Miercoles, 23 Octobre 2013, 19:31 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
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"
|
#4 Miercoles, 23 Octobre 2013, 21:46 |
|
|
miguel perez
Usuario
Registrado: Agosto 2013
Mensajes: 7
Edad: 33
|
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"
|
#5 Jueves, 24 Octobre 2013, 16:42 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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.
|
#6 Jueves, 24 Octobre 2013, 17:44 |
|
|
miguel perez
Usuario
Registrado: Agosto 2013
Mensajes: 7
Edad: 33
|
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
|
#7 Lunes, 25 Noviembre 2013, 17:52 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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.
|
#8 Lunes, 25 Noviembre 2013, 18:02 |
|
|
miguel perez
Usuario
Registrado: Agosto 2013
Mensajes: 7
Edad: 33
|
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
|
#9 Martes, 26 Noviembre 2013, 16:20 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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.
|
#10 Martes, 26 Noviembre 2013, 17:59 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
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
|
|
|
|
|