|
Página 1 de 2
|
No Puedo Añadir A La Base De Datos
Autor |
Mensaje |
techm3
Programador
Registrado: Febrero 2010
Mensajes: 130
Edad: 32 Ubicación:
|
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?
|
#1 Miercoles, 28 Julio 2010, 00:14 |
|
|
Dani26
Analista Programador
Registrado: Junio 2010
Mensajes: 365
Edad: 58 Ubicación: Montevideo
|
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
|
#2 Miercoles, 28 Julio 2010, 03:45 |
|
|
abarzuaf
Ingeniero Programador
Registrado: Octobre 2009
Mensajes: 265
Edad: 54 Ubicación:
|
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
|
#3 Miercoles, 28 Julio 2010, 04:13 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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
|
#4 Miercoles, 28 Julio 2010, 09:42 |
|
|
techm3
Programador
Registrado: Febrero 2010
Mensajes: 130
Edad: 32 Ubicación:
|
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
|
#5 Miercoles, 28 Julio 2010, 13:11 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
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:
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"
|
#6 Miercoles, 28 Julio 2010, 14:51 |
|
|
techm3
Programador
Registrado: Febrero 2010
Mensajes: 130
Edad: 32 Ubicación:
|
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:
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.
|
#7 Miercoles, 28 Julio 2010, 17:06 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
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"
|
#8 Miercoles, 28 Julio 2010, 20:05 |
|
|
techm3
Programador
Registrado: Febrero 2010
Mensajes: 130
Edad: 32 Ubicación:
|
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.
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
|
#9 Miercoles, 28 Julio 2010, 21:03 |
|
|
techm3
Programador
Registrado: Febrero 2010
Mensajes: 130
Edad: 32 Ubicación:
|
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.
|
#10 Jueves, 29 Julio 2010, 19:39 |
|
|
|
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
|
|
|
|
|