Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Como acceder mejor a este codigo para actualizar los campos
#1
Código:
import tkinter as tk
from tkinter import ttk,messagebox
import sqlite3
import datetime
from win10toast import ToastNotifier


# toaster = ToastNotifier()
# toaster.show_toast("App Gimnasio",
#                   "¡Hay que pagar la cuota!",
#                   duration=60)
 

db = sqlite3.connect("Gimnasio_MDD.db")

cursor = db.cursor()
#cursor.execute("create table Clientes (Id integer  primary key autoincrement,nombre text, fecha_de_nacimiento text,telefono numeric,vencimiento_de_la_cuota numeric)")


 
def agregar_clientes():
    Id = 0
    nombre = caja_nombre.get()
    fecha_de_nacimiento= caja_fecha.get()
    telefono = int(caja_telefono.get())
    Vencimiento_de_la_cuota = int(caja_vencimiento.get())
   
    if nombre == "" and fecha_de_nacimiento == "" and telefono == "" and Vencimiento_de_la_cuota == "" :
       
        messagebox.showerror(message = "Complete todos lo campos!")
        #db.close    
    else:
       
        clientes_tab.insert("", tk.END, text=nombre, values=(fecha_de_nacimiento, telefono ,Vencimiento_de_la_cuota))
        try:
            cursor.execute("insert into Clientes values(NULL,?,?,?,?) ",(nombre,fecha_de_nacimiento ,telefono,Vencimiento_de_la_cuota))
            db.commit()
           
            caja_nombre.delete(0,tk.END)
            caja_fecha.delete(0,tk.END)
            caja_telefono.delete(0,tk.END)
            caja_vencimiento.delete(0,tk.END)
       

        except ValueError:
            messagebox.showerror(message ="solo numeros!")
 
   
           
def eliminar():
    clientes = cursor.fetchall()
    for cliente in clientes:
           
        cliente = cliente[1]
       
        if selecion == " ":
            print("no se eligio")
        elif selecion == cliente:
            cursor.execute("delete from Clientes where nombre = ?",(selecion,))
   

def listar():
    cursor.execute("select * from Clientes")
    clientes = cursor.fetchall()

    for cliente  in clientes:

       
        clientes_tab.insert(
            "",
            tk.END,
            text=cliente[1],
            values = (cliente[2],cliente[3],cliente[4]))
    db.commit()

   
   
def editar_clientes():
    nueva_ventana = tk.Toplevel(ventana)
    nueva_ventana.config(width=400,height=300)
    nueva_ventana.title("Editar")

    lbl_edit_nombre = ttk.Label(nueva_ventana,text="Ingrese nombre")
    lbl_edit_nombre.place(x=10,y=10)
    caja_edit_nombre = ttk.Entry(nueva_ventana)
    caja_edit_nombre.place(x=120,y=10)

    lbl_edit_cumple = ttk.Label(nueva_ventana,text="Ingrese Fecha")
    lbl_edit_cumple.place(x=10,y=40)
    caja_edit_cumple = ttk.Entry(nueva_ventana)
    caja_edit_cumple.place(x=120,y=40)

    lbl_edit_telef = ttk.Label(nueva_ventana,text="Ingrese Telefono")
    lbl_edit_telef.place(x=10,y=70)
    caja_edit_telef = ttk.Entry(nueva_ventana)
    caja_edit_telef.place(x=120,y=70)

    lbl_edit_vencimiento = ttk.Label(nueva_ventana,text="Ingrese Vencimiento")
    lbl_edit_vencimiento.place(x=10,y=90)
    caja_edit_vencimiento = ttk.Entry(nueva_ventana)
    caja_edit_vencimiento.place(x=120,y=90)
       
       

    boton_actualizar = ttk.Button(nueva_ventana, text = 'Actualizar', command = editar_clientes)
    boton_actualizar.place(x=10,y=120)
    seleccion =  clientes_tab.item(clientes_tab.selection())["text"]
    valores = clientes_tab.item(clientes_tab.selection())["values"]
    print(seleccion,valores)  
       
       
    cajaNombre = caja_edit_nombre.get()
    cajaCumple = caja_edit_cumple.get()
    cajaTelef = int(caja_edit_telef())
    cajaVenci = int(caja_edit_vencimiento.get())  
   
   

    cursor.execute("UPDATE Clientes SET nombre ='" + cajaNombre +
        "', fecha_de_nacimiento = '" + cajaCumple +
        "', telefono = '" + cajaTelef + "',Vencimiento_de_la_cuota = '" + cajaVenci +
        "' WHERE sellcion ='" + seleccion)
    db.commit()
    messagebox.showinfo("Registro Actualizado")
       
   
       
       
    nueva_ventana.destroy()
       
    agregar_clientes()


   

 
ventana = tk.Tk()
ventana.title("Gimansio MD")
ventana.config(width=900, height=650)
 

 
boton_agregar = ttk.Button(text="Agregar Clientes", command=agregar_clientes)
boton_agregar.place(x=780, y=80)

boton_eliminar = ttk.Button(text="Elminar",command=eliminar)
boton_eliminar.place(x=780,y=110)

boton_listar = ttk.Button(text="Mostrar Clientes",command=listar)
boton_listar.place(x=780,y=140)
boton_actualizar = ttk.Button(text="Actualizar registro",command=editar_clientes)
boton_actualizar.place(x=780,y=170)


etiq_nombre= ttk.Label(text="Nombre")
etiq_nombre.place(x=10,y=10)
caja_nombre= ttk.Entry()
caja_nombre.place(x=70,y=10)

etiq_fecha_nacimiento = ttk.Label(text="Fecha de nacimiento")
etiq_fecha_nacimiento.place(x=200,y=10)
caja_fecha= ttk.Entry()
caja_fecha.place(x=320,y=10)


etiq_telefono = ttk.Label(text="Telefono")
etiq_telefono.place(x=420,y=10)
caja_telefono= ttk.Entry()
caja_telefono.place(x=470,y=10)

etiq_vencimiento = ttk.Label(text="Vencimiento de la cuota")
etiq_vencimiento.place(x=600,y=10)
caja_vencimiento= ttk.Entry()
caja_vencimiento.place(x=740,y=10)

lbl_mensaje = ttk.Label(text="mostrar")
lbl_mensaje.place(x=30,y=560)


clientes_tab = ttk.Treeview(columns=("fecha_de_nacimiento","telefono","vencimiento"))
clientes_tab.place(x=10, y=60, width=700, height=500)


clientes_tab.heading("#0", text="Nombre")
clientes_tab.heading("fecha_de_nacimiento", text="Fecha de Nacimiento")
clientes_tab.heading("telefono", text="Telefono")
clientes_tab.heading("vencimiento",text="Fecha de vencimiento")
clientes_tab.column("telefono", width=80)
 
selecion = clientes_tab.item(clientes_tab.selection())["text"]
valores = clientes_tab.item(clientes_tab.selection())["values"]




 
ventana.mainloop()
Responder
#2
Hola, ¿cuál es la pregunta en particular?
Responder
#3
(11-01-2022, 03:44 PM)Francisco escribió: Hola, ¿cuál es la pregunta en particular?

Hola Francisco me hice un despelote pude crear una nueva ventana lo que no se me ocurre es como hacer bien esa función que actualice los datos tal vez ya me meti eb algo mas complejo y ota es que no se vea lo que se ingresa mediante los ? Por la db
Responder
#4
Hola, si te referís a esta consulta:

  1. cursor.execute("UPDATE Clientes SET nombre ='" + cajaNombre +
  2. "', fecha_de_nacimiento = '" + cajaCumple +
  3. "', telefono = '" + cajaTelef + "',Vencimiento_de_la_cuota = '" + cajaVenci +
  4. "' WHERE sellcion ='" + seleccion)


El "WHERE" debería ser un "WHERE id = " seguido del ID del cliente que querés modificar. En lugar de usar concatenación de cadenas, deberías hacerlo así:

  1. cursor.execute(
  2. "UPDATE Cliente SET nombre=?, fecha_de_nacimiento=?, telefono=?, vencimiento_de_la_cuota=? WHERE id=?",
  3. (cajaNombre, cajaCumple, cajaTelef, cajaVenci, id_cliente)
  4. )


Saludos
Responder
#5
(12-01-2022, 01:32 PM)Francisco escribió: Hola, si te referís a esta consulta:

  1. cursor.execute("UPDATE Clientes SET nombre ='" + cajaNombre +
  2.     "', fecha_de_nacimiento = '" + cajaCumple +
  3.     "', telefono = '" + cajaTelef + "',Vencimiento_de_la_cuota = '" + cajaVenci +
  4.     "' WHERE sellcion ='" + seleccion)


El "WHERE" debería ser un "WHERE id = " seguido del ID del cliente que querés modificar. En lugar de usar concatenación de cadenas, deberías hacerlo así:

  1. cursor.execute(
  2.     "UPDATE Cliente SET nombre=?, fecha_de_nacimiento=?, telefono=?, vencimiento_de_la_cuota=? WHERE id=?",
  3.     (cajaNombre, cajaCumple, cajaTelef, cajaVenci, id_cliente)
  4. )


Saludos
Eso era no lo podia ver muchas gracias Francisco abrazos!!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)