[ Foro de Python ]
Buenos días. Voy avanzando en un proyecto y ahora le toca a "Modificar / actualizar / edit "o como queraís un registro. He creado un textbox donde entro la Id del registro que quiero modificar (la he llamado nid y también la utilizo para suprimir un registro), he descargado (mostrar) una lista de los registros por lo que tengo a la vista el registro que quiero modificar. Limpio los textboxes y relleno todos los campos. Finalmente pulso el botón que activa la función "actualizar",. El código es como pongo al final. Siempre recibo el mensaje "Se produjo un error" y por supuesto no se coge la modificación. He puesto siete u ocho excepts de la lista de los excepts para tratar de precisar dónde está el error. Los he ido probando uno a uno y "acumuladamente", y el último except que pongo es, naturalmente "BaseException" y entonces recibo también siempre "Error no determinado".
Aunque en la tabla he creado el campo (columna) Id, aquí he utilizado oid, que me funciona bien cuando voy a suprimir un registro con la Id que deseo. También he probado entrar los valores de los campos en vez de en (datos), como (netapa, ninv, nimporte, etc.). Sin resultado positivo
def actualizar():
try:
datos=netapa.get(), ninv.get(), nimporte.get(), nplataforma.get(),
nbanco.get(), nfechaor.get(),nfechall.get(),nsituac.get()
cursorObj.execute("UPDATE remesas SET etapa=?, inv=?, importe=?, plataforma=?, banco=?, fechaor=?, fechall=?, situac=?) WHERE oid=" + nid.get(), (datos ))
conn.commit()
limpiarEntrys()
messagebox.showinfo("Información", "Registro incorporado" )
except:
messagebox.showwarning("Advertencia", "Se produjo un error")
pass
¿Qué estoy haciendo mal? Muchísimas gracias por vuestra ahyuda.
He visto otro procedimiento para "actualizar" pero tampoco me funciona. Todavía he visto un tercer procedimiento, el que figura en Codemy , pero es bastante más complicado; lo tendré que probar a ver si me funcionara.
def actualizar(): # CRUD
conn=sqlite3.connect('inversiones.db')
cursorObj=conn.cursor()
try:
cursorObj.execute("UPDATE remesas SET etapa='"+netapa.get()+ "', inv='" + ninv.get() + "', importe='"+nimporte.get()+"', plataforma ='" +nplataforma.get() +"', banco ='" +nbanco.get()+"', fechaor='" +nfechaor.get()+"', fechall='"+nfechall.get()+"', situac='" + nsituac.get() + "' WHERE Id="+ nid.GET())
conn.commit()
limpiarEntrys()
messagebox.showinfo("Información", "Registro incorporado" )
except:
messagebox.showwarning("Advertencia", "Se produjo un error")
pass
Al fin. Por si le es de utilidad a alguien tan novato como yo, aquí va cómo me funciona. He borrado todo, lo he vuelto a escvibir con la diferencia única, creo yo, que en vez de poner en el filtro
WHERE id ="+delete_box.get() he puesto
nroid= delete_box.get()
def edit():
conn=sqlite3.connect('inversiones.db')
cursorObj=conn.cursor()
nroid = delete_box.get()
try:
datos= (netapa.get(), ninv.get(),nimporte.get(),nplataforma.get(),nbanco.get(),nfechaor.get(),nfechall.get(),nsituac.get())
cursorObj.execute("UPDATE remesas SET etapa=?, inv=?, importe=?, plataforma=?, banco=?, fechaor=?, fechall=?, situac=? "+ "WHERE id ="+ nroid,(datos))
conn.commit()
limpiarEntrys
messagebox.showinfo("Información", "Registro modificado" )
except:
messagebox.showwarning("Advertencia", "Se produjo un error")
pass
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)