eduardo barrera

All generations.

generate functionSun, 01 Dec 2024

crear menu desplegable para escritorio windows en pantalla maximizada con tres menu principal 1. "Clientes" submenu "Registro de Clientes" menu 2 "Acerca de...", menu 3 Salida,

Para crear un menú desplegable en Python para Windows, podemos utilizar la biblioteca `tkinter`. A continuación, te muestro un ejemplo de cómo crear un menú desplegable con tres opciones principales y un submenu: ```python import tkinter as tk from tkinter import ttk class Aplicacion: def __init__(self, root): self.root = root self.root.title("Menú Desplegable") self.root.geometry("300x200") # Tamaño de la ventana self.root.state('zoomed') # Pantalla maximizada # Crear menú principal self.menubar = tk.Menu(self.root) self.root.config(menu=self.menubar) # Crear opciones principales self.opciones = tk.Menu(self.menubar, tearoff=0) self.opciones.add_command(label="Clientes", command=self.clientes) self.opciones.add_command(label="Registro de Clientes", command=self.registro_clientes) self.menubar.add_cascade(label="Clientes", menu=self.opciones) self.acerca = tk.Menu(self.menubar, tearoff=0) self.acerca.add_command(label="Acerca de...", command=self.acerca_de) self.menubar.add_cascade(label="Acerca de...", menu=self.acerca) self.salida = tk.Menu(self.menubar, tearoff=0) self.salida.add_command(label="Salir", command=self.salir) self.menubar.add_cascade(label="Salir", menu=self.salida) def clientes(self): print("Clientes seleccionados") def registro_clientes(self): print("Registro de Clientes seleccionado") def acerca_de(self): print("Acerca de... seleccionado") def salir(self): self.root.destroy() if __name__ == "__main__": root = tk.Tk() app = Aplicacion(root) root.mainloop() ``` En este código, creamos una clase `Aplicacion` que se encarga de crear la ventana y el menú desplegable. La ventana se maximiza con el método `state('zoomed')`. Luego, creamos tres opciones principales (`Clientes`, `Acerca de...` y `Salir`) y sus respectivos submenús. Cada opción principal tiene un comando asociado que se ejecuta cuando se selecciona. Para ejecutar el código, simplemente copia y pega el código en un archivo Python y ejecútalo con Python. La ventana se abrirá con el menú desplegable.

Python
View
generate functionSun, 01 Dec 2024

crear menu desplegable para escritorio windows en pantalla maximizada con tres menu principal 1. "Clientes" submenu "Registro de Clientes" menu 2 "Acerca de...", menu 3 Salida, sin comentarios eliminar boton Salir y salir por intermedio de submenu 3 Salida import tkinter as tk from tkinter import ttk class Aplicacion: def __init__(self, raiz): self.raiz = raiz self.raiz.state('zoomed') # Maximizar la ventana self.raiz.title('Menu Principal') # Crear menú principal self.barra_menu = tk.Menu(self.raiz) self.raiz.config(menu=self.barra_menu) # Crear menú "Clientes" self.menu_clientes = tk.Menu(self.barra_menu, tearoff=0) self.barra_menu.add_cascade(label='Clientes', menu=self.menu_clientes) self.menu_clientes.add_command(label='Registro de Clientes') # Crear menú "Proveedores" self.menu_proveedores = tk.Menu(self.barra_menu, tearoff=0) self.barra_menu.add_cascade(label='Proveedores', menu=self.menu_proveedores) self.menu_proveedores.add_command(label='Registro de Proveedores') # Crear menú "Acerca de..." self.menu_acerca = tk.Menu(self.barra_menu, tearoff=0) self.barra_menu.add_cascade(label='Acerca de...', menu=self.menu_acerca) self.menu_acerca.add_command(label='V.1.1') # Crear menú "Salida" self.menu_salida = tk.Menu(self.barra_menu, tearoff=0) self.barra_menu.add_cascade(label='Salida', menu=self.menu_salida) self.menu_salida.add_command(label='Salir del Siatema', command=self.salir) def salir(self): self.raiz.destroy() if __name__ == '__main__': raiz = tk.Tk() app = Aplicacion(raiz) raiz.mainloop()...segun este codigo donde puedo preguntar que ,menu se eligio y como enviar a otra funcion

Please keep input under 1000 characters

Python
View
translateSun, 01 Dec 2024

Private Sub cmdBuscar_Click() If TextRut.Text = "" Then MsgBox "El campo Rut debe ser llenado", vbInformation, "Aviso": TextRut.SetFocus: Exit Sub TextNombre = "" TextDireccion = "" With Rsclientes .Requery .Find "RUT='" & Trim(TextRut.Text) & "'" If .EOF Then MsgBox "No encontado", vbExclamation TextRut.Text = "" TextRut.SetFocus CmdNuevoCliente.Enabled = True Else CmdNuevoCliente.Enabled = False TextNombre.Text = .Fields("NOMBRE").Value TextDireccion.Text = .Fields("DIRECCION").Value CmdEliminar.Enabled = True CmdModificar.Enabled = True End If End With End Sub

Aquí te muestro la equivalente función en Python utilizando la biblioteca `sqlite3` para interactuar con una base de datos SQLite: ```python import sqlite3 def buscar_cliente(rut): try: conn = sqlite3.connect('clientes.db') cursor = conn.cursor() cursor.execute("SELECT * FROM clientes WHERE RUT=?", (rut,)) row = cursor.fetchone() if row: return { 'nombre': row[1], 'direccion': row[2] } else: return None except sqlite3.Error as e: print(f"Error: {e}") finally: if conn: conn.close() def cmd_buscar_click(): rut = TextRut.get() if not rut: MsgBox("El campo Rut debe ser llenado", "Aviso") TextRut.focus_set() return TextNombre.delete(0, tkinter.END) TextDireccion.delete(0, tkinter.END) cliente = buscar_cliente(rut) if cliente: TextNombre.insert(0, cliente['nombre']) TextDireccion.insert(0, cliente['direccion']) CmdEliminar.config(state='normal') CmdModificar.config(state='normal') CmdNuevoCliente.config(state='disabled') else: MsgBox("No encontrado", "Aviso") TextRut.delete(0, tkinter.END) TextRut.focus_set() CmdNuevoCliente.config(state='normal') ``` Ten en cuenta que: - La función `buscar_cliente` conecta a la base de datos, ejecuta una consulta SQL para buscar el cliente con el rut proporcionado y devuelve un diccionario con los datos del cliente si existe, o `None` si no existe. - La función `cmd_buscar_click` obtiene el valor del campo Rut, verifica si está vacío, y si no, busca el cliente en la base de datos. Si el cliente existe, actualiza los campos Nombre y Dirección con los datos del cliente y habilita los botones Eliminar y Modificar. Si el cliente no existe, muestra un mensaje de error y vuelve a habilitar el botón Nuevo Cliente. Recuerda que debes importar la biblioteca `tkinter` para utilizar las funciones `MsgBox` y `focus_set`.

Python
View
generate functionSun, 01 Dec 2024

crear menu desplegable para escritorio windows en pantalla maximizada con tres menu prinsipal 1. "Clientes" submenu "Registro de Clientes" 2 "Acerca de...", 3 Salida,

Para crear un menú desplegable en Python para Windows, podemos utilizar la biblioteca `tkinter`. A continuación, te muestro un ejemplo de cómo crear un menú desplegable con tres opciones principales y un submenu: ```python import tkinter as tk from tkinter import ttk class Aplicacion: def __init__(self, raiz): self.raiz = raiz self.raiz.title("Menú Desplegable") self.raiz.geometry("300x200") # Tamaño de la ventana self.raiz.maxsize(300, 200) # Tamaño máximo de la ventana self.raiz.state('zoomed') # Ventana maximizada # Crear menú principal self.menubar = tk.Menu(self.raiz) self.raiz.config(menu=self.menubar) # Crear menú "Archivo" self.archivo_menu = tk.Menu(self.menubar, tearoff=0) self.archivo_menu.add_command(label="Registro de Clientes", command=self.registro_clientes) self.archivo_menu.add_separator() self.archivo_menu.add_command(label="Salir", command=self.salir) self.menubar.add_cascade(label="Clientes", menu=self.archivo_menu) # Crear menú "Ayuda" self.ayuda_menu = tk.Menu(self.menubar, tearoff=0) self.ayuda_menu.add_command(label="Acerca de...", command=self.acerca_de) self.menubar.add_cascade(label="Acerca de...", menu=self.ayuda_menu) def registro_clientes(self): print("Registro de Clientes") def acerca_de(self): print("Acerca de...") def salir(self): self.raiz.destroy() if __name__ == "__main__": raiz = tk.Tk() app = Aplicacion(raiz) raiz.mainloop() ``` En este código, creamos una clase `Aplicacion` que se encarga de crear la ventana y el menú desplegable. La ventana se maximiza automáticamente al ejecutar el programa. El menú desplegable tiene tres opciones principales: "Clientes", "Acerca de..." y "Salir". La opción "Clientes" tiene un submenu con la opción "Registro de Clientes". Cuando se selecciona una opción del menú, se ejecuta la función correspondiente. Para ejecutar el código, simplemente copia y pega el código en un archivo con extensión `.py` y ejecuta el archivo con Python.

Python
View
generate functionSun, 01 Dec 2024

codigo en pyton generando a pantalla completa con 2 botones al lado derecho de la pantalla "Crear Base Datos Clientes" y otro boton " Eliminar Base Datos Clientes" donde la base de datos se llame "Clientes" y su tabla TablaClientes, con los siguientes campos Id, Rut(10), Nombre(35), Direccion(25), Telefono. ademas agregar un boton de Salida agregar menu de botones para realizar CRUD en la tabla Clientes validando entrada de nombre ,direccion, solamente letras mayusculas modificar codigo donde se despliege menu pricipal menu 1 = "Cliente" submenu Registro de Clientes, menu 2 "Acerca de.." version de sistema, menu 3 = "Salida" el menu desplegable en la parte superior de la pantalla menu desplegable sin boton en una sola pantalla se realice el CRUD modificar el menu a barra de menu modificar codigo donde menu "Registro de Clientes" abra una pantalla con el tamaño segun las proporciones a los datos que ingresara el usuario y en ella se ralice el CRUD con sus botones respectivos s

Aquí te muestro el código modificado en Python utilizando la biblioteca Tkinter para crear la interfaz gráfica: ```python import tkinter as tk from tkinter import ttk, messagebox import sqlite3 # Conectar a la base de datos conn = sqlite3.connect('Clientes.db') cursor = conn.cursor() # Crear tabla si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') # Función para crear base de datos def crear_base_datos(): try: conn.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') messagebox.showinfo('Éxito', 'Base de datos creada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar base de datos def eliminar_base_datos(): try: conn.execute('DROP TABLE TablaClientes') messagebox.showinfo('Éxito', 'Base de datos eliminada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para registrar cliente def registrar_cliente(): ventana_registro = tk.Toplevel(root) ventana_registro.title('Registro de Clientes') # Obtener datos del usuario rut = tk.StringVar() nombre = tk.StringVar() direccion = tk.StringVar() telefono = tk.StringVar() # Crear etiquetas y campos de texto tk.Label(ventana_registro, text='Rut:').grid(row=0, column=0) tk.Entry(ventana_registro, textvariable=rut).grid(row=0, column=1) tk.Label(ventana_registro, text='Nombre:').grid(row=1, column=0) tk.Entry(ventana_registro, textvariable=nombre).grid(row=1, column=1) tk.Label(ventana_registro, text='Dirección:').grid(row=2, column=0) tk.Entry(ventana_registro, textvariable=direccion).grid(row=2, column=1) tk.Label(ventana_registro, text='Teléfono:').grid(row=3, column=0) tk.Entry(ventana_registro, textvariable=telefono).grid(row=3, column=1) # Crear botones para registrar cliente def registrar(): try: cursor.execute('INSERT INTO TablaClientes (Rut, Nombre, Direccion, Telefono) VALUES (?, ?, ?, ?)', (rut.get(), nombre.get(), direccion.get(), telefono.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente registrado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_registro, text='Registrar', command=registrar).grid(row=4, column=0) # Crear botones para modificar y eliminar cliente def modificar(): try: cursor.execute('UPDATE TablaClientes SET Rut = ?, Nombre = ?, Direccion = ?, Telefono = ? WHERE Id = ?', (rut.get(), nombre.get(), direccion.get(), telefono.get(), 1)) conn.commit() messagebox.showinfo('Éxito', 'Cliente modificado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) def eliminar(): try: cursor.execute('DELETE FROM TablaClientes WHERE Id = ?', (1,)) conn.commit() messagebox.showinfo('Éxito', 'Cliente eliminado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_registro, text='Modificar', command=modificar).grid(row=4, column=1) tk.Button(ventana_registro, text='Eliminar', command=eliminar).grid(row=4, column=2) # Función para mostrar clientes def mostrar_clientes(): try: cursor.execute('SELECT * FROM TablaClientes') clientes = cursor.fetchall() texto = '' for cliente in clientes: texto += f'Id: {cliente[0]}\nRut: {cliente[1]}\nNombre: {cliente[2]}\nDirección: {cliente[3]}\nTeléfono: {cliente[4]}\n\n' texto_area.delete(1.0, tk.END) texto_area.insert(tk.END, texto) except Exception as e: messagebox.showerror('Error', str(e)) # Función para salir def salir(): root.destroy() # Crear ventana principal root = tk.Tk() root.title('Sistema de Clientes') # Crear menú principal menubar = tk.Menu(root) root.config(menu=menubar) # Crear menú "Archivo" archivo_menu = tk.Menu(menubar, tearoff=0) menubar.add_cascade(label='Archivo', menu=archivo_menu) archivo_menu.add_command(label='Crear Base de Datos', command=crear_base_datos) archivo_menu.add_command(label='Eliminar Base de Datos', command=eliminar_base_datos) archivo_menu.add_separator() archivo_menu.add_command(label='Salir', command=salir) # Crear menú "Cliente" cliente_menu = tk.Menu(menubar, tearoff=0) menubar.add_cascade(label='Cliente', menu=cliente_menu) cliente_menu.add_command(label='Registro de Clientes', command=registrar_cliente) # Crear menú "Ayuda" ayuda_menu = tk.Menu(menubar, tearoff=0) menubar.add_cascade(label='Ayuda', menu=ayuda_menu) ayuda_menu.add_command(label='Acerca de...', command=lambda: messagebox.showinfo('Acerca de...', 'Versión 1.0')) # Crear botones para CRUD botones_frame = tk.Frame(root) botones_frame.pack(side=tk.RIGHT) tk.Button(botones_frame, text='Crear Base de Datos Clientes', command=crear_base_datos).pack(padx=10, pady=10) tk.Button(botones_frame, text='Eliminar Base de Datos Clientes', command=eliminar_base_datos).pack(padx=10, pady=10) # Crear área de texto para mostrar clientes texto_area = tk.Text(root) texto_area.pack(fill=tk.BOTH, expand=True) # Crear botón para mostrar clientes tk.Button(root, text='Mostrar Clientes', command=mostrar_clientes).pack(padx=10, pady=10) # Crear botón para salir tk.Button(root, text='Salir', command=salir).pack(padx=10, pady=10) # Mostrar ventana principal root.mainloop() ``` Este código crea una ventana principal con un menú desplegable en la parte superior, un área de texto en el centro para mostrar clientes y botones para CRUD en la parte derecha. El menú "Archivo" tiene opciones para crear y eliminar la base de datos, mientras que el menú "Cliente" tiene una opción para registrar clientes. El menú "Ayuda" tiene una opción para mostrar información sobre la versión del sistema. El área de texto muestra los clientes registrados en la base de datos.

Python
View
generate functionSat, 30 Nov 2024

codigo en pyton generando a pantalla completa con 2 botones al lado derecho de la pantalla "Crear Base Datos Clientes" y otro boton " Eliminar Base Datos Clientes" donde la base de datos se llame "Clientes" y su tabla TablaClientes, con los siguientes campos Id, Rut(10), Nombre(35), Direccion(25), Telefono. ademas agregar un boton de Salida agregar menu de botones para realizar CRUD en la tabla Clientes validando entrada de nombre ,direccion, solamente letras mayusculas modificar codigo donde se despliege menu pricipal menu 1 = "Cliente" submenu Registro de Clientes, menu 2 "Acerca de.." version de sistema, menu 3 = "Salida" el menu desplegable en la parte superior de la pantalla menu desplegable sin boton en una sola pantalla se realice el CRUD modificar el menu a barra de menu modificar codigo donde menu "Registro de Clientes" abra una pantalla con el tamaño segun las proporciones a los datos que ingresara el usuario y en ella se ralice el CRUD con sus botones respectivos ah

Aquí te muestro el código modificado en Python utilizando la biblioteca Tkinter para crear la interfaz gráfica: ```python import tkinter as tk from tkinter import ttk, messagebox import sqlite3 # Conectar a la base de datos conn = sqlite3.connect('Clientes.db') cursor = conn.cursor() # Crear tabla si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') # Función para crear base de datos def crear_base_datos(): try: conn.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') messagebox.showinfo('Éxito', 'Base de datos creada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar base de datos def eliminar_base_datos(): try: conn.execute('DROP TABLE TablaClientes') messagebox.showinfo('Éxito', 'Base de datos eliminada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para registrar cliente def registrar_cliente(): ventana_registro = tk.Toplevel(root) ventana_registro.title('Registro de Clientes') # Obtener tamaño de la ventana según los datos ingresados def obtener_tamaño(): return max(400, len(nombre.get()) * 10 + 100, len(direccion.get()) * 10 + 100) # Crear etiquetas y campos de texto tk.Label(ventana_registro, text='Rut:').grid(row=0, column=0) rut = tk.Entry(ventana_registro) rut.grid(row=0, column=1) tk.Label(ventana_registro, text='Nombre:').grid(row=1, column=0) nombre = tk.Entry(ventana_registro) nombre.grid(row=1, column=1) tk.Label(ventana_registro, text='Direccion:').grid(row=2, column=0) direccion = tk.Entry(ventana_registro) direccion.grid(row=2, column=1) tk.Label(ventana_registro, text='Telefono:').grid(row=3, column=0) telefono = tk.Entry(ventana_registro) telefono.grid(row=3, column=1) # Crear botones tk.Button(ventana_registro, text='Guardar', command=lambda: guardar_cliente(rut, nombre, direccion, telefono)).grid(row=4, column=0) tk.Button(ventana_registro, text='Cancelar', command=ventana_registro.destroy).grid(row=4, column=1) # Obtener tamaño de la ventana ventana_registro.geometry(f'400x{obtener_tamaño()}') # Función para guardar cliente def guardar_cliente(rut, nombre, direccion, telefono): try: if not nombre.get().isalpha() or not direccion.get().isalpha(): messagebox.showerror('Error', 'Nombre y dirección deben ser solo letras') return cursor.execute('INSERT INTO TablaClientes (Rut, Nombre, Direccion, Telefono) VALUES (?, ?, ?, ?)', (rut.get(), nombre.get(), direccion.get(), telefono.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente registrado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar cliente def eliminar_cliente(): try: ventana_eliminar = tk.Toplevel(root) ventana_eliminar.title('Eliminar Cliente') # Crear etiquetas y campos de texto tk.Label(ventana_eliminar, text='Id del cliente:').grid(row=0, column=0) id_cliente = tk.Entry(ventana_eliminar) id_cliente.grid(row=0, column=1) # Crear botones tk.Button(ventana_eliminar, text='Eliminar', command=lambda: eliminar_cliente_db(id_cliente)).grid(row=1, column=0) tk.Button(ventana_eliminar, text='Cancelar', command=ventana_eliminar.destroy).grid(row=1, column=1) except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar cliente de la base de datos def eliminar_cliente_db(id_cliente): try: cursor.execute('DELETE FROM TablaClientes WHERE Id = ?', (id_cliente.get(),)) conn.commit() messagebox.showinfo('Éxito', 'Cliente eliminado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para actualizar cliente def actualizar_cliente(): try: ventana_actualizar = tk.Toplevel(root) ventana_actualizar.title('Actualizar Cliente') # Crear etiquetas y campos de texto tk.Label(ventana_actualizar, text='Id del cliente:').grid(row=0, column=0) id_cliente = tk.Entry(ventana_actualizar) id_cliente.grid(row=0, column=1) tk.Label(ventana_actualizar, text='Rut:').grid(row=1, column=0) rut = tk.Entry(ventana_actualizar) rut.grid(row=1, column=1) tk.Label(ventana_actualizar, text='Nombre:').grid(row=2, column=0) nombre = tk.Entry(ventana_actualizar) nombre.grid(row=2, column=1) tk.Label(ventana_actualizar, text='Direccion:').grid(row=3, column=0) direccion = tk.Entry(ventana_actualizar) direccion.grid(row=3, column=1) tk.Label(ventana_actualizar, text='Telefono:').grid(row=4, column=0) telefono = tk.Entry(ventana_actualizar) telefono.grid(row=4, column=1) # Crear botones tk.Button(ventana_actualizar, text='Actualizar', command=lambda: actualizar_cliente_db(id_cliente, rut, nombre, direccion, telefono)).grid(row=5, column=0) tk.Button(ventana_actualizar, text='Cancelar', command=ventana_actualizar.destroy).grid(row=5, column=1) except Exception as e: messagebox.showerror('Error', str(e)) # Función para actualizar cliente en la base de datos def actualizar_cliente_db(id_cliente, rut, nombre, direccion, telefono): try: if not nombre.get().isalpha() or not direccion.get().isalpha(): messagebox.showerror('Error', 'Nombre y dirección deben ser solo letras') return cursor.execute('UPDATE TablaClientes SET Rut = ?, Nombre = ?, Direccion = ?, Telefono = ? WHERE Id = ?', (rut.get(), nombre.get(), direccion.get(), telefono.get(), id_cliente.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente actualizado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para mostrar clientes def mostrar_clientes(): try: ventana_mostrar = tk.Toplevel(root) ventana_mostrar.title('Mostrar Clientes') # Crear etiquetas y campos de texto tk.Label(ventana_mostrar, text='Id del cliente:').grid(row=0, column=0) id_cliente = tk.Entry(ventana_mostrar) id_cliente.grid(row=0, column=1) # Crear botones tk.Button(ventana_mostrar, text='Mostrar', command=lambda: mostrar_cliente_db(id_cliente)).grid(row=1, column=0) tk.Button(ventana_mostrar, text='Cancelar', command=ventana_mostrar.destroy).grid(row=1, column=1) except Exception as e: messagebox.showerror('Error', str(e)) # Función para mostrar cliente en la base de datos def mostrar_cliente_db(id_cliente): try: cursor.execute('SELECT * FROM TablaClientes WHERE Id = ?', (id_cliente.get(),)) cliente = cursor.fetchone() if cliente: messagebox.showinfo('Cliente', f'Id: {cliente[0]}, Rut: {cliente[1]}, Nombre: {cliente[2]}, Direccion: {cliente[3]}, Telefono: {cliente[4]}') else: messagebox.showerror('Error', 'Cliente no encontrado') except Exception as e: messagebox.showerror('Error', str(e)) # Crear menú principal menubar = tk.Menu(root) root.config(menu=menubar) # Crear menú "Archivo" archivo_menu = tk.Menu(menubar, tearoff=0) archivo_menu.add_command(label='Crear Base Datos Clientes', command=crear_base_datos) archivo_menu.add_command(label='Eliminar Base Datos Clientes', command=eliminar_base_datos) menubar.add_cascade(label='Archivo', menu=archivo_menu) # Crear menú "Cliente" cliente_menu = tk.Menu(menubar, tearoff=0) cliente_menu.add_command(label='Registro de Clientes', command=registrar_cliente) cliente_menu.add_command(label='Eliminar Cliente', command=eliminar_cliente) cliente_menu.add_command(label='Actualizar Cliente', command=actualizar_cliente) cliente_menu.add_command(label='Mostrar Cliente', command=mostrar_clientes) menubar.add_cascade(label='Cliente', menu=cliente_menu) # Crear menú "Ayuda" ayuda_menu = tk.Menu(menubar, tearoff=0) ayuda_menu.add_command(label='Acerca de...', command=lambda: messagebox.showinfo('Acerca de...', 'Versión 1.0')) menubar.add_cascade(label='Ayuda', menu=ayuda_menu) # Crear botones en la pantalla principal tk.Button(root, text='Crear Base Datos Clientes', command=crear_base_datos).pack(side=tk.RIGHT) tk.Button(root, text='Eliminar Base Datos Clientes', command=eliminar_base_datos).pack(side=tk.RIGHT) tk.Button(root, text='Salir', command=root.destroy).pack(side=tk.RIGHT) # Mostrar la pantalla principal root.mainloop() ``` Este código crea una pantalla principal con un menú desplegable en la parte superior que contiene las opciones "Archivo", "Cliente" y "Ayuda". El menú "Archivo" contiene las opciones "Crear Base Datos Clientes" y "Eliminar Base Datos Clientes". El menú "Cliente" contiene las opciones "Registro de Clientes", "Eliminar Cliente", "Actualizar Cliente" y "Mostrar Cliente". El menú "Ayuda" contiene la opción "Acerca de...". Cuando se selecciona una opción del menú, se abre una nueva ventana con los campos y botones necesarios para realizar la acción correspondiente. Por ejemplo, cuando se selecciona la opción "Registro de Clientes", se abre una ventana con campos para ingresar el rut, nombre, dirección y teléfono del cliente, y un botón para guardar el cliente en la base de datos. Es importante mencionar que este código utiliza la biblioteca sqlite3 para interactuar con la base de datos, y que la base de datos se crea automáticamente si no existe.

Python
View
generate functionSat, 30 Nov 2024

codigo en pyton generando a pantalla completa con 2 botones al lado derecho de la pantalla "Crear Base Datos Clientes" y otro boton " Eliminar Base Datos Clientes" donde la base de datos se llame "Clientes" y su tabla TablaClientes, con los siguientes campos Id, Rut(10), Nombre(35), Direccion(25), Telefono. ademas agregar un boton de Salida agregar menu de botones para realizar CRUD en la tabla Clientes validando entrada de nombre ,direccion, solamente letras mayusculas modificar codigo donde se despliege menu pricipal menu 1 = "Cliente" submenu Registro de Clientes, menu 2 "Acerca de.." version de sistema, menu 3 = "Salida" el menu desplegable en la parte superior de la pantalla menu desplegable sin boton en una sola pantalla se realice el CRUD modificar el menu a barra de menu modificar codigo donde menu "Registro de Clientes" abra una pantalla con el tamaño segun las proporciones a los datos que ingresara el usuario y en ella se ralice el CRUD con sus botones respectivos

Aquí te muestro el código modificado en Python utilizando la biblioteca Tkinter para crear la interfaz gráfica: ```python import tkinter as tk from tkinter import ttk, messagebox import sqlite3 # Conectar a la base de datos conn = sqlite3.connect('Clientes.db') cursor = conn.cursor() # Crear tabla si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') # Función para crear base de datos def crear_base_datos(): try: conn.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') messagebox.showinfo('Éxito', 'Base de datos creada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar base de datos def eliminar_base_datos(): try: conn.execute('DROP TABLE TablaClientes') messagebox.showinfo('Éxito', 'Base de datos eliminada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para registrar cliente def registrar_cliente(): ventana_registro = tk.Toplevel(root) ventana_registro.title('Registro de Clientes') # Obtener tamaño de la ventana según los datos ingresados def obtener_tamaño(): return max(400, len(nombre.get()) * 10 + 100, len(direccion.get()) * 10 + 100) # Crear etiquetas y campos de texto tk.Label(ventana_registro, text='Rut:').grid(row=0, column=0) tk.Label(ventana_registro, text='Nombre:').grid(row=1, column=0) tk.Label(ventana_registro, text='Direccion:').grid(row=2, column=0) tk.Label(ventana_registro, text='Telefono:').grid(row=3, column=0) rut = tk.Entry(ventana_registro) nombre = tk.Entry(ventana_registro) direccion = tk.Entry(ventana_registro) telefono = tk.Entry(ventana_registro) rut.grid(row=0, column=1) nombre.grid(row=1, column=1) direccion.grid(row=2, column=1) telefono.grid(row=3, column=1) # Crear botones de CRUD def crear_registro(): try: cursor.execute('INSERT INTO TablaClientes (Rut, Nombre, Direccion, Telefono) VALUES (?, ?, ?, ?)', (rut.get(), nombre.get(), direccion.get(), telefono.get())) conn.commit() messagebox.showinfo('Éxito', 'Registro creado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) def leer_registro(): try: registros = cursor.execute('SELECT * FROM TablaClientes').fetchall() messagebox.showinfo('Registros', str(registros)) except Exception as e: messagebox.showerror('Error', str(e)) def actualizar_registro(): try: cursor.execute('UPDATE TablaClientes SET Rut = ?, Nombre = ?, Direccion = ?, Telefono = ? WHERE Id = ?', (rut.get(), nombre.get(), direccion.get(), telefono.get(), 1)) conn.commit() messagebox.showinfo('Éxito', 'Registro actualizado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) def eliminar_registro(): try: cursor.execute('DELETE FROM TablaClientes WHERE Id = ?', (1,)) conn.commit() messagebox.showinfo('Éxito', 'Registro eliminado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_registro, text='Crear', command=crear_registro).grid(row=4, column=0) tk.Button(ventana_registro, text='Leer', command=leer_registro).grid(row=4, column=1) tk.Button(ventana_registro, text='Actualizar', command=actualizar_registro).grid(row=4, column=2) tk.Button(ventana_registro, text='Eliminar', command=eliminar_registro).grid(row=4, column=3) # Establecer tamaño de la ventana ventana_registro.geometry(f'{obtener_tamaño()}x200') # Función para mostrar acerca de def acerca_de(): messagebox.showinfo('Acerca de', 'Versión 1.0') # Crear ventana principal root = tk.Tk() root.title('Sistema de Clientes') # Crear menú menubar = tk.Menu(root) root.config(menu=menubar) menu_cliente = tk.Menu(menubar, tearoff=0) menu_cliente.add_command(label='Registro de Clientes', command=registrar_cliente) menu_cliente.add_separator() menu_cliente.add_command(label='Salir', command=root.quit) menubar.add_cascade(label='Cliente', menu=menu_cliente) menu_acerca = tk.Menu(menubar, tearoff=0) menu_acerca.add_command(label='Acerca de...', command=acerca_de) menubar.add_cascade(label='Acerca de...', menu=menu_acerca) # Crear botones de base de datos tk.Button(root, text='Crear Base Datos Clientes', command=crear_base_datos).pack(side=tk.RIGHT) tk.Button(root, text='Eliminar Base Datos Clientes', command=eliminar_base_datos).pack(side=tk.RIGHT) # Crear botón de salir tk.Button(root, text='Salir', command=root.quit).pack(side=tk.BOTTOM) # Mostrar ventana principal root.mainloop() ``` Este código crea una ventana principal con un menú desplegable que contiene opciones para registrar clientes, acerca de y salir. El menú "Registro de Clientes" abre una nueva ventana con campos de texto para ingresar los datos del cliente y botones para crear, leer, actualizar y eliminar registros. La ventana se ajusta según el tamaño de los campos de texto ingresados.

Python
View
generate functionSat, 30 Nov 2024

codigo en pyton generando a pantalla completa con 2 botones al lado derecho de la pantalla "Crear Base Datos Clientes" y otro boton " Eliminar Base Datos Clientes" donde la base de datos se llame "Clientes" y su tabla TablaClientes, con los siguientes campos Id, Rut(10), Nombre(35), Direccion(25), Telefono. ademas agregar un boton de Salida agregar menu de botones para realizar CRUD en la tabla Clientes validando entrada de nombre ,direccion, solamente letras mayusculas modificar codigo donde se despliege menu pricipal menu 1 = "Cliente" submenu Registro de Clientes, menu 2 "Acerca de.." version de sistema, menu 3 = "Salida" el menu desplegable en la parte superior de la pantalla menu desplegable sin boton en una sola pantalla se realice el CRUD modificar el menu a barra de menu modificar codigo donde menu "Registro de Clientes" abra una pantalla con el tamaño segun las proporciones a los datos que ingresara el usuario y en ella se ralice el CRUD con sus botones respectivos ah error menubar = tk.Menu(root)

Please keep input under 1000 characters

Python
View
generate functionSat, 30 Nov 2024

abrir base datos Clientes y si no existe crearla

Puedes utilizar la biblioteca `sqlite3` de Python para crear y abrir una base de datos. Aquí te muestro un ejemplo de cómo hacerlo: ```python import sqlite3 def crear_base_datos(): # Conectar a la base de datos conn = sqlite3.connect('clientes.db') # Crear cursor cursor = conn.cursor() # Crear tabla si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS clientes ( id INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT NOT NULL, apellido TEXT NOT NULL, email TEXT NOT NULL, telefono TEXT NOT NULL ) ''') # Confirmar cambios conn.commit() # Cerrar conexión conn.close() # Abrir base de datos def abrir_base_datos(): try: # Conectar a la base de datos conn = sqlite3.connect('clientes.db') # Crear cursor cursor = conn.cursor() # Imprimir mensaje de conexión exitosa print("Conexión exitosa a la base de datos") # Cerrar conexión conn.close() except sqlite3.Error as e: print(f"Error al conectar a la base de datos: {e}") # Ejecutar funciones crear_base_datos() abrir_base_datos() ``` En este código, la función `crear_base_datos()` crea la base de datos `clientes.db` y la tabla `clientes` si no existen. La función `abrir_base_datos()` intenta conectar a la base de datos y, si es exitosa, imprime un mensaje de conexión exitosa. Recuerda que debes tener instalada la biblioteca `sqlite3` en tu entorno de Python. Si no la tienes instalada, puedes hacerlo con pip: ```bash pip install pysqlite3 ```

Python
View
translateSun, 01 Dec 2024

generar con tkinter pantalla para que el usuario imgrese Rut(10) caracteres, Nombre(35)caracteres, Direccion(25)caracteres, validar para digitar solo mayusculas, tamaño pantalla con relacion a los datos que se van a ingresar, gregar boton salida ubicar en el centro de la pantalla

Aquí te muestro un ejemplo de cómo podrías crear una pantalla con tkinter para ingresar los datos solicitados: ```python import tkinter as tk from tkinter import messagebox class Aplicacion: def __init__(self, raiz): self.raiz = raiz self.raiz.title("Ingreso de datos") self.raiz.geometry("400x300") # Tamaño de la pantalla # Crear etiquetas y campos de texto self.etiqueta_rut = tk.Label(raiz, text="Rut:") self.etiqueta_rut.place(x=20, y=20) self.rut = tk.Entry(raiz, width=20) self.rut.place(x=20, y=50) self.etiqueta_nombre = tk.Label(raiz, text="Nombre:") self.etiqueta_nombre.place(x=20, y=80) self.nombre = tk.Entry(raiz, width=35) self.nombre.place(x=20, y=110) self.etiqueta_direccion = tk.Label(raiz, text="Direccion:") self.etiqueta_direccion.place(x=20, y=140) self.direccion = tk.Entry(raiz, width=25) self.direccion.place(x=20, y=170) # Crear botón de salida self.boton_salida = tk.Button(raiz, text="Salir", command=self.salir) self.boton_salida.place(x=20, y=250) # Crear botón de guardar self.boton_guardar = tk.Button(raiz, text="Guardar", command=self.guardar) self.boton_guardar.place(x=150, y=250) def validar_rut(self): rut = self.rut.get() if len(rut) != 10 or not rut.isalpha(): messagebox.showerror("Error", "Rut inválido") return False return True def validar_nombre(self): nombre = self.nombre.get() if len(nombre) > 35: messagebox.showerror("Error", "Nombre demasiado largo") return False return True def validar_direccion(self): direccion = self.direccion.get() if len(direccion) > 25: messagebox.showerror("Error", "Direccion demasiado larga") return False return True def guardar(self): if self.validar_rut() and self.validar_nombre() and self.validar_direccion(): rut = self.rut.get() nombre = self.nombre.get() direccion = self.direccion.get() messagebox.showinfo("Datos guardados", f"Rut: {rut}\nNombre: {nombre}\nDireccion: {direccion}") else: messagebox.showerror("Error", "Por favor, complete los campos correctamente") def salir(self): self.raiz.destroy() if __name__ == "__main__": raiz = tk.Tk() app = Aplicacion(raiz) raiz.mainloop() ``` En este código, se crea una ventana con tkinter y se agregan etiquetas y campos de texto para ingresar los datos solicitados. Se crean también botones para guardar los datos y salir de la aplicación. La función `validar_rut`, `validar_nombre` y `validar_direccion` se utilizan para validar los campos de texto antes de guardar los datos. Si los campos no son válidos, se muestra un mensaje de error. Si los campos son válidos, se muestra un mensaje de confirmación con los datos ingresados.

Python
View
translateSun, 01 Dec 2024

Dim globalReg As String Private lastSearchTerm As String Private lastFoundRow As Integer Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Private Sub banco_Click() FormCuentasporPagar2.Show End Sub Private Sub caja_Click() FormCaja.Show End Sub Private Sub Command1_Click() Unload Me End Sub Private Sub AgregarUsuarios_Click() FormUsuarios.Show End Sub Private Sub Command12_Click() BorrarRegistrosProveedores End Sub Private Sub Command2_Click() ' INDEXAR Tablamateriales x Codigo y Descripcion ' Dim conn As New ADODB.Connection ' conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\materiales2.mdb;" ' Comando SQL para crear índice en CODIGO ' Dim sqlCodigo As String ' sqlCodigo = "CREATE INDEX idx_codigo ON Tablamateriales (CODIGO)" ' conn.Execute sqlCodigo ' Comando SQL para crear índice en DESCRIPCION ' Dim sqlDescripcion As String ' sqlDescripcion = "CREATE INDEX idx_descripcion ON Tablamateriales (DESCRIPCION)" ' conn.Execute sqlDescripcion ' conn.Close ' Set conn = Nothing End Sub Private Sub Command10_Click() BorrarRegistrosProyectos End Sub Private Sub Command11_Click() BorrarRegistrosADO End Sub Private Sub Command3_Click() ProveedorRUT = "" ProveedorRazonSocial = "" ProveedorGiro = "" ProveedorDireccion = "" ProveedorComuna = "" ProveedorTelefono = "" ProveedorCorreo = "" Facturas22.Show End Sub Private Sub Command33_Click() Dim connMateriales2 As ADODB.Connection Dim rsMateriales2 As ADODB.Recordset Dim sql As String ' Crear la conexión ADODB para Access (.mdb) Set connMateriales2 = New ADODB.Connection connMateriales2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\materiales2.mdb;" ' Abrir la conexión connMateriales2.Open ' Iniciar una transacción connMateriales2.BeginTrans ' Crear el Recordset y abrir la tabla TABLAMATERIALES Set rsMateriales2 = New ADODB.Recordset sql = "SELECT * FROM TABLAMATERIALES" rsMateriales2.Open sql, connMateriales2, adOpenKeyset, adLockOptimistic ' Recorrer todos los registros y establecer el campo STOCK a 0 Do Until rsMateriales2.EOF rsMateriales2.Fields("STOCK").Value = 0 rsMateriales2.Update rsMateriales2.MoveNext Loop ' Confirmar la transacción connMateriales2.CommitTrans ' Cerrar el recordset y la conexión rsMateriales2.Close Set rsMateriales2 = Nothing connMateriales2.Close Set connMateriales2 = Nothing MsgBox "Todos los valores de STOCK se han actualizado a 0 en la tabla TABLAMATERIALES." End Sub Private Sub Command44_Click() Dim conn As ADODB.Connection Dim sql As String ' Inicializar la conexión a la base de datos Set conn = New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\FacturasCompra.mdb;" conn.Open ' Definir la consulta SQL para eliminar todos los registros de la tabla sql = "DELETE FROM TablaFacturas" ' Ejecutar la consulta On Error Resume Next conn.Execute sql If Err.Number <> 0 Then MsgBox "Error al eliminar registros: " & Err.Description Err.Clear End If On Error GoTo 0 ' Cerrar la conexión conn.Close Set conn = Nothing MsgBox "Todos los registros han sido eliminados.", vbInformation, "Éxito" End Sub Private Sub Command48_Click() Dim conn As ADODB.Connection Dim sql As String ' Inicializar la conexión a la base de datos Set conn = New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\RegistrosCaja.mdb;" conn.Open ' Definir la consulta SQL para eliminar todos los registros de la tabla sql = "DELETE FROM TablaRegistrosCaja" ' Ejecutar la consulta On Error Resume Next conn.Execute sql If Err.Number <> 0 Then MsgBox "Error al eliminar registros: " & Err.Description Err.Clear End If On Error GoTo 0 ' Cerrar la conexión conn.Close Set conn = Nothing ' Dejar monto en 0 Declarar las variables de conexión y recordset Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String ' Crear el objeto de conexión Set cn = New ADODB.Connection ' Abrir la conexión a la base de datos Access cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Cajas.mdb;" cn.Open ' Definir la consulta SQL para actualizar el campo MONTO a 0 strSQL = "UPDATE TablaCaja SET MONTO = 0" ' Ejecutar la consulta SQL cn.Execute strSQL ' Informar al usuario que los valores han sido actualizados MsgBox "Todos los valores del campo MONTO en la tabla TablaCaja han sido actualizados a 0.", vbInformation, "Actualización Completada" ' Cerrar la conexión cn.Close Set cn = Nothing MsgBox "Todos los registros han sido eliminados.", vbInformation, "Éxito" End Sub Private Sub Command5_Click() Dim conn As ADODB.Connection Dim sql As String ' Inicializar la conexión a la base de datos Set conn = New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\RegistrosDebito.mdb;" conn.Open ' Definir la consulta SQL para eliminar todos los registros de la tabla sql = "DELETE FROM TablaRegistrosDebito" ' Ejecutar la consulta On Error Resume Next conn.Execute sql If Err.Number <> 0 Then MsgBox "Error al eliminar registros: " & Err.Description Err.Clear End If On Error GoTo 0 ' Cerrar la conexión conn.Close Set conn = Nothing ' Dejar monto en 0 Declarar las variables de conexión y recordset Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String ' Crear el objeto de conexión Set cn = New ADODB.Connection ' Abrir la conexión a la base de datos Access cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Debitos.mdb;" cn.Open ' Definir la consulta SQL para actualizar el campo MONTO a 0 strSQL = "UPDATE TablaDebitos SET MONTO = 0" ' Ejecutar la consulta SQL cn.Execute strSQL ' Informar al usuario que los valores han sido actualizados MsgBox "Todos los valores del campo MONTO en la tabla TablaDebito han sido actualizados a 0.", vbInformation, "Actualización Completada" ' Cerrar la conexión cn.Close Set cn = Nothing MsgBox "Todos los registros han sido eliminados.", vbInformation, "Éxito" End Sub Private Sub Command8_Click() Dim conn As ADODB.Connection Dim sql As String ' Inicializar la conexión a la base de datos Set conn = New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\RegistrosCredito.mdb;" conn.Open ' Definir la consulta SQL para eliminar todos los registros de la tabla sql = "DELETE FROM TablaRegistrosCredito" ' Ejecutar la consulta On Error Resume Next conn.Execute sql If Err.Number <> 0 Then MsgBox "Error al eliminar registros: " & Err.Description Err.Clear End If On Error GoTo 0 ' Cerrar la conexión conn.Close Set conn = Nothing ' Dejar monto en 0 Declarar las variables de conexión y recordset Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String ' Crear el objeto de conexión Set cn = New ADODB.Connection ' Abrir la conexión a la base de datos Access cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Creditos.mdb;" cn.Open ' Definir la consulta SQL para actualizar el campo MONTO a 0 strSQL = "UPDATE TablaCredito SET MONTO = 0" ' Ejecutar la consulta SQL cn.Execute strSQL ' Informar al usuario que los valores han sido actualizados MsgBox "Todos los valores del campo MONTO en la tabla TablaCredito han sido actualizados a 0.", vbInformation, "Actualización Completada" ' Cerrar la conexión cn.Close Set cn = Nothing MsgBox "Todos los registros han sido eliminados.", vbInformation, "Éxito" End Sub Private Sub EliminarUsuario_Click() End Sub Private Sub facturascompra_Click() Facturas22.Show End Sub Private Sub facturasdecompras_Click() ProveedorRUT = "" ProveedorRazonSocial = "" ProveedorGiro = "" ProveedorDireccion = "" ProveedorComuna = "" ProveedorTelefono = "" ProveedorCorreo = "" Facturas22.Show End Sub Private Sub fechavencimiento_Click() FormCuentasPorPagar.Show End Sub Private Sub impimirreporrtefacturas_Click() ReporteFacturasPDF.Show End Sub Private Sub MantenciondeClientes_Click() MantencionClientes.Show End Sub Private Sub MenuProductos_Click() End Sub Private Sub mantenciondemateriales_Click() FormMateriales.Show End Sub Private Sub mantenciondeproveedores_Click() RegProveedores.Show End Sub Private Sub mantencionproyectos_Click() RegProyectos.Show End Sub Private Sub MenuSalidaSistema_Click() Unload Me End Sub Private Sub registrodeservicios_Click() CreaciondeServicios.Show End Sub Private Sub movimientoscaja_Click() FormreporteCajaxCodigo.Show End Sub Private Sub movimientoscredito_Click() FormReporteCreditoxCodigo.Show End Sub Private Sub movimientosdebito_Click() FormReporteDebitoxCodigo.Show End Sub Private Sub nuevo_Click() FormUsuarios.Show End Sub Private Sub registromateriales_Click() FormMateriales.Show End Sub ' Función para buscar y borrar el registro en la base de datos usando REGISTRO Private Sub BorrarRegistro(globalReg As String) On Error GoTo ErrorHandler ' Eliminar el registro de la base de datos TABLAPROYECTOS usando REGISTRO Dim conn As Object Set conn = CreateObject("ADODB.Connection") ' Configurar la cadena de conexión conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Proyectos.mdb;" ' Abrir la conexión conn.Open ' Verificar si la conexión se abrió correctamente If conn.State = adStateOpen Then ' Construir la consulta DELETE usando REGISTRO Dim sqlDelete As String sqlDelete = "DELETE FROM TABLAPROYECTOS WHERE REGISTRO = " & globalReg ' Ejecutar la consulta DELETE conn.Execute sqlDelete MsgBox "Registro eliminado correctamente.", vbInformation Else MsgBox "Error al abrir la conexión a la base de datos.", vbCritical End If ' Cerrar la conexión conn.Close Set conn = Nothing Exit Sub ErrorHandler: MsgBox "Error al borrar el registro en la base de datos: " & Err.Description, vbCritical ' Cerrar la conexión si está abierta If conn.State = adStateOpen Then conn.Close End If Set conn = Nothing End Sub Private Sub MSFlexGrid1_DblClick() Static previousRow As Integer Static previousCol As Integer ' Obtener la fila y columna actual Dim rowIndex As Integer Dim colIndex As Integer rowIndex = MSFlexGrid1.row colIndex = 4 ' Suponiendo que REGISTRO está en la primera columna (columna 0) ' Verificar si se hizo doble clic en la columna 4 If MSFlexGrid1.col = colIndex Then ' Restaurar el color original de la celda anteriormente seleccionada If previousRow <> 0 And previousCol <> 0 Then MSFlexGrid1.row = previousRow MSFlexGrid1.col = previousCol MSFlexGrid1.CellBackColor = MSFlexGrid1.BackColor ' Restaurar color de fondo original MSFlexGrid1.CellForeColor = MSFlexGrid1.ForeColor ' Restaurar color de texto original End If ' Obtener el número de registro (REGISTRO) de la primera columna de la fila seleccionada globalReg = MSFlexGrid1.TextMatrix(rowIndex, 0) ' Mostrar el número de registro en un mensaje (opcional) ' MsgBox "Número de registro seleccionado: " & globalReg ' Cambiar el color de fondo y el color de texto de la celda seleccionada MSFlexGrid1.row = rowIndex MSFlexGrid1.col = colIndex MSFlexGrid1.CellBackColor = &H8000000D ' Color de fondo: vbYellow MSFlexGrid1.CellForeColor = &H0& ' Color de texto: vbBlack ' Solicitar nuevo valor para la celda Dim newValue As String newValue = InputBox("Ingrese nueva cantidad ", "Modificar Valor") ' Verificar si se ingresó un valor numérico válido Dim numericValue As Integer If IsNumeric(newValue) Then numericValue = CInt(newValue) ' Convertir a Integer ' Actualizar en el MSFlexGrid MSFlexGrid1.TextMatrix(rowIndex, colIndex) = CStr(numericValue) ' Convertir a cadena y actualizar ' Actualizar también en la base de datos ActualizarBaseDeDatos numericValue Else MsgBox "Ingrese un valor numérico válido.", vbExclamation End If ' Actualizar la celda anterior previousRow = rowIndex previousCol = colIndex End If End Sub Private Sub ActualizarBaseDeDatos(ByVal newValue As Integer) ' Ruta de tu base de datos de Access Const DB_PATH As String = "E:\ProyectosVisual Basic\Proyecto4\Project\Proyectos.mdb" ' Construir la cadena SQL para actualizar CANMAT con parámetros Dim strSQL As String strSQL = "UPDATE TABLAPROYECTOS SET CANMAT = ? WHERE REGISTRO = ?" ' Mostrar el SQL para depuración Debug.Print "SQL a ejecutar: " & strSQL ' Inicializar la conexión ADODB usando CreateObject Dim conn As Object Set conn = CreateObject("ADODB.Connection") On Error GoTo ErrorHandler ' Configurar la cadena de conexión conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB_PATH & ";" ' Abrir la conexión conn.Open ' Crear objeto Command Dim cmd As Object Set cmd = CreateObject("ADODB.Command") ' Asignar conexión al comando Set cmd.ActiveConnection = conn ' Configurar el comando SQL con parámetros cmd.CommandType = 1 ' adCmdText cmd.CommandText = strSQL ' Agregar parámetros cmd.Parameters.Append cmd.CreateParameter("param1", adInteger, adParamInput, , newValue) cmd.Parameters.Append cmd.CreateParameter("param2", adVarChar, adParamInput, 50, globalReg) ' Ajusta el tamaño según tu campo REGISTRO ' Ejecutar la consulta SQL cmd.Execute ' Cerrar la conexión conn.Close ' Liberar recursos Set cmd = Nothing Set conn = Nothing Exit Sub ErrorHandler: MsgBox "Error al ejecutar la consulta SQL: " & Err.Description, vbExclamation If conn.State = 1 Then conn.Close ' adStateOpen Set cmd = Nothing Set conn = Nothing End Sub Private Sub registroproveedores_Click() RegProveedores.Show End Sub Private Sub RProyectos_Click() RegProyectos.Show End Sub Function BorrarRegistrosADO() As Boolean On Error GoTo ErrorHandler Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim sql As String Dim rsAntes As ADODB.Recordset Dim rsDespues As ADODB.Recordset Dim totalAntes As Integer Dim totalDespues As Integer ' Establecer la cadena de conexión para el archivo MDF cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Materiales2.mdb;" ' Abrir la conexión cn.Open ' Configurar el comando y el recordset para contar registros antes del borrado cmd.ActiveConnection = cn cmd.CommandType = adCmdText ' Consulta para contar registros antes del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TABLAMATERIALES" cmd.CommandText = sql Set rsAntes = cmd.Execute ' Obtener el número total de registros antes del borrado If Not rsAntes.EOF Then totalAntes = rsAntes.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsAntes.Close Set rsAntes = Nothing ' Configurar el comando para borrar todos los registros de la tabla TABLAMATERIALES sql = "DELETE FROM TABLAMATERIALES" cmd.CommandText = sql ' Ejecutar la consulta de borrado cmd.Execute ' Consulta para contar registros después del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TABLAMATERIALES" cmd.CommandText = sql Set rsDespues = cmd.Execute ' Obtener el número total de registros después del borrado If Not rsDespues.EOF Then totalDespues = rsDespues.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsDespues.Close Set rsDespues = Nothing ' Cerrar la conexión cn.Close Set cn = Nothing ' Mostrar mensaje de éxito si se borraron registros MsgBox totalAntes & " registros antes del borrado. Ahora hay " & totalDespues & " registros en la tabla TABLAMATERIALES.", vbInformation ' Indicar éxito BorrarRegistrosADO = True Exit Function ErrorHandler: ' Manejar el error si ocurre MsgBox "Error al intentar borrar registros de la tabla TABLAMATERIALES: " & Err.Description, vbExclamation ' Cerrar la conexión si está abierta If cn.State = adStateOpen Then cn.Close End If Set cn = Nothing BorrarRegistrosADO = False End Function Function BorrarRegistrosProyectos() As Boolean On Error GoTo ErrorHandler Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim sql As String Dim rsAntes As ADODB.Recordset Dim rsDespues As ADODB.Recordset Dim totalAntes As Integer Dim totalDespues As Integer ' Establecer la cadena de conexión para el archivo MDF cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Proyectos.mdb;" ' Abrir la conexión cn.Open ' Configurar el comando y el recordset para contar registros antes del borrado cmd.ActiveConnection = cn cmd.CommandType = adCmdText ' Consulta para contar registros antes del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TABLAPROYECTOS" cmd.CommandText = sql Set rsAntes = cmd.Execute ' Obtener el número total de registros antes del borrado If Not rsAntes.EOF Then totalAntes = rsAntes.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsAntes.Close Set rsAntes = Nothing ' Configurar el comando para borrar todos los registros de la tabla TABLAPROYECTOS sql = "DELETE FROM TABLAPROYECTOS" cmd.CommandText = sql ' Ejecutar la consulta de borrado cmd.Execute ' Consulta para contar registros después del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TABLAPROYECTOS" cmd.CommandText = sql Set rsDespues = cmd.Execute ' Obtener el número total de registros después del borrado If Not rsDespues.EOF Then totalDespues = rsDespues.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsDespues.Close Set rsDespues = Nothing ' Cerrar la conexión cn.Close Set cn = Nothing ' Mostrar mensaje de éxito si se borraron registros MsgBox totalAntes & " registros antes del borrado. Ahora hay " & totalDespues & " registros en la tabla TABLAPROYECTOS.", vbInformation ' Indicar éxito BorrarRegistrosProyectos = True Exit Function ErrorHandler: ' Manejar el error si ocurre MsgBox "Error al intentar borrar registros de la tabla TABLAPROYECTOS: " & Err.Description, vbExclamation ' Cerrar la conexión si está abierta If cn.State = adStateOpen Then cn.Close End If Set cn = Nothing BorrarRegistrosProyectos = False End Function Function BorrarRegistrosProveedores() As Boolean On Error GoTo ErrorHandler Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim sql As String Dim rsAntes As ADODB.Recordset Dim rsDespues As ADODB.Recordset Dim totalAntes As Integer Dim totalDespues As Integer ' Establecer la cadena de conexión para el archivo MDF cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Proveedores.mdb;" cn.Open ' Configurar el comando y el recordset para contar registros antes del borrado cmd.ActiveConnection = cn cmd.CommandType = adCmdText ' Consulta para contar registros antes del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TablaProveedores" cmd.CommandText = sql Set rsAntes = cmd.Execute ' Obtener el número total de registros antes del borrado If Not rsAntes.EOF Then totalAntes = rsAntes.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsAntes.Close Set rsAntes = Nothing ' Configurar el comando para borrar todos los registros de la tabla TablaProveedores sql = "DELETE FROM TablaProveedores" cmd.CommandText = sql ' Ejecutar la consulta de borrado cmd.Execute ' Consulta para contar registros después del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TablaProveedores" cmd.CommandText = sql Set rsDespues = cmd.Execute ' Obtener el número total de registros después del borrado If Not rsDespues.EOF Then totalDespues = rsDespues.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsDespues.Close Set rsDespues = Nothing ' Cerrar la conexión cn.Close Set cn = Nothing ' Mostrar mensaje de éxito si se borraron registros MsgBox totalAntes & " registros antes del borrado. Ahora hay " & totalDespues & " registros en la tabla TablaProveedores.", vbInformation ' Indicar éxito BorrarRegistrosProveedores = True Exit Function ErrorHandler: ' Manejar el error si ocurre MsgBox "Error al intentar borrar registros de la tabla TablaProveedores: " & Err.Description, vbExclamation ' Cerrar la conexión si está abierta If cn.State = adStateOpen Then cn.Close End If Set cn = Nothing BorrarRegistrosProveedores = False End Function Private Sub ordenadaporbanco_Click() FormCuentasporPagar2.Show End Sub Private Sub reportedescripcion_Click() ReporteMaterialesxDescripcion.Show End Sub Private Sub reportematerialesdescripcion_Click() ReporteMaterialesxDescripcion.Show End Sub Private Sub reportematerialesxfechacompra_Click() ReporteMaterialesxFechaCompras.Show End Sub Private Sub reportematerialesxproveedor_Click() ReporteMaterialesporProveedor.Show End Sub Private Sub reportexfechafactura_Click() ReporteMaterialesxFactura.Show End Sub Private Sub targetadecredito_Click() FormCredito.Show End Sub Private Sub targetadedebito_Click() FormBanco.Show End Sub Private Sub cmdBuscar_Click() If TextRut.Text = "" Then MsgBox "El campo Rut debe ser llenado", vbInformation, "Aviso": TextRut.SetFocus: Exit Sub TextNombre = "" TextDireccion = "" With Rsclientes .Requery .Find "RUT='" & Trim(TextRut.Text) & "'" If .EOF Then MsgBox "No encontado", vbExclamation TextRut.Text = "" TextRut.SetFocus CmdNuevoCliente.Enabled = True Else CmdNuevoCliente.Enabled = False TextNombre.Text = .Fields("NOMBRE").Value TextDireccion.Text = .Fields("DIRECCION").Value CmdEliminar.Enabled = True CmdModificar.Enabled = True End If End With End Sub Private Sub cmdEliminar_Click() If MsgBox("Esta seguro que desea eliminar este cliente ? ", vbQuestion + vbYesNo) = vbYes Then Rsclientes.Delete Limpiar MsgBox "Cliente eliminado correctamente", vbInformation, "Aviso" TextRut.SetFocus Else Limpiar TextRut.SetFocus End If End Sub Private Sub cmdModificar_Click() If TextNombre.Text = "" Then MsgBox "El campo Nombre debe ser llenado", vbInformation, "Aviso": TextNombre.SetFocus: Exit Sub If TextDireccion.Text = "" Then MsgBox "El campo Direccion debe ser llenado", vbInformation, "Aviso": TextDireccion.SetFocus: Exit Sub If MsgBox("Esta seguro que desea modificar los datos de este cliente ? ", vbQuestion + vbYesNo) = vbYes Then With rscliente Rsclientes.Fields("NOMBRE").Value = TextNombre.Text Rsclientes.Fields("DIRECCION").Value = TextDireccion.Text Rsclientes.Update End With End If Limpiar TextRut.SetFocus End Sub Private Sub CmdNuevoCliente_Click() If TextRut.Text = "" Then MsgBox "El campo Rut debe ser llenado", vbInformation, "Aviso": TextRut.SetFocus: Exit Sub If TextNombre.Text = "" Then MsgBox "El campo Nombre debe ser llenado", vbInformation, "Aviso": TextNombre.SetFocus: Exit Sub If TextDireccion.Text = "" Then MsgBox "El campo Direccion debe ser llenado", vbInformation, "Aviso": TextDireccion.SetFocus: Exit Sub With Rsclientes .Requery .Find "RUT='" & Trim(TextRut.Text) & "'" If .EOF Then .Requery .AddNew !RUT = TextRut.Text !NOMBRE = TextNombre.Text !direccion = TextDireccion.Text .Update .Requery MsgBox "Cliente registrado correctamente", vbInformation, "Aviso" TextRut.SetFocus Limpiar Else MsgBox "No se puede agregar un cliente ya existente", vbInformation, "Aviso" Limpiar TextRut.SetFocus End If End With End Sub Sub Limpiar() TextRut.Text = "" TextNombre.Text = "" TextDireccion.Text = "" TextComuna.Text = "" Texttelefono.Text = "" TextCorreo.Text = "" TextFpago.Text = "" End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() clientes CmdEliminar.Enabled = False CmdModificar.Enabled = False End Sub

Please keep input under 1000 characters

Python
View
generate functionSun, 01 Dec 2024

crear menu desplegable para escritorio windows en pantalla maximizada con tres menu principal 1. "Clientes" submenu "Registro de Clientes" menu 2 "Acerca de...", menu 3 Salida, sin comentarios eliminar boton Salir y salir por intermedio de submenu 3 Salida

```python import tkinter as tk from tkinter import ttk class Aplicacion: def __init__(self, raiz): self.raiz = raiz self.raiz.state('zoomed') # Maximizar la ventana self.raiz.title('Menu Desplegable') # Crear menú principal self.barra_menu = tk.Menu(self.raiz) self.raiz.config(menu=self.barra_menu) # Crear menú "Clientes" self.menu_clientes = tk.Menu(self.barra_menu, tearoff=0) self.barra_menu.add_cascade(label='Clientes', menu=self.menu_clientes) self.menu_clientes.add_command(label='Registro de Clientes') # Crear menú "Acerca de..." self.menu_acerca = tk.Menu(self.barra_menu, tearoff=0) self.barra_menu.add_cascade(label='Acerca de...', menu=self.menu_acerca) self.menu_acerca.add_command(label='Información del programa') # Crear menú "Salida" self.menu_salida = tk.Menu(self.barra_menu, tearoff=0) self.barra_menu.add_cascade(label='Salida', menu=self.menu_salida) self.menu_salida.add_command(label='Salir', command=self.salir) def salir(self): self.raiz.destroy() if __name__ == '__main__': raiz = tk.Tk() app = Aplicacion(raiz) raiz.mainloop() ``` Este código crea una ventana con un menú desplegable que tiene tres opciones principales: "Clientes", "Acerca de..." y "Salida". La opción "Salida" tiene un submenu con una sola opción: "Salir". Al seleccionar esta opción, la ventana se cierra.

Python
View
generate functionSun, 01 Dec 2024

crear menu desplegable para escritorio windows en pantalla maximizada con tres menu principal 1. "Clientes" submenu "Registro de Clientes" menu 2 "Acerca de...", menu 3 Salida, sin comentarios

```python import tkinter as tk from tkinter import ttk class MenuDesplegable: def __init__(self, root): self.root = root self.root.state('zoomed') # Maximizar la ventana self.root.title('Menu Desplegable') # Crear menú principal self.menubar = tk.Menu(self.root) self.root.config(menu=self.menubar) # Crear menú "Clientes" self.menu_clientes = tk.Menu(self.menubar, tearoff=0) self.menubar.add_cascade(label='Clientes', menu=self.menu_clientes) self.menu_clientes.add_command(label='Registro de Clientes') # Crear menú "Acerca de..." self.menu_acerca = tk.Menu(self.menubar, tearoff=0) self.menubar.add_cascade(label='Acerca de...', menu=self.menu_acerca) self.menu_acerca.add_command(label='Ver información') # Crear menú "Salida" self.menu_salida = tk.Menu(self.menubar, tearoff=0) self.menubar.add_cascade(label='Salida', menu=self.menu_salida) self.menu_salida.add_command(label='Salir del programa') # Crear botón para cerrar la ventana self.boton_salir = tk.Button(self.root, text='Salir', command=self.root.destroy) self.boton_salir.pack(pady=20) def run(self): self.root.mainloop() if __name__ == '__main__': root = tk.Tk() menu = MenuDesplegable(root) menu.run() ``` Este código crea una ventana con un menú desplegable que tiene tres opciones principales: "Clientes", "Acerca de..." y "Salida". Cada opción principal tiene un submenu con una sola opción. También se crea un botón para cerrar la ventana.

Python
View
generate functionSun, 01 Dec 2024

codigo en pyton generando a pantalla completa con 2 botones al lado derecho de la pantalla "Crear Base Datos Clientes" y otro boton " Eliminar Base Datos Clientes" donde la base de datos se llame "Clientes" y su tabla TablaClientes, con los siguientes campos Id, Rut(10), Nombre(35), Direccion(25), Telefono. ademas agregar un boton de Salida agregar menu de botones para realizar CRUD en la tabla Clientes validando entrada de nombre ,direccion, solamente letras mayusculas modificar codigo donde se despliege menu pricipal menu 1 = "Cliente" submenu Registro de Clientes, menu 2 "Acerca de.." version de sistema, menu 3 = "Salida" el menu desplegable en la parte superior de la pantalla menu desplegable sin boton en una sola pantalla se realice el CRUD modificar el menu a barra de menu modificar codigo donde menu "Registro de Clientes" abra una pantalla con el tamaño segun las proporciones a los datos que ingresara el usuario y en ella se ralice el CRUD con sus botones respectivos

Aquí te muestro el código modificado en Python utilizando la biblioteca Tkinter para crear la interfaz gráfica: ```python import tkinter as tk from tkinter import ttk, messagebox import sqlite3 # Conectar a la base de datos conn = sqlite3.connect('Clientes.db') cursor = conn.cursor() # Crear tabla si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') # Función para crear la base de datos def crear_base_datos(): try: cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') conn.commit() messagebox.showinfo('Éxito', 'Base de datos creada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar la base de datos def eliminar_base_datos(): try: cursor.execute('DROP TABLE TablaClientes') conn.commit() messagebox.showinfo('Éxito', 'Base de datos eliminada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para registrar un cliente def registrar_cliente(): ventana_registro = tk.Toplevel(root) ventana_registro.title('Registro de Clientes') ventana_registro.geometry('500x300') # Variables para almacenar los datos del cliente rut = tk.StringVar() nombre = tk.StringVar() direccion = tk.StringVar() telefono = tk.StringVar() # Etiquetas y campos de texto para ingresar los datos del cliente tk.Label(ventana_registro, text='Rut:').grid(row=0, column=0) tk.Entry(ventana_registro, textvariable=rut).grid(row=0, column=1) tk.Label(ventana_registro, text='Nombre:').grid(row=1, column=0) tk.Entry(ventana_registro, textvariable=nombre).grid(row=1, column=1) tk.Label(ventana_registro, text='Direccion:').grid(row=2, column=0) tk.Entry(ventana_registro, textvariable=direccion).grid(row=2, column=1) tk.Label(ventana_registro, text='Telefono:').grid(row=3, column=0) tk.Entry(ventana_registro, textvariable=telefono).grid(row=3, column=1) # Botones para registrar y cancelar tk.Button(ventana_registro, text='Registrar', command=lambda: registrar_cliente_db(rut, nombre, direccion, telefono)).grid(row=4, column=0) tk.Button(ventana_registro, text='Cancelar', command=ventana_registro.destroy).grid(row=4, column=1) # Función para registrar un cliente en la base de datos def registrar_cliente_db(rut, nombre, direccion, telefono): try: if nombre.get().isalpha() and direccion.get().isalpha(): cursor.execute('INSERT INTO TablaClientes (Rut, Nombre, Direccion, Telefono) VALUES (?, ?, ?, ?)', (rut.get(), nombre.get(), direccion.get(), telefono.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente registrado con éxito') else: messagebox.showerror('Error', 'Nombre y dirección deben ser solo letras') except Exception as e: messagebox.showerror('Error', str(e)) # Función para mostrar los clientes en la base de datos def mostrar_clientes(): try: cursor.execute('SELECT * FROM TablaClientes') clientes = cursor.fetchall() texto = '' for cliente in clientes: texto += f'Id: {cliente[0]}\nRut: {cliente[1]}\nNombre: {cliente[2]}\nDireccion: {cliente[3]}\nTelefono: {cliente[4]}\n\n' texto_area.delete(1.0, tk.END) texto_area.insert(tk.END, texto) except Exception as e: messagebox.showerror('Error', str(e)) # Función para actualizar un cliente en la base de datos def actualizar_cliente(): try: ventana_actualizar = tk.Toplevel(root) ventana_actualizar.title('Actualizar Cliente') ventana_actualizar.geometry('500x300') # Variables para almacenar los datos del cliente rut = tk.StringVar() nombre = tk.StringVar() direccion = tk.StringVar() telefono = tk.StringVar() # Etiquetas y campos de texto para ingresar los datos del cliente tk.Label(ventana_actualizar, text='Rut:').grid(row=0, column=0) tk.Entry(ventana_actualizar, textvariable=rut).grid(row=0, column=1) tk.Label(ventana_actualizar, text='Nombre:').grid(row=1, column=0) tk.Entry(ventana_actualizar, textvariable=nombre).grid(row=1, column=1) tk.Label(ventana_actualizar, text='Direccion:').grid(row=2, column=0) tk.Entry(ventana_actualizar, textvariable=direccion).grid(row=2, column=1) tk.Label(ventana_actualizar, text='Telefono:').grid(row=3, column=0) tk.Entry(ventana_actualizar, textvariable=telefono).grid(row=3, column=1) # Botones para actualizar y cancelar tk.Button(ventana_actualizar, text='Actualizar', command=lambda: actualizar_cliente_db(rut, nombre, direccion, telefono)).grid(row=4, column=0) tk.Button(ventana_actualizar, text='Cancelar', command=ventana_actualizar.destroy).grid(row=4, column=1) except Exception as e: messagebox.showerror('Error', str(e)) # Función para actualizar un cliente en la base de datos def actualizar_cliente_db(rut, nombre, direccion, telefono): try: if nombre.get().isalpha() and direccion.get().isalpha(): cursor.execute('UPDATE TablaClientes SET Nombre = ?, Direccion = ?, Telefono = ? WHERE Rut = ?', (nombre.get(), direccion.get(), telefono.get(), rut.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente actualizado con éxito') else: messagebox.showerror('Error', 'Nombre y dirección deben ser solo letras') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar un cliente de la base de datos def eliminar_cliente(): try: ventana_eliminar = tk.Toplevel(root) ventana_eliminar.title('Eliminar Cliente') ventana_eliminar.geometry('500x300') # Variables para almacenar los datos del cliente rut = tk.StringVar() # Etiqueta y campo de texto para ingresar el rut del cliente tk.Label(ventana_eliminar, text='Rut:').grid(row=0, column=0) tk.Entry(ventana_eliminar, textvariable=rut).grid(row=0, column=1) # Botones para eliminar y cancelar tk.Button(ventana_eliminar, text='Eliminar', command=lambda: eliminar_cliente_db(rut)).grid(row=1, column=0) tk.Button(ventana_eliminar, text='Cancelar', command=ventana_eliminar.destroy).grid(row=1, column=1) except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar un cliente de la base de datos def eliminar_cliente_db(rut): try: cursor.execute('DELETE FROM TablaClientes WHERE Rut = ?', (rut.get(),)) conn.commit() messagebox.showinfo('Éxito', 'Cliente eliminado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Crear la ventana principal root = tk.Tk() root.title('Sistema de Clientes') root.geometry('800x600') # Crear la barra de menú menubar = tk.Menu(root) root.config(menu=menubar) # Crear los menús menu_cliente = tk.Menu(menubar, tearoff=0) menu_cliente.add_command(label='Registro de Clientes', command=registrar_cliente) menu_cliente.add_command(label='Mostrar Clientes', command=mostrar_clientes) menu_cliente.add_command(label='Actualizar Cliente', command=actualizar_cliente) menu_cliente.add_command(label='Eliminar Cliente', command=eliminar_cliente) menubar.add_cascade(label='Cliente', menu=menu_cliente) menu_acerca = tk.Menu(menubar, tearoff=0) menu_acerca.add_command(label='Versión del Sistema') menubar.add_cascade(label='Acerca de..', menu=menu_acerca) menu_salida = tk.Menu(menubar, tearoff=0) menu_salida.add_command(label='Salir', command=root.destroy) menubar.add_cascade(label='Salida', menu=menu_salida) # Crear los botones para crear y eliminar la base de datos boton_crear = tk.Button(root, text='Crear Base Datos Clientes', command=crear_base_datos) boton_eliminar = tk.Button(root, text='Eliminar Base Datos Clientes', command=eliminar_base_datos) boton_crear.pack(side=tk.RIGHT) boton_eliminar.pack(side=tk.RIGHT) # Crear el área de texto para mostrar los clientes texto_area = tk.Text(root) texto_area.pack(fill=tk.BOTH, expand=True) # Mostrar la ventana principal root.mainloop() ``` Este código crea una ventana principal con una barra de menú que contiene los menús "Cliente", "Acerca de.." y "Salida". El menú "Cliente" contiene los comandos "Registro de Clientes", "Mostrar Clientes", "Actualizar Cliente" y "Eliminar Cliente". El menú "Acerca de.." contiene el comando "Versión del Sistema". El menú "Salida" contiene el comando "Salir". La ventana principal también contiene dos botones para crear y eliminar la base de datos, y un área de texto para mostrar los clientes. Cuando se selecciona un comando del menú, se ejecuta la función correspondiente. Por ejemplo, cuando se selecciona el comando "Registro de Clientes", se abre una ventana para ingresar los datos del cliente y registrarlos en la base de datos. Espero que esto te ayude. ¡Si tienes alguna pregunta o necesitas más ayuda, no dudes en preguntar!

Python
View
translateSun, 01 Dec 2024

dar ubicacion a un label y a un entry en pantalla en la misma fila

Puedes utilizar el método `grid` de la clase `Tkinter` para crear una interfaz gráfica con un label y un entry en la misma fila. Aquí te muestro un ejemplo: ```python import tkinter as tk # Creamos la ventana principal ventana = tk.Tk() ventana.title("Ejemplo de label y entry") # Creamos un label y un entry en la misma fila label = tk.Label(ventana, text="Ingrese su nombre:") label.grid(row=0, column=0, padx=5, pady=5) entry = tk.Entry(ventana) entry.grid(row=0, column=1, padx=5, pady=5) # Creamos un botón para cerrar la ventana boton_cerrar = tk.Button(ventana, text="Cerrar", command=ventana.destroy) boton_cerrar.grid(row=1, column=0, columnspan=2, padx=5, pady=5) # Mostramos la ventana ventana.mainloop() ``` En este ejemplo, el label y el entry se crean en la misma fila utilizando el método `grid`. El label se coloca en la columna 0 y el entry en la columna 1. El botón se coloca en la siguiente fila y se extiende por ambas columnas. El parámetro `padx` y `pady` se utilizan para agregar un poco de espacio entre el widget y los bordes de la ventana. Recuerda que debes importar la biblioteca `tkinter` para utilizar sus métodos y clases.

Python
View
translateSun, 01 Dec 2024

dar ubicacion a un label y a un entry en pantalla

Para ubicar un `Label` y un `Entry` en pantalla en Python utilizando la biblioteca Tkinter, puedes utilizar los métodos `place()` o `grid()`. Aquí te muestro un ejemplo de cómo hacerlo utilizando `place()`: ```python import tkinter as tk # Creamos la ventana principal ventana = tk.Tk() ventana.title("Ubicación de Label y Entry") # Creamos un Label label = tk.Label(ventana, text="Ingrese su nombre:") label.place(x=20, y=20) # Creamos un Entry entry = tk.Entry(ventana) entry.place(x=20, y=50) # Creamos un botón para cerrar la ventana boton_cerrar = tk.Button(ventana, text="Cerrar", command=ventana.destroy) boton_cerrar.place(x=20, y=80) # Mostramos la ventana ventana.geometry("300x200") # Establecemos el tamaño de la ventana ventana.mainloop() ``` En este ejemplo, el `Label` se ubica en la posición (20, 20) y el `Entry` se ubica en la posición (20, 50). El botón se ubica en la posición (20, 80). Si prefieres utilizar el método `grid()`, puedes hacerlo de la siguiente manera: ```python import tkinter as tk # Creamos la ventana principal ventana = tk.Tk() ventana.title("Ubicación de Label y Entry") # Creamos un Label label = tk.Label(ventana, text="Ingrese su nombre:") label.grid(row=0, column=0, padx=10, pady=10) # Creamos un Entry entry = tk.Entry(ventana) entry.grid(row=1, column=0, padx=10, pady=10) # Creamos un botón para cerrar la ventana boton_cerrar = tk.Button(ventana, text="Cerrar", command=ventana.destroy) boton_cerrar.grid(row=2, column=0, padx=10, pady=10) # Mostramos la ventana ventana.geometry("300x200") # Establecemos el tamaño de la ventana ventana.mainloop() ``` En este caso, el `Label` se ubica en la primera fila y columna, el `Entry` se ubica en la segunda fila y columna, y el botón se ubica en la tercera fila y columna. El parámetro `padx` establece la cantidad de espacio horizontal entre el widget y la celda, y el parámetro `pady` establece la cantidad de espacio vertical entre el widget y la celda.

Python
View
generate functionSat, 30 Nov 2024

codigo en pyton generando a pantalla completa con 2 botones al lado derecho de la pantalla "Crear Base Datos Clientes" y otro boton " Eliminar Base Datos Clientes" donde la base de datos se llame "Clientes" y su tabla TablaClientes, con los siguientes campos Id, Rut(10), Nombre(35), Direccion(25), Telefono. ademas agregar un boton de Salida

Aquí te muestro un ejemplo de código en Python utilizando la biblioteca Tkinter para crear la interfaz gráfica y SQLite para interactuar con la base de datos: ```python import tkinter as tk from tkinter import messagebox import sqlite3 # Conectar a la base de datos conn = sqlite3.connect('Clientes.db') cursor = conn.cursor() # Crear tabla si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') # Función para crear la base de datos def crear_base_datos(): try: # Crear tabla si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') conn.commit() messagebox.showinfo("Éxito", "Base de datos creada con éxito") except Exception as e: messagebox.showerror("Error", str(e)) # Función para eliminar la base de datos def eliminar_base_datos(): try: # Eliminar tabla cursor.execute('DROP TABLE TablaClientes') conn.commit() messagebox.showinfo("Éxito", "Base de datos eliminada con éxito") except Exception as e: messagebox.showerror("Error", str(e)) # Función para salir def salir(): conn.close() root.destroy() # Crear la ventana principal root = tk.Tk() root.title("Clientes") root.geometry("800x600") # Tamaño de la ventana # Crear los botones boton_crear = tk.Button(root, text="Crear Base Datos Clientes", command=crear_base_datos) boton_crear.pack(side=tk.RIGHT, padx=10, pady=10) boton_eliminar = tk.Button(root, text="Eliminar Base Datos Clientes", command=eliminar_base_datos) boton_eliminar.pack(side=tk.RIGHT, padx=10, pady=10) boton_salir = tk.Button(root, text="Salida", command=salir) boton_salir.pack(side=tk.RIGHT, padx=10, pady=10) # Mostrar la ventana root.mainloop() ``` Este código crea una ventana con tres botones: "Crear Base Datos Clientes", "Eliminar Base Datos Clientes" y "Salida". Al presionar el botón "Crear Base Datos Clientes", se crea la tabla "TablaClientes" en la base de datos "Clientes.db" si no existe. Al presionar el botón "Eliminar Base Datos Clientes", se elimina la tabla "TablaClientes" de la base de datos "Clientes.db". Al presionar el botón "Salida", se cierra la ventana y se cierra la conexión a la base de datos.

Python
View
translateSun, 01 Dec 2024

Dim globalReg As String Private lastSearchTerm As String Private lastFoundRow As Integer Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Private Sub banco_Click() FormCuentasporPagar2.Show End Sub Private Sub caja_Click() FormCaja.Show End Sub Private Sub Command1_Click() Unload Me End Sub Private Sub AgregarUsuarios_Click() FormUsuarios.Show End Sub Private Sub Command12_Click() BorrarRegistrosProveedores End Sub Private Sub Command2_Click() ' INDEXAR Tablamateriales x Codigo y Descripcion ' Dim conn As New ADODB.Connection ' conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\materiales2.mdb;" ' Comando SQL para crear índice en CODIGO ' Dim sqlCodigo As String ' sqlCodigo = "CREATE INDEX idx_codigo ON Tablamateriales (CODIGO)" ' conn.Execute sqlCodigo ' Comando SQL para crear índice en DESCRIPCION ' Dim sqlDescripcion As String ' sqlDescripcion = "CREATE INDEX idx_descripcion ON Tablamateriales (DESCRIPCION)" ' conn.Execute sqlDescripcion ' conn.Close ' Set conn = Nothing End Sub Private Sub Command10_Click() BorrarRegistrosProyectos End Sub Private Sub Command11_Click() BorrarRegistrosADO End Sub Private Sub Command3_Click() ProveedorRUT = "" ProveedorRazonSocial = "" ProveedorGiro = "" ProveedorDireccion = "" ProveedorComuna = "" ProveedorTelefono = "" ProveedorCorreo = "" Facturas22.Show End Sub Private Sub Command33_Click() Dim connMateriales2 As ADODB.Connection Dim rsMateriales2 As ADODB.Recordset Dim sql As String ' Crear la conexión ADODB para Access (.mdb) Set connMateriales2 = New ADODB.Connection connMateriales2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\materiales2.mdb;" ' Abrir la conexión connMateriales2.Open ' Iniciar una transacción connMateriales2.BeginTrans ' Crear el Recordset y abrir la tabla TABLAMATERIALES Set rsMateriales2 = New ADODB.Recordset sql = "SELECT * FROM TABLAMATERIALES" rsMateriales2.Open sql, connMateriales2, adOpenKeyset, adLockOptimistic ' Recorrer todos los registros y establecer el campo STOCK a 0 Do Until rsMateriales2.EOF rsMateriales2.Fields("STOCK").Value = 0 rsMateriales2.Update rsMateriales2.MoveNext Loop ' Confirmar la transacción connMateriales2.CommitTrans ' Cerrar el recordset y la conexión rsMateriales2.Close Set rsMateriales2 = Nothing connMateriales2.Close Set connMateriales2 = Nothing MsgBox "Todos los valores de STOCK se han actualizado a 0 en la tabla TABLAMATERIALES." End Sub Private Sub Command44_Click() Dim conn As ADODB.Connection Dim sql As String ' Inicializar la conexión a la base de datos Set conn = New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\FacturasCompra.mdb;" conn.Open ' Definir la consulta SQL para eliminar todos los registros de la tabla sql = "DELETE FROM TablaFacturas" ' Ejecutar la consulta On Error Resume Next conn.Execute sql If Err.Number <> 0 Then MsgBox "Error al eliminar registros: " & Err.Description Err.Clear End If On Error GoTo 0 ' Cerrar la conexión conn.Close Set conn = Nothing MsgBox "Todos los registros han sido eliminados.", vbInformation, "Éxito" End Sub Private Sub Command48_Click() Dim conn As ADODB.Connection Dim sql As String ' Inicializar la conexión a la base de datos Set conn = New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\RegistrosCaja.mdb;" conn.Open ' Definir la consulta SQL para eliminar todos los registros de la tabla sql = "DELETE FROM TablaRegistrosCaja" ' Ejecutar la consulta On Error Resume Next conn.Execute sql If Err.Number <> 0 Then MsgBox "Error al eliminar registros: " & Err.Description Err.Clear End If On Error GoTo 0 ' Cerrar la conexión conn.Close Set conn = Nothing ' Dejar monto en 0 Declarar las variables de conexión y recordset Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String ' Crear el objeto de conexión Set cn = New ADODB.Connection ' Abrir la conexión a la base de datos Access cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Cajas.mdb;" cn.Open ' Definir la consulta SQL para actualizar el campo MONTO a 0 strSQL = "UPDATE TablaCaja SET MONTO = 0" ' Ejecutar la consulta SQL cn.Execute strSQL ' Informar al usuario que los valores han sido actualizados MsgBox "Todos los valores del campo MONTO en la tabla TablaCaja han sido actualizados a 0.", vbInformation, "Actualización Completada" ' Cerrar la conexión cn.Close Set cn = Nothing MsgBox "Todos los registros han sido eliminados.", vbInformation, "Éxito" End Sub Private Sub Command5_Click() Dim conn As ADODB.Connection Dim sql As String ' Inicializar la conexión a la base de datos Set conn = New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\RegistrosDebito.mdb;" conn.Open ' Definir la consulta SQL para eliminar todos los registros de la tabla sql = "DELETE FROM TablaRegistrosDebito" ' Ejecutar la consulta On Error Resume Next conn.Execute sql If Err.Number <> 0 Then MsgBox "Error al eliminar registros: " & Err.Description Err.Clear End If On Error GoTo 0 ' Cerrar la conexión conn.Close Set conn = Nothing ' Dejar monto en 0 Declarar las variables de conexión y recordset Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String ' Crear el objeto de conexión Set cn = New ADODB.Connection ' Abrir la conexión a la base de datos Access cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Debitos.mdb;" cn.Open ' Definir la consulta SQL para actualizar el campo MONTO a 0 strSQL = "UPDATE TablaDebitos SET MONTO = 0" ' Ejecutar la consulta SQL cn.Execute strSQL ' Informar al usuario que los valores han sido actualizados MsgBox "Todos los valores del campo MONTO en la tabla TablaDebito han sido actualizados a 0.", vbInformation, "Actualización Completada" ' Cerrar la conexión cn.Close Set cn = Nothing MsgBox "Todos los registros han sido eliminados.", vbInformation, "Éxito" End Sub Private Sub Command8_Click() Dim conn As ADODB.Connection Dim sql As String ' Inicializar la conexión a la base de datos Set conn = New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\RegistrosCredito.mdb;" conn.Open ' Definir la consulta SQL para eliminar todos los registros de la tabla sql = "DELETE FROM TablaRegistrosCredito" ' Ejecutar la consulta On Error Resume Next conn.Execute sql If Err.Number <> 0 Then MsgBox "Error al eliminar registros: " & Err.Description Err.Clear End If On Error GoTo 0 ' Cerrar la conexión conn.Close Set conn = Nothing ' Dejar monto en 0 Declarar las variables de conexión y recordset Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String ' Crear el objeto de conexión Set cn = New ADODB.Connection ' Abrir la conexión a la base de datos Access cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Creditos.mdb;" cn.Open ' Definir la consulta SQL para actualizar el campo MONTO a 0 strSQL = "UPDATE TablaCredito SET MONTO = 0" ' Ejecutar la consulta SQL cn.Execute strSQL ' Informar al usuario que los valores han sido actualizados MsgBox "Todos los valores del campo MONTO en la tabla TablaCredito han sido actualizados a 0.", vbInformation, "Actualización Completada" ' Cerrar la conexión cn.Close Set cn = Nothing MsgBox "Todos los registros han sido eliminados.", vbInformation, "Éxito" End Sub Private Sub EliminarUsuario_Click() End Sub Private Sub facturascompra_Click() Facturas22.Show End Sub Private Sub facturasdecompras_Click() ProveedorRUT = "" ProveedorRazonSocial = "" ProveedorGiro = "" ProveedorDireccion = "" ProveedorComuna = "" ProveedorTelefono = "" ProveedorCorreo = "" Facturas22.Show End Sub Private Sub fechavencimiento_Click() FormCuentasPorPagar.Show End Sub Private Sub impimirreporrtefacturas_Click() ReporteFacturasPDF.Show End Sub Private Sub MantenciondeClientes_Click() MantencionClientes.Show End Sub Private Sub MenuProductos_Click() End Sub Private Sub mantenciondemateriales_Click() FormMateriales.Show End Sub Private Sub mantenciondeproveedores_Click() RegProveedores.Show End Sub Private Sub mantencionproyectos_Click() RegProyectos.Show End Sub Private Sub MenuSalidaSistema_Click() Unload Me End Sub Private Sub registrodeservicios_Click() CreaciondeServicios.Show End Sub Private Sub movimientoscaja_Click() FormreporteCajaxCodigo.Show End Sub Private Sub movimientoscredito_Click() FormReporteCreditoxCodigo.Show End Sub Private Sub movimientosdebito_Click() FormReporteDebitoxCodigo.Show End Sub Private Sub nuevo_Click() FormUsuarios.Show End Sub Private Sub registromateriales_Click() FormMateriales.Show End Sub ' Función para buscar y borrar el registro en la base de datos usando REGISTRO Private Sub BorrarRegistro(globalReg As String) On Error GoTo ErrorHandler ' Eliminar el registro de la base de datos TABLAPROYECTOS usando REGISTRO Dim conn As Object Set conn = CreateObject("ADODB.Connection") ' Configurar la cadena de conexión conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Proyectos.mdb;" ' Abrir la conexión conn.Open ' Verificar si la conexión se abrió correctamente If conn.State = adStateOpen Then ' Construir la consulta DELETE usando REGISTRO Dim sqlDelete As String sqlDelete = "DELETE FROM TABLAPROYECTOS WHERE REGISTRO = " & globalReg ' Ejecutar la consulta DELETE conn.Execute sqlDelete MsgBox "Registro eliminado correctamente.", vbInformation Else MsgBox "Error al abrir la conexión a la base de datos.", vbCritical End If ' Cerrar la conexión conn.Close Set conn = Nothing Exit Sub ErrorHandler: MsgBox "Error al borrar el registro en la base de datos: " & Err.Description, vbCritical ' Cerrar la conexión si está abierta If conn.State = adStateOpen Then conn.Close End If Set conn = Nothing End Sub Private Sub MSFlexGrid1_DblClick() Static previousRow As Integer Static previousCol As Integer ' Obtener la fila y columna actual Dim rowIndex As Integer Dim colIndex As Integer rowIndex = MSFlexGrid1.row colIndex = 4 ' Suponiendo que REGISTRO está en la primera columna (columna 0) ' Verificar si se hizo doble clic en la columna 4 If MSFlexGrid1.col = colIndex Then ' Restaurar el color original de la celda anteriormente seleccionada If previousRow <> 0 And previousCol <> 0 Then MSFlexGrid1.row = previousRow MSFlexGrid1.col = previousCol MSFlexGrid1.CellBackColor = MSFlexGrid1.BackColor ' Restaurar color de fondo original MSFlexGrid1.CellForeColor = MSFlexGrid1.ForeColor ' Restaurar color de texto original End If ' Obtener el número de registro (REGISTRO) de la primera columna de la fila seleccionada globalReg = MSFlexGrid1.TextMatrix(rowIndex, 0) ' Mostrar el número de registro en un mensaje (opcional) ' MsgBox "Número de registro seleccionado: " & globalReg ' Cambiar el color de fondo y el color de texto de la celda seleccionada MSFlexGrid1.row = rowIndex MSFlexGrid1.col = colIndex MSFlexGrid1.CellBackColor = &H8000000D ' Color de fondo: vbYellow MSFlexGrid1.CellForeColor = &H0& ' Color de texto: vbBlack ' Solicitar nuevo valor para la celda Dim newValue As String newValue = InputBox("Ingrese nueva cantidad ", "Modificar Valor") ' Verificar si se ingresó un valor numérico válido Dim numericValue As Integer If IsNumeric(newValue) Then numericValue = CInt(newValue) ' Convertir a Integer ' Actualizar en el MSFlexGrid MSFlexGrid1.TextMatrix(rowIndex, colIndex) = CStr(numericValue) ' Convertir a cadena y actualizar ' Actualizar también en la base de datos ActualizarBaseDeDatos numericValue Else MsgBox "Ingrese un valor numérico válido.", vbExclamation End If ' Actualizar la celda anterior previousRow = rowIndex previousCol = colIndex End If End Sub Private Sub ActualizarBaseDeDatos(ByVal newValue As Integer) ' Ruta de tu base de datos de Access Const DB_PATH As String = "E:\ProyectosVisual Basic\Proyecto4\Project\Proyectos.mdb" ' Construir la cadena SQL para actualizar CANMAT con parámetros Dim strSQL As String strSQL = "UPDATE TABLAPROYECTOS SET CANMAT = ? WHERE REGISTRO = ?" ' Mostrar el SQL para depuración Debug.Print "SQL a ejecutar: " & strSQL ' Inicializar la conexión ADODB usando CreateObject Dim conn As Object Set conn = CreateObject("ADODB.Connection") On Error GoTo ErrorHandler ' Configurar la cadena de conexión conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB_PATH & ";" ' Abrir la conexión conn.Open ' Crear objeto Command Dim cmd As Object Set cmd = CreateObject("ADODB.Command") ' Asignar conexión al comando Set cmd.ActiveConnection = conn ' Configurar el comando SQL con parámetros cmd.CommandType = 1 ' adCmdText cmd.CommandText = strSQL ' Agregar parámetros cmd.Parameters.Append cmd.CreateParameter("param1", adInteger, adParamInput, , newValue) cmd.Parameters.Append cmd.CreateParameter("param2", adVarChar, adParamInput, 50, globalReg) ' Ajusta el tamaño según tu campo REGISTRO ' Ejecutar la consulta SQL cmd.Execute ' Cerrar la conexión conn.Close ' Liberar recursos Set cmd = Nothing Set conn = Nothing Exit Sub ErrorHandler: MsgBox "Error al ejecutar la consulta SQL: " & Err.Description, vbExclamation If conn.State = 1 Then conn.Close ' adStateOpen Set cmd = Nothing Set conn = Nothing End Sub Private Sub registroproveedores_Click() RegProveedores.Show End Sub Private Sub RProyectos_Click() RegProyectos.Show End Sub Function BorrarRegistrosADO() As Boolean On Error GoTo ErrorHandler Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim sql As String Dim rsAntes As ADODB.Recordset Dim rsDespues As ADODB.Recordset Dim totalAntes As Integer Dim totalDespues As Integer ' Establecer la cadena de conexión para el archivo MDF cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Materiales2.mdb;" ' Abrir la conexión cn.Open ' Configurar el comando y el recordset para contar registros antes del borrado cmd.ActiveConnection = cn cmd.CommandType = adCmdText ' Consulta para contar registros antes del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TABLAMATERIALES" cmd.CommandText = sql Set rsAntes = cmd.Execute ' Obtener el número total de registros antes del borrado If Not rsAntes.EOF Then totalAntes = rsAntes.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsAntes.Close Set rsAntes = Nothing ' Configurar el comando para borrar todos los registros de la tabla TABLAMATERIALES sql = "DELETE FROM TABLAMATERIALES" cmd.CommandText = sql ' Ejecutar la consulta de borrado cmd.Execute ' Consulta para contar registros después del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TABLAMATERIALES" cmd.CommandText = sql Set rsDespues = cmd.Execute ' Obtener el número total de registros después del borrado If Not rsDespues.EOF Then totalDespues = rsDespues.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsDespues.Close Set rsDespues = Nothing ' Cerrar la conexión cn.Close Set cn = Nothing ' Mostrar mensaje de éxito si se borraron registros MsgBox totalAntes & " registros antes del borrado. Ahora hay " & totalDespues & " registros en la tabla TABLAMATERIALES.", vbInformation ' Indicar éxito BorrarRegistrosADO = True Exit Function ErrorHandler: ' Manejar el error si ocurre MsgBox "Error al intentar borrar registros de la tabla TABLAMATERIALES: " & Err.Description, vbExclamation ' Cerrar la conexión si está abierta If cn.State = adStateOpen Then cn.Close End If Set cn = Nothing BorrarRegistrosADO = False End Function Function BorrarRegistrosProyectos() As Boolean On Error GoTo ErrorHandler Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim sql As String Dim rsAntes As ADODB.Recordset Dim rsDespues As ADODB.Recordset Dim totalAntes As Integer Dim totalDespues As Integer ' Establecer la cadena de conexión para el archivo MDF cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Proyectos.mdb;" ' Abrir la conexión cn.Open ' Configurar el comando y el recordset para contar registros antes del borrado cmd.ActiveConnection = cn cmd.CommandType = adCmdText ' Consulta para contar registros antes del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TABLAPROYECTOS" cmd.CommandText = sql Set rsAntes = cmd.Execute ' Obtener el número total de registros antes del borrado If Not rsAntes.EOF Then totalAntes = rsAntes.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsAntes.Close Set rsAntes = Nothing ' Configurar el comando para borrar todos los registros de la tabla TABLAPROYECTOS sql = "DELETE FROM TABLAPROYECTOS" cmd.CommandText = sql ' Ejecutar la consulta de borrado cmd.Execute ' Consulta para contar registros después del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TABLAPROYECTOS" cmd.CommandText = sql Set rsDespues = cmd.Execute ' Obtener el número total de registros después del borrado If Not rsDespues.EOF Then totalDespues = rsDespues.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsDespues.Close Set rsDespues = Nothing ' Cerrar la conexión cn.Close Set cn = Nothing ' Mostrar mensaje de éxito si se borraron registros MsgBox totalAntes & " registros antes del borrado. Ahora hay " & totalDespues & " registros en la tabla TABLAPROYECTOS.", vbInformation ' Indicar éxito BorrarRegistrosProyectos = True Exit Function ErrorHandler: ' Manejar el error si ocurre MsgBox "Error al intentar borrar registros de la tabla TABLAPROYECTOS: " & Err.Description, vbExclamation ' Cerrar la conexión si está abierta If cn.State = adStateOpen Then cn.Close End If Set cn = Nothing BorrarRegistrosProyectos = False End Function Function BorrarRegistrosProveedores() As Boolean On Error GoTo ErrorHandler Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim sql As String Dim rsAntes As ADODB.Recordset Dim rsDespues As ADODB.Recordset Dim totalAntes As Integer Dim totalDespues As Integer ' Establecer la cadena de conexión para el archivo MDF cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Proveedores.mdb;" cn.Open ' Configurar el comando y el recordset para contar registros antes del borrado cmd.ActiveConnection = cn cmd.CommandType = adCmdText ' Consulta para contar registros antes del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TablaProveedores" cmd.CommandText = sql Set rsAntes = cmd.Execute ' Obtener el número total de registros antes del borrado If Not rsAntes.EOF Then totalAntes = rsAntes.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsAntes.Close Set rsAntes = Nothing ' Configurar el comando para borrar todos los registros de la tabla TablaProveedores sql = "DELETE FROM TablaProveedores" cmd.CommandText = sql ' Ejecutar la consulta de borrado cmd.Execute ' Consulta para contar registros después del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TablaProveedores" cmd.CommandText = sql Set rsDespues = cmd.Execute ' Obtener el número total de registros después del borrado If Not rsDespues.EOF Then totalDespues = rsDespues.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsDespues.Close Set rsDespues = Nothing ' Cerrar la conexión cn.Close Set cn = Nothing ' Mostrar mensaje de éxito si se borraron registros MsgBox totalAntes & " registros antes del borrado. Ahora hay " & totalDespues & " registros en la tabla TablaProveedores.", vbInformation ' Indicar éxito BorrarRegistrosProveedores = True Exit Function ErrorHandler: ' Manejar el error si ocurre MsgBox "Error al intentar borrar registros de la tabla TablaProveedores: " & Err.Description, vbExclamation ' Cerrar la conexión si está abierta If cn.State = adStateOpen Then cn.Close End If Set cn = Nothing BorrarRegistrosProveedores = False End Function Private Sub ordenadaporbanco_Click() FormCuentasporPagar2.Show End Sub Private Sub reportedescripcion_Click() ReporteMaterialesxDescripcion.Show End Sub Private Sub reportematerialesdescripcion_Click() ReporteMaterialesxDescripcion.Show End Sub Private Sub reportematerialesxfechacompra_Click() ReporteMaterialesxFechaCompras.Show End Sub Private Sub reportematerialesxproveedor_Click() ReporteMaterialesporProveedor.Show End Sub Private Sub reportexfechafactura_Click() ReporteMaterialesxFactura.Show End Sub Private Sub targetadecredito_Click() FormCredito.Show End Sub Private Sub targetadedebito_Click() FormBanco.Show End Sub

Please keep input under 1000 characters

Python
View
generate functionSat, 30 Nov 2024

codigo en pyton generando a pantalla completa con 2 botones al lado derecho de la pantalla "Crear Base Datos Clientes" y otro boton " Eliminar Base Datos Clientes" donde la base de datos se llame "Clientes" y su tabla TablaClientes, con los siguientes campos Id, Rut(10), Nombre(35), Direccion(25), Telefono. ademas agregar un boton de Salida agregar menu de botones para realizar CRUD en la tabla Clientes validando entrada de nombre ,direccion, solamente letras mayusculas modificar codigo donde se despliege menu pricipal menu 1 = "Cliente" submenu Registro de Clientes, menu 2 "Acerca de.." version de sistema, menu 3 = "Salida"

Aquí te muestro un ejemplo de código en Python que utiliza la biblioteca Tkinter para crear la interfaz gráfica y la biblioteca sqlite3 para interactuar con la base de datos. ```python import tkinter as tk from tkinter import messagebox import sqlite3 # Conectar a la base de datos conn = sqlite3.connect('Clientes.db') cursor = conn.cursor() # Crear tabla si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') # Función para crear base de datos def crear_base_datos(): try: cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') conn.commit() messagebox.showinfo('Éxito', 'Base de datos creada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar base de datos def eliminar_base_datos(): try: cursor.execute('DROP TABLE TablaClientes') conn.commit() messagebox.showinfo('Éxito', 'Base de datos eliminada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para registrar cliente def registrar_cliente(): ventana_registro = tk.Toplevel(root) ventana_registro.title('Registro de Clientes') tk.Label(ventana_registro, text='Rut:').grid(row=0, column=0) rut_entry = tk.Entry(ventana_registro) rut_entry.grid(row=0, column=1) tk.Label(ventana_registro, text='Nombre:').grid(row=1, column=0) nombre_entry = tk.Entry(ventana_registro) nombre_entry.grid(row=1, column=1) tk.Label(ventana_registro, text='Direccion:').grid(row=2, column=0) direccion_entry = tk.Entry(ventana_registro) direccion_entry.grid(row=2, column=1) tk.Label(ventana_registro, text='Telefono:').grid(row=3, column=0) telefono_entry = tk.Entry(ventana_registro) telefono_entry.grid(row=3, column=1) def guardar_cliente(): rut = rut_entry.get() nombre = nombre_entry.get() direccion = direccion_entry.get() telefono = telefono_entry.get() if nombre.isalpha() and direccion.isalpha(): try: cursor.execute('INSERT INTO TablaClientes (Rut, Nombre, Direccion, Telefono) VALUES (?, ?, ?, ?)', (rut, nombre, direccion, telefono)) conn.commit() messagebox.showinfo('Éxito', 'Cliente registrado con éxito') ventana_registro.destroy() except Exception as e: messagebox.showerror('Error', str(e)) else: messagebox.showerror('Error', 'Nombre y dirección solo pueden contener letras') tk.Button(ventana_registro, text='Guardar', command=guardar_cliente).grid(row=4, column=0, columnspan=2) # Función para mostrar clientes def mostrar_clientes(): ventana_mostrar = tk.Toplevel(root) ventana_mostrar.title('Mostrar Clientes') cursor.execute('SELECT * FROM TablaClientes') clientes = cursor.fetchall() tk.Label(ventana_mostrar, text='Id').grid(row=0, column=0) tk.Label(ventana_mostrar, text='Rut').grid(row=0, column=1) tk.Label(ventana_mostrar, text='Nombre').grid(row=0, column=2) tk.Label(ventana_mostrar, text='Direccion').grid(row=0, column=3) tk.Label(ventana_mostrar, text='Telefono').grid(row=0, column=4) for i, cliente in enumerate(clientes): tk.Label(ventana_mostrar, text=str(cliente[0])).grid(row=i+1, column=0) tk.Label(ventana_mostrar, text=cliente[1]).grid(row=i+1, column=1) tk.Label(ventana_mostrar, text=cliente[2]).grid(row=i+1, column=2) tk.Label(ventana_mostrar, text=cliente[3]).grid(row=i+1, column=3) tk.Label(ventana_mostrar, text=cliente[4]).grid(row=i+1, column=4) # Función para actualizar cliente def actualizar_cliente(): ventana_actualizar = tk.Toplevel(root) ventana_actualizar.title('Actualizar Cliente') cursor.execute('SELECT * FROM TablaClientes') clientes = cursor.fetchall() tk.Label(ventana_actualizar, text='Id').grid(row=0, column=0) tk.Label(ventana_actualizar, text='Rut').grid(row=0, column=1) tk.Label(ventana_actualizar, text='Nombre').grid(row=0, column=2) tk.Label(ventana_actualizar, text='Direccion').grid(row=0, column=3) tk.Label(ventana_actualizar, text='Telefono').grid(row=0, column=4) for i, cliente in enumerate(clientes): tk.Button(ventana_actualizar, text=str(cliente[0]), command=lambda id=cliente[0]: mostrar_cliente(id)).grid(row=i+1, column=0, columnspan=5) def mostrar_cliente(id): cursor.execute('SELECT * FROM TablaClientes WHERE Id = ?', (id,)) cliente = cursor.fetchone() ventana_mostrar_cliente = tk.Toplevel(ventana_actualizar) ventana_mostrar_cliente.title('Mostrar Cliente') tk.Label(ventana_mostrar_cliente, text='Id').grid(row=0, column=0) tk.Label(ventana_mostrar_cliente, text='Rut').grid(row=0, column=1) tk.Label(ventana_mostrar_cliente, text='Nombre').grid(row=0, column=2) tk.Label(ventana_mostrar_cliente, text='Direccion').grid(row=0, column=3) tk.Label(ventana_mostrar_cliente, text='Telefono').grid(row=0, column=4) tk.Label(ventana_mostrar_cliente, text=str(cliente[0])).grid(row=1, column=0) tk.Label(ventana_mostrar_cliente, text=cliente[1]).grid(row=1, column=1) tk.Label(ventana_mostrar_cliente, text=cliente[2]).grid(row=1, column=2) tk.Label(ventana_mostrar_cliente, text=cliente[3]).grid(row=1, column=3) tk.Label(ventana_mostrar_cliente, text=cliente[4]).grid(row=1, column=4) def actualizar_cliente(): rut = cliente[1] nombre = cliente[2] direccion = cliente[3] telefono = cliente[4] ventana_actualizar_cliente = tk.Toplevel(ventana_mostrar_cliente) ventana_actualizar_cliente.title('Actualizar Cliente') tk.Label(ventana_actualizar_cliente, text='Rut:').grid(row=0, column=0) tk.Label(ventana_actualizar_cliente, text=rut).grid(row=0, column=1) tk.Label(ventana_actualizar_cliente, text='Nombre:').grid(row=1, column=0) tk.Label(ventana_actualizar_cliente, text=nombre).grid(row=1, column=1) tk.Label(ventana_actualizar_cliente, text='Direccion:').grid(row=2, column=0) tk.Label(ventana_actualizar_cliente, text=direccion).grid(row=2, column=1) tk.Label(ventana_actualizar_cliente, text='Telefono:').grid(row=3, column=0) tk.Label(ventana_actualizar_cliente, text=telefono).grid(row=3, column=1) def guardar_actualizado(): rut = rut_entry.get() nombre = nombre_entry.get() direccion = direccion_entry.get() telefono = telefono_entry.get() if nombre.isalpha() and direccion.isalpha(): try: cursor.execute('UPDATE TablaClientes SET Rut = ?, Nombre = ?, Direccion = ?, Telefono = ? WHERE Id = ?', (rut, nombre, direccion, telefono, id)) conn.commit() messagebox.showinfo('Éxito', 'Cliente actualizado con éxito') ventana_actualizar_cliente.destroy() except Exception as e: messagebox.showerror('Error', str(e)) else: messagebox.showerror('Error', 'Nombre y dirección solo pueden contener letras') tk.Label(ventana_actualizar_cliente, text='Rut:').grid(row=4, column=0) rut_entry = tk.Entry(ventana_actualizar_cliente) rut_entry.insert(0, rut) rut_entry.grid(row=4, column=1) tk.Label(ventana_actualizar_cliente, text='Nombre:').grid(row=5, column=0) nombre_entry = tk.Entry(ventana_actualizar_cliente) nombre_entry.insert(0, nombre) nombre_entry.grid(row=5, column=1) tk.Label(ventana_actualizar_cliente, text='Direccion:').grid(row=6, column=0) direccion_entry = tk.Entry(ventana_actualizar_cliente) direccion_entry.insert(0, direccion) direccion_entry.grid(row=6, column=1) tk.Label(ventana_actualizar_cliente, text='Telefono:').grid(row=7, column=0) telefono_entry = tk.Entry(ventana_actualizar_cliente) telefono_entry.insert(0, telefono) telefono_entry.grid(row=7, column=1) tk.Button(ventana_actualizar_cliente, text='Guardar', command=guardar_actualizado).grid(row=8, column=0, columnspan=2) tk.Button(ventana_mostrar_cliente, text='Actualizar', command=actualizar_cliente).grid(row=2, column=0, columnspan=5) # Función para eliminar cliente def eliminar_cliente(): ventana_eliminar = tk.Toplevel(root) ventana_eliminar.title('Eliminar Cliente') cursor.execute('SELECT * FROM TablaClientes') clientes = cursor.fetchall() tk.Label(ventana_eliminar, text='Id').grid(row=0, column=0) tk.Label(ventana_eliminar, text='Rut').grid(row=0, column=1) tk.Label(ventana_eliminar, text='Nombre').grid(row=0, column=2) tk.Label(ventana_eliminar, text='Direccion').grid(row=0, column=3) tk.Label(ventana_eliminar, text='Telefono').grid(row=0, column=4) for i, cliente in enumerate(clientes): tk.Button(ventana_eliminar, text=str(cliente[0]), command=lambda id=cliente[0]: eliminar_cliente_id(id)).grid(row=i+1, column=0, columnspan=5) def eliminar_cliente_id(id): try: cursor.execute('DELETE FROM TablaClientes WHERE Id = ?', (id,)) conn.commit() messagebox.showinfo('Éxito', 'Cliente eliminado con éxito') ventana_eliminar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) # Función para mostrar acerca de def mostrar_acerca_de(): ventana_acerca_de = tk.Toplevel(root) ventana_acerca_de.title('Acerca de...') tk.Label(ventana_acerca_de, text='Versión del sistema: 1.0').pack() # Función para salir def salir(): root.destroy() # Crear ventana principal root = tk.Tk() root.title('Sistema de Clientes') # Crear botones tk.Button(root, text='Crear Base Datos Clientes', command=crear_base_datos).pack(side=tk.RIGHT) tk.Button(root, text='Eliminar Base Datos Clientes', command=eliminar_base_datos).pack(side=tk.RIGHT) tk.Button(root, text='Registro de Clientes', command=registrar_cliente).pack(side=tk.RIGHT) tk.Button(root, text='Mostrar Clientes', command=mostrar_clientes).pack(side=tk.RIGHT) tk.Button(root, text='Actualizar Cliente', command=actualizar_cliente).pack(side=tk.RIGHT) tk.Button(root, text='Eliminar Cliente', command=eliminar_cliente).pack(side=tk.RIGHT) tk.Button(root, text='Acerca de...', command=mostrar_acerca_de).pack(side=tk.RIGHT) tk.Button(root, text='Salir', command=salir).pack(side=tk.RIGHT) # Mostrar ventana principal root.mainloop() ``` Este código crea una ventana principal con varios botones que permiten realizar diferentes acciones. Algunas de estas acciones incluyen crear y eliminar la base de datos, registrar clientes, mostrar clientes, actualizar clientes, eliminar clientes y mostrar información sobre el sistema.

Python
View
generate functionSat, 30 Nov 2024

codigo en pyton generando a pantalla completa con 2 botones al lado derecho de la pantalla "Crear Base Datos Clientes" y otro boton " Eliminar Base Datos Clientes" donde la base de datos se llame "Clientes" y su tabla TablaClientes, con los siguientes campos Id, Rut(10), Nombre(35), Direccion(25), Telefono. ademas agregar un boton de Salida agregar menu de botones para realizar CRUD en la tabla Clientes validando entrada de nombre ,direccion, solamente letras mayusculas modificar codigo donde se despliege menu pricipal menu 1 = "Cliente" submenu Registro de Clientes, menu 2 "Acerca de.." version de sistema, menu 3 = "Salida" el menu desplegable en la parte superior de la pantalla menu desplegable sin boton en una sola pantalla se realice el CRUD modificar el menu a barra de menu modificar codigo donde menu "Registro de Clientes" abra una pantalla con el tamaño segun las proporciones a los datos que ingresara el usuario y en ella se ralice el CRUD con sus botones respectivos

Aquí te muestro el código modificado en Python utilizando la biblioteca Tkinter para crear la interfaz gráfica: ```python import tkinter as tk from tkinter import ttk, messagebox import sqlite3 # Conectar a la base de datos conn = sqlite3.connect('Clientes.db') cursor = conn.cursor() # Crear tabla si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') # Función para crear la base de datos def crear_base_datos(): try: cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') conn.commit() messagebox.showinfo('Éxito', 'Base de datos creada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar la base de datos def eliminar_base_datos(): try: cursor.execute('DROP TABLE TablaClientes') conn.commit() messagebox.showinfo('Éxito', 'Base de datos eliminada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para registrar un cliente def registrar_cliente(): ventana_registro = tk.Toplevel(root) ventana_registro.title('Registro de Clientes') ventana_registro.geometry('500x300') # Variables para almacenar los datos del cliente rut = tk.StringVar() nombre = tk.StringVar() direccion = tk.StringVar() telefono = tk.StringVar() # Etiquetas y campos de texto para ingresar los datos del cliente tk.Label(ventana_registro, text='Rut:').grid(row=0, column=0) tk.Entry(ventana_registro, textvariable=rut).grid(row=0, column=1) tk.Label(ventana_registro, text='Nombre:').grid(row=1, column=0) tk.Entry(ventana_registro, textvariable=nombre).grid(row=1, column=1) tk.Label(ventana_registro, text='Direccion:').grid(row=2, column=0) tk.Entry(ventana_registro, textvariable=direccion).grid(row=2, column=1) tk.Label(ventana_registro, text='Telefono:').grid(row=3, column=0) tk.Entry(ventana_registro, textvariable=telefono).grid(row=3, column=1) # Botones para registrar y cancelar tk.Button(ventana_registro, text='Registrar', command=lambda: registrar_cliente_db(rut, nombre, direccion, telefono)).grid(row=4, column=0) tk.Button(ventana_registro, text='Cancelar', command=ventana_registro.destroy).grid(row=4, column=1) # Función para registrar un cliente en la base de datos def registrar_cliente_db(rut, nombre, direccion, telefono): try: if nombre.get().isalpha() and direccion.get().isalpha(): cursor.execute('INSERT INTO TablaClientes (Rut, Nombre, Direccion, Telefono) VALUES (?, ?, ?, ?)', (rut.get(), nombre.get(), direccion.get(), telefono.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente registrado con éxito') else: messagebox.showerror('Error', 'Nombre y dirección deben ser solo letras') except Exception as e: messagebox.showerror('Error', str(e)) # Función para mostrar los clientes en la base de datos def mostrar_clientes(): try: cursor.execute('SELECT * FROM TablaClientes') clientes = cursor.fetchall() texto = '' for cliente in clientes: texto += f'Id: {cliente[0]}\nRut: {cliente[1]}\nNombre: {cliente[2]}\nDireccion: {cliente[3]}\nTelefono: {cliente[4]}\n\n' texto_area.delete(1.0, tk.END) texto_area.insert(tk.END, texto) except Exception as e: messagebox.showerror('Error', str(e)) # Función para actualizar un cliente en la base de datos def actualizar_cliente(): try: ventana_actualizar = tk.Toplevel(root) ventana_actualizar.title('Actualizar Cliente') ventana_actualizar.geometry('500x300') # Variables para almacenar los datos del cliente rut = tk.StringVar() nombre = tk.StringVar() direccion = tk.StringVar() telefono = tk.StringVar() # Etiquetas y campos de texto para ingresar los datos del cliente tk.Label(ventana_actualizar, text='Rut:').grid(row=0, column=0) tk.Entry(ventana_actualizar, textvariable=rut).grid(row=0, column=1) tk.Label(ventana_actualizar, text='Nombre:').grid(row=1, column=0) tk.Entry(ventana_actualizar, textvariable=nombre).grid(row=1, column=1) tk.Label(ventana_actualizar, text='Direccion:').grid(row=2, column=0) tk.Entry(ventana_actualizar, textvariable=direccion).grid(row=2, column=1) tk.Label(ventana_actualizar, text='Telefono:').grid(row=3, column=0) tk.Entry(ventana_actualizar, textvariable=telefono).grid(row=3, column=1) # Botones para actualizar y cancelar tk.Button(ventana_actualizar, text='Actualizar', command=lambda: actualizar_cliente_db(rut, nombre, direccion, telefono)).grid(row=4, column=0) tk.Button(ventana_actualizar, text='Cancelar', command=ventana_actualizar.destroy).grid(row=4, column=1) except Exception as e: messagebox.showerror('Error', str(e)) # Función para actualizar un cliente en la base de datos def actualizar_cliente_db(rut, nombre, direccion, telefono): try: if nombre.get().isalpha() and direccion.get().isalpha(): cursor.execute('UPDATE TablaClientes SET Nombre = ?, Direccion = ?, Telefono = ? WHERE Rut = ?', (nombre.get(), direccion.get(), telefono.get(), rut.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente actualizado con éxito') else: messagebox.showerror('Error', 'Nombre y dirección deben ser solo letras') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar un cliente de la base de datos def eliminar_cliente(): try: ventana_eliminar = tk.Toplevel(root) ventana_eliminar.title('Eliminar Cliente') ventana_eliminar.geometry('500x300') # Variables para almacenar los datos del cliente rut = tk.StringVar() # Etiqueta y campo de texto para ingresar el rut del cliente tk.Label(ventana_eliminar, text='Rut:').grid(row=0, column=0) tk.Entry(ventana_eliminar, textvariable=rut).grid(row=0, column=1) # Botones para eliminar y cancelar tk.Button(ventana_eliminar, text='Eliminar', command=lambda: eliminar_cliente_db(rut)).grid(row=1, column=0) tk.Button(ventana_eliminar, text='Cancelar', command=ventana_eliminar.destroy).grid(row=1, column=1) except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar un cliente de la base de datos def eliminar_cliente_db(rut): try: cursor.execute('DELETE FROM TablaClientes WHERE Rut = ?', (rut.get(),)) conn.commit() messagebox.showinfo('Éxito', 'Cliente eliminado con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Crear la ventana principal root = tk.Tk() root.title('Sistema de Clientes') root.geometry('800x600') # Crear la barra de menú menubar = tk.Menu(root) root.config(menu=menubar) # Crear los menús menu_cliente = tk.Menu(menubar, tearoff=0) menu_cliente.add_command(label='Registro de Clientes', command=registrar_cliente) menu_cliente.add_command(label='Mostrar Clientes', command=mostrar_clientes) menu_cliente.add_command(label='Actualizar Cliente', command=actualizar_cliente) menu_cliente.add_command(label='Eliminar Cliente', command=eliminar_cliente) menubar.add_cascade(label='Cliente', menu=menu_cliente) menu_acerca = tk.Menu(menubar, tearoff=0) menu_acerca.add_command(label='Versión del Sistema') menubar.add_cascade(label='Acerca de..', menu=menu_acerca) menu_salida = tk.Menu(menubar, tearoff=0) menu_salida.add_command(label='Salir', command=root.destroy) menubar.add_cascade(label='Salida', menu=menu_salida) # Crear los botones para crear y eliminar la base de datos boton_crear = tk.Button(root, text='Crear Base Datos Clientes', command=crear_base_datos) boton_eliminar = tk.Button(root, text='Eliminar Base Datos Clientes', command=eliminar_base_datos) boton_crear.pack(side=tk.RIGHT) boton_eliminar.pack(side=tk.RIGHT) # Crear el área de texto para mostrar los clientes texto_area = tk.Text(root) texto_area.pack(fill=tk.BOTH, expand=True) # Mostrar la ventana principal root.mainloop() ``` Este código crea una ventana principal con una barra de menú que contiene los menús "Cliente", "Acerca de.." y "Salida". El menú "Cliente" contiene los comandos "Registro de Clientes", "Mostrar Clientes", "Actualizar Cliente" y "Eliminar Cliente". El menú "Acerca de.." contiene el comando "Versión del Sistema". El menú "Salida" contiene el comando "Salir". La ventana principal también contiene dos botones para crear y eliminar la base de datos, y un área de texto para mostrar los clientes. Cuando se selecciona un comando del menú, se ejecuta la función correspondiente. Por ejemplo, cuando se selecciona el comando "Registro de Clientes", se abre una ventana para ingresar los datos del cliente y registrarlos en la base de datos. Espero que esto te ayude. ¡Si tienes alguna pregunta o necesitas más ayuda, no dudes en preguntar!

Python
View
translateSun, 01 Dec 2024

generar con tkinter pantalla para que el usuario imgrese Rut(10) caracteres, Nombre(35)caracteres, Direccion(25)caracteres, validar para digitar solo mayusculas, tamaño pantalla con relacion a los datos que se van a ingresar, gregar boton salida

Aquí te muestro un ejemplo de cómo podrías crear una pantalla con tkinter para que el usuario ingrese los datos solicitados: ```python import tkinter as tk from tkinter import messagebox class Aplicacion: def __init__(self, root): self.root = root self.root.title("Registro de datos") self.root.geometry("400x300") # Tamaño de la pantalla # Crear etiquetas y campos de texto self.etiqueta_rut = tk.Label(root, text="Rut:") self.etiqueta_rut.grid(row=0, column=0, padx=5, pady=5) self.rut = tk.Entry(root, width=20) self.rut.grid(row=0, column=1, padx=5, pady=5) self.etiqueta_nombre = tk.Label(root, text="Nombre:") self.etiqueta_nombre.grid(row=1, column=0, padx=5, pady=5) self.nombre = tk.Entry(root, width=35) self.nombre.grid(row=1, column=1, padx=5, pady=5) self.etiqueta_direccion = tk.Label(root, text="Dirección:") self.etiqueta_direccion.grid(row=2, column=0, padx=5, pady=5) self.direccion = tk.Entry(root, width=25) self.direccion.grid(row=2, column=1, padx=5, pady=5) # Crear botón de salida self.boton_salida = tk.Button(root, text="Salir", command=self.salir) self.boton_salida.grid(row=3, column=0, columnspan=2, padx=5, pady=5) # Crear botón de registro self.boton_registro = tk.Button(root, text="Registrar", command=self.registrar) self.boton_registro.grid(row=4, column=0, columnspan=2, padx=5, pady=5) def validar_rut(self): rut = self.rut.get() if len(rut) != 10 or not rut.isalpha(): messagebox.showerror("Error", "Rut inválido. Debe ser un número de 10 dígitos.") return False return True def validar_nombre(self): nombre = self.nombre.get() if len(nombre) > 35: messagebox.showerror("Error", "Nombre demasiado largo. Debe ser de máximo 35 caracteres.") return False return True def validar_direccion(self): direccion = self.direccion.get() if len(direccion) > 25: messagebox.showerror("Error", "Dirección demasiado larga. Debe ser de máximo 25 caracteres.") return False return True def validar_mayusculas(self): rut = self.rut.get() nombre = self.nombre.get() direccion = self.direccion.get() if not rut.isalpha() or not nombre.isalpha() or not direccion.isalpha(): messagebox.showerror("Error", "Solo se permiten letras mayúsculas.") return False return True def registrar(self): if self.validar_rut() and self.validar_nombre() and self.validar_direccion() and self.validar_mayusculas(): messagebox.showinfo("Registro exitoso", "Los datos han sido registrados con éxito.") else: messagebox.showerror("Error", "Por favor, revise los errores y vuelva a intentarlo.") def salir(self): self.root.destroy() if __name__ == "__main__": root = tk.Tk() app = Aplicacion(root) root.mainloop() ``` Este código crea una pantalla con tkinter que solicita al usuario que ingrese su Rut, nombre y dirección. Los campos de texto tienen un tamaño determinado para que se ajusten a la cantidad de caracteres que se pueden ingresar. El botón de salida cierra la aplicación, mientras que el botón de registro verifica que los datos ingresados sean válidos y, si lo son, muestra un mensaje de confirmación. Si los datos no son válidos, muestra un mensaje de error.

Python
View
generate functionSat, 30 Nov 2024

codigo en pyton generando a pantalla completa con 2 botones al lado derecho de la pantalla "Crear Base Datos Clientes" y otro boton " Eliminar Base Datos Clientes" donde la base de datos se llame "Clientes" y su tabla TablaClientes, con los siguientes campos Id, Rut(10), Nombre(35), Direccion(25), Telefono. ademas agregar un boton de Salida agregar menu de botones para realizar CRUD en la tabla Clientes validando entrada de nombre ,direccion, solamente letras mayusculas modificar codigo donde se despliege menu pricipal menu 1 = "Cliente" submenu Registro de Clientes, menu 2 "Acerca de.." version de sistema, menu 3 = "Salida" el menu desplegable en la parte superior de la pantalla menu desplegable sin boton en una sola pantalla se realice el CRUD

Aquí te muestro un ejemplo de código en Python que cumple con tus requisitos utilizando la biblioteca Tkinter para crear la interfaz gráfica y SQLite para interactuar con la base de datos. ```python import tkinter as tk from tkinter import ttk, messagebox import sqlite3 # Conectar a la base de datos conn = sqlite3.connect('Clientes.db') cursor = conn.cursor() # Crear tabla Clientes si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS Clientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') # Función para crear la base de datos def crear_base_datos(): try: cursor.execute(''' CREATE TABLE IF NOT EXISTS Clientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') conn.commit() messagebox.showinfo('Éxito', 'Base de datos creada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar la base de datos def eliminar_base_datos(): try: cursor.execute('DROP TABLE Clientes') conn.commit() messagebox.showinfo('Éxito', 'Base de datos eliminada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para registrar un cliente def registrar_cliente(): ventana_registro = tk.Toplevel(root) ventana_registro.title('Registro de Clientes') tk.Label(ventana_registro, text='Rut:').grid(row=0, column=0) tk.Label(ventana_registro, text='Nombre:').grid(row=1, column=0) tk.Label(ventana_registro, text='Dirección:').grid(row=2, column=0) tk.Label(ventana_registro, text='Teléfono:').grid(row=3, column=0) rut = tk.Entry(ventana_registro) nombre = tk.Entry(ventana_registro) direccion = tk.Entry(ventana_registro) telefono = tk.Entry(ventana_registro) rut.grid(row=0, column=1) nombre.grid(row=1, column=1) direccion.grid(row=2, column=1) telefono.grid(row=3, column=1) def guardar_cliente(): try: cursor.execute('INSERT INTO Clientes (Rut, Nombre, Direccion, Telefono) VALUES (?, ?, ?, ?)', (rut.get(), nombre.get(), direccion.get(), telefono.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente registrado con éxito') ventana_registro.destroy() except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_registro, text='Guardar', command=guardar_cliente).grid(row=4, column=0, columnspan=2) # Función para modificar un cliente def modificar_cliente(): ventana_modificar = tk.Toplevel(root) ventana_modificar.title('Modificar Cliente') cursor.execute('SELECT * FROM Clientes') clientes = cursor.fetchall() tk.Label(ventana_modificar, text='Seleccione un cliente:').grid(row=0, column=0) opciones = tk.StringVar() opciones.set(clientes[0][0]) opciones_menu = tk.OptionMenu(ventana_modificar, opciones, *map(str, [cliente[0] for cliente in clientes])) opciones_menu.grid(row=0, column=1) tk.Label(ventana_modificar, text='Rut:').grid(row=1, column=0) tk.Label(ventana_modificar, text='Nombre:').grid(row=2, column=0) tk.Label(ventana_modificar, text='Dirección:').grid(row=3, column=0) tk.Label(ventana_modificar, text='Teléfono:').grid(row=4, column=0) rut = tk.Entry(ventana_modificar) nombre = tk.Entry(ventana_modificar) direccion = tk.Entry(ventana_modificar) telefono = tk.Entry(ventana_modificar) rut.grid(row=1, column=1) nombre.grid(row=2, column=1) direccion.grid(row=3, column=1) telefono.grid(row=4, column=1) def guardar_modificaciones(): try: cursor.execute('UPDATE Clientes SET Rut = ?, Nombre = ?, Direccion = ?, Telefono = ? WHERE Id = ?', (rut.get(), nombre.get(), direccion.get(), telefono.get(), opciones.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente modificado con éxito') ventana_modificar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_modificar, text='Guardar', command=guardar_modificaciones).grid(row=5, column=0, columnspan=2) # Función para eliminar un cliente def eliminar_cliente(): ventana_eliminar = tk.Toplevel(root) ventana_eliminar.title('Eliminar Cliente') cursor.execute('SELECT * FROM Clientes') clientes = cursor.fetchall() tk.Label(ventana_eliminar, text='Seleccione un cliente:').grid(row=0, column=0) opciones = tk.StringVar() opciones.set(clientes[0][0]) opciones_menu = tk.OptionMenu(ventana_eliminar, opciones, *map(str, [cliente[0] for cliente in clientes])) opciones_menu.grid(row=0, column=1) def eliminar(): try: cursor.execute('DELETE FROM Clientes WHERE Id = ?', (opciones.get(),)) conn.commit() messagebox.showinfo('Éxito', 'Cliente eliminado con éxito') ventana_eliminar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_eliminar, text='Eliminar', command=eliminar).grid(row=1, column=0, columnspan=2) # Función para mostrar clientes def mostrar_clientes(): ventana_mostrar = tk.Toplevel(root) ventana_mostrar.title('Mostrar Clientes') cursor.execute('SELECT * FROM Clientes') clientes = cursor.fetchall() tk.Label(ventana_mostrar, text='Clientes:').grid(row=0, column=0) for i, cliente in enumerate(clientes): tk.Label(ventana_mostrar, text=f'Id: {cliente[0]}').grid(row=i+1, column=0) tk.Label(ventana_mostrar, text=f'Rut: {cliente[1]}').grid(row=i+1, column=1) tk.Label(ventana_mostrar, text=f'Nombre: {cliente[2]}').grid(row=i+1, column=2) tk.Label(ventana_mostrar, text=f'Dirección: {cliente[3]}').grid(row=i+1, column=3) tk.Label(ventana_mostrar, text=f'Teléfono: {cliente[4]}').grid(row=i+1, column=4) # Función para salir def salir(): root.destroy() # Crear la ventana principal root = tk.Tk() root.title('Sistema de Clientes') # Crear el menú principal menu_principal = tk.Menu(root) root.config(menu=menu_principal) # Crear el menú de opciones menu_opciones = tk.Menu(menu_principal) menu_principal.add_cascade(label='Opciones', menu=menu_opciones) menu_opciones.add_command(label='Crear Base de Datos', command=crear_base_datos) menu_opciones.add_command(label='Eliminar Base de Datos', command=eliminar_base_datos) menu_opciones.add_separator() menu_opciones.add_command(label='Salir', command=salir) # Crear el menú de clientes menu_clientes = tk.Menu(menu_principal) menu_principal.add_cascade(label='Clientes', menu=menu_clientes) menu_clientes.add_command(label='Registro de Clientes', command=registrar_cliente) menu_clientes.add_command(label='Modificar Cliente', command=modificar_cliente) menu_clientes.add_command(label='Eliminar Cliente', command=eliminar_cliente) menu_clientes.add_command(label='Mostrar Clientes', command=mostrar_clientes) # Crear el menú de ayuda menu_ayuda = tk.Menu(menu_principal) menu_principal.add_cascade(label='Ayuda', menu=menu_ayuda) menu_ayuda.add_command(label='Acerca de...', command=lambda: messagebox.showinfo('Acerca de...', 'Versión 1.0')) # Crear los botones de la ventana principal boton_crear_base_datos = tk.Button(root, text='Crear Base de Datos Clientes', command=crear_base_datos) boton_crear_base_datos.pack(side=tk.RIGHT) boton_eliminar_base_datos = tk.Button(root, text='Eliminar Base de Datos Clientes', command=eliminar_base_datos) boton_eliminar_base_datos.pack(side=tk.RIGHT) boton_salir = tk.Button(root, text='Salir', command=salir) boton_salir.pack(side=tk.RIGHT) # Mostrar la ventana principal root.mainloop() ``` Este código crea una ventana principal con un menú desplegable que contiene las opciones de crear base de datos, eliminar base de datos, registro de clientes, modificar cliente, eliminar cliente, mostrar clientes y salir. También crea una ventana para cada una de estas opciones, donde se pueden realizar las acciones correspondientes.

Python
View
generate functionSat, 30 Nov 2024

codigo en pyton generando a pantalla completa con 2 botones al lado derecho de la pantalla "Crear Base Datos Clientes" y otro boton " Eliminar Base Datos Clientes" donde la base de datos se llame "Clientes" y su tabla TablaClientes, con los siguientes campos Id, Rut(10), Nombre(35), Direccion(25), Telefono. ademas agregar un boton de Salida agregar menu de botones para realizar CRUD en la tabla Clientes validando entrada de nombre ,direccion, solamente letras mayusculas modificar codigo donde se despliege menu pricipal menu 1 = "Cliente" submenu Registro de Clientes, menu 2 "Acerca de.." version de sistema, menu 3 = "Salida" el menu desplegable en la parte superior de la pantalla menu desplegable sin boton en una sola pantalla se realice el CRUD modificar el menu a barra de menu

Aquí te muestro el código modificado en Python utilizando la biblioteca Tkinter para crear la interfaz gráfica: ```python import tkinter as tk from tkinter import ttk, messagebox import sqlite3 # Conectar a la base de datos conn = sqlite3.connect('Clientes.db') cursor = conn.cursor() # Crear tabla Clientes si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS Clientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') # Función para crear base de datos def crear_base_datos(): try: conn.execute(''' CREATE TABLE IF NOT EXISTS Clientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') messagebox.showinfo('Éxito', 'Base de datos creada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar base de datos def eliminar_base_datos(): try: conn.execute('DROP TABLE Clientes') messagebox.showinfo('Éxito', 'Base de datos eliminada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para registrar cliente def registrar_cliente(): ventana_registro = tk.Toplevel(root) ventana_registro.title('Registro de Clientes') tk.Label(ventana_registro, text='Rut:').grid(row=0, column=0) rut_entry = tk.Entry(ventana_registro) rut_entry.grid(row=0, column=1) tk.Label(ventana_registro, text='Nombre:').grid(row=1, column=0) nombre_entry = tk.Entry(ventana_registro) nombre_entry.grid(row=1, column=1) tk.Label(ventana_registro, text='Direccion:').grid(row=2, column=0) direccion_entry = tk.Entry(ventana_registro) direccion_entry.grid(row=2, column=1) tk.Label(ventana_registro, text='Telefono:').grid(row=3, column=0) telefono_entry = tk.Entry(ventana_registro) telefono_entry.grid(row=3, column=1) def guardar_cliente(): rut = rut_entry.get() nombre = nombre_entry.get() direccion = direccion_entry.get() telefono = telefono_entry.get() if nombre.isalpha() and direccion.isalpha(): try: cursor.execute('INSERT INTO Clientes (Rut, Nombre, Direccion, Telefono) VALUES (?, ?, ?, ?)', (rut, nombre, direccion, telefono)) conn.commit() messagebox.showinfo('Éxito', 'Cliente registrado con éxito') ventana_registro.destroy() except Exception as e: messagebox.showerror('Error', str(e)) else: messagebox.showerror('Error', 'Nombre y dirección solo pueden contener letras') tk.Button(ventana_registro, text='Guardar', command=guardar_cliente).grid(row=4, column=0, columnspan=2) # Función para mostrar clientes def mostrar_clientes(): ventana_mostrar = tk.Toplevel(root) ventana_mostrar.title('Mostrar Clientes') cursor.execute('SELECT * FROM Clientes') clientes = cursor.fetchall() tk.Label(ventana_mostrar, text='Id').grid(row=0, column=0) tk.Label(ventana_mostrar, text='Rut').grid(row=0, column=1) tk.Label(ventana_mostrar, text='Nombre').grid(row=0, column=2) tk.Label(ventana_mostrar, text='Direccion').grid(row=0, column=3) tk.Label(ventana_mostrar, text='Telefono').grid(row=0, column=4) for i, cliente in enumerate(clientes): tk.Label(ventana_mostrar, text=str(cliente[0])).grid(row=i+1, column=0) tk.Label(ventana_mostrar, text=cliente[1]).grid(row=i+1, column=1) tk.Label(ventana_mostrar, text=cliente[2]).grid(row=i+1, column=2) tk.Label(ventana_mostrar, text=cliente[3]).grid(row=i+1, column=3) tk.Label(ventana_mostrar, text=cliente[4]).grid(row=i+1, column=4) # Función para actualizar cliente def actualizar_cliente(): ventana_actualizar = tk.Toplevel(root) ventana_actualizar.title('Actualizar Cliente') cursor.execute('SELECT * FROM Clientes') clientes = cursor.fetchall() tk.Label(ventana_actualizar, text='Id').grid(row=0, column=0) tk.Label(ventana_actualizar, text='Rut').grid(row=0, column=1) tk.Label(ventana_actualizar, text='Nombre').grid(row=0, column=2) tk.Label(ventana_actualizar, text='Direccion').grid(row=0, column=3) tk.Label(ventana_actualizar, text='Telefono').grid(row=0, column=4) for i, cliente in enumerate(clientes): tk.Button(ventana_actualizar, text=str(cliente[0]), command=lambda id=cliente[0]: mostrar_cliente(id)).grid(row=i+1, column=0, columnspan=5) def mostrar_cliente(id): cursor.execute('SELECT * FROM Clientes WHERE Id = ?', (id,)) cliente = cursor.fetchone() ventana_mostrar_cliente = tk.Toplevel(ventana_actualizar) ventana_mostrar_cliente.title('Mostrar Cliente') tk.Label(ventana_mostrar_cliente, text='Id').grid(row=0, column=0) tk.Label(ventana_mostrar_cliente, text='Rut').grid(row=0, column=1) tk.Label(ventana_mostrar_cliente, text='Nombre').grid(row=0, column=2) tk.Label(ventana_mostrar_cliente, text='Direccion').grid(row=0, column=3) tk.Label(ventana_mostrar_cliente, text='Telefono').grid(row=0, column=4) tk.Label(ventana_mostrar_cliente, text=str(cliente[0])).grid(row=1, column=0) tk.Label(ventana_mostrar_cliente, text=cliente[1]).grid(row=1, column=1) tk.Label(ventana_mostrar_cliente, text=cliente[2]).grid(row=1, column=2) tk.Label(ventana_mostrar_cliente, text=cliente[3]).grid(row=1, column=3) tk.Label(ventana_mostrar_cliente, text=cliente[4]).grid(row=1, column=4) def actualizar_cliente(): rut = cliente[1] nombre = cliente[2] direccion = cliente[3] telefono = cliente[4] ventana_actualizar_cliente = tk.Toplevel(ventana_mostrar_cliente) ventana_actualizar_cliente.title('Actualizar Cliente') tk.Label(ventana_actualizar_cliente, text='Rut:').grid(row=0, column=0) tk.Label(ventana_actualizar_cliente, text=rut).grid(row=0, column=1) tk.Label(ventana_actualizar_cliente, text='Nombre:').grid(row=1, column=0) tk.Label(ventana_actualizar_cliente, text=nombre).grid(row=1, column=1) tk.Label(ventana_actualizar_cliente, text='Direccion:').grid(row=2, column=0) tk.Label(ventana_actualizar_cliente, text=direccion).grid(row=2, column=1) tk.Label(ventana_actualizar_cliente, text='Telefono:').grid(row=3, column=0) tk.Label(ventana_actualizar_cliente, text=telefono).grid(row=3, column=1) def guardar_actualizado(): rut = rut_entry.get() nombre = nombre_entry.get() direccion = direccion_entry.get() telefono = telefono_entry.get() if nombre.isalpha() and direccion.isalpha(): try: cursor.execute('UPDATE Clientes SET Rut = ?, Nombre = ?, Direccion = ?, Telefono = ? WHERE Id = ?', (rut, nombre, direccion, telefono, id)) conn.commit() messagebox.showinfo('Éxito', 'Cliente actualizado con éxito') ventana_actualizar_cliente.destroy() except Exception as e: messagebox.showerror('Error', str(e)) else: messagebox.showerror('Error', 'Nombre y dirección solo pueden contener letras') tk.Label(ventana_actualizar_cliente, text='Rut:').grid(row=4, column=0) rut_entry = tk.Entry(ventana_actualizar_cliente) rut_entry.insert(0, rut) rut_entry.grid(row=4, column=1) tk.Label(ventana_actualizar_cliente, text='Nombre:').grid(row=5, column=0) nombre_entry = tk.Entry(ventana_actualizar_cliente) nombre_entry.insert(0, nombre) nombre_entry.grid(row=5, column=1) tk.Label(ventana_actualizar_cliente, text='Direccion:').grid(row=6, column=0) direccion_entry = tk.Entry(ventana_actualizar_cliente) direccion_entry.insert(0, direccion) direccion_entry.grid(row=6, column=1) tk.Label(ventana_actualizar_cliente, text='Telefono:').grid(row=7, column=0) telefono_entry = tk.Entry(ventana_actualizar_cliente) telefono_entry.insert(0, telefono) telefono_entry.grid(row=7, column=1) tk.Button(ventana_actualizar_cliente, text='Guardar', command=guardar_actualizado).grid(row=8, column=0, columnspan=2) tk.Button(ventana_mostrar_cliente, text='Actualizar', command=actualizar_cliente).grid(row=2, column=0, columnspan=5) # Función para eliminar cliente def eliminar_cliente(): ventana_eliminar = tk.Toplevel(root) ventana_eliminar.title('Eliminar Cliente') cursor.execute('SELECT * FROM Clientes') clientes = cursor.fetchall() tk.Label(ventana_eliminar, text='Id').grid(row=0, column=0) tk.Label(ventana_eliminar, text='Rut').grid(row=0, column=1) tk.Label(ventana_eliminar, text='Nombre').grid(row=0, column=2) tk.Label(ventana_eliminar, text='Direccion').grid(row=0, column=3) tk.Label(ventana_eliminar, text='Telefono').grid(row=0, column=4) for i, cliente in enumerate(clientes): tk.Button(ventana_eliminar, text=str(cliente[0]), command=lambda id=cliente[0]: eliminar_cliente_id(id)).grid(row=i+1, column=0, columnspan=5) def eliminar_cliente_id(id): try: cursor.execute('DELETE FROM Clientes WHERE Id = ?', (id,)) conn.commit() messagebox.showinfo('Éxito', 'Cliente eliminado con éxito') ventana_eliminar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) # Crear ventana principal root = tk.Tk() root.title('Sistema de Clientes') # Crear menú menubar = tk.Menu(root) root.config(menu=menubar) menu_cliente = tk.Menu(menubar, tearoff=0) menu_cliente.add_command(label='Registro de Clientes', command=registrar_cliente) menu_cliente.add_command(label='Mostrar Clientes', command=mostrar_clientes) menu_cliente.add_command(label='Actualizar Cliente', command=actualizar_cliente) menu_cliente.add_command(label='Eliminar Cliente', command=eliminar_cliente) menubar.add_cascade(label='Cliente', menu=menu_cliente) menu_acerca = tk.Menu(menubar, tearoff=0) menu_acerca.add_command(label='Versión del sistema') menubar.add_cascade(label='Acerca de..', menu=menu_acerca) menu_salida = tk.Menu(menubar, tearoff=0) menu_salida.add_command(label='Salir', command=root.destroy) menubar.add_cascade(label='Salida', menu=menu_salida) # Crear botones boton_crear_base_datos = tk.Button(root, text='Crear Base Datos Clientes', command=crear_base_datos) boton_crear_base_datos.pack(side=tk.RIGHT) boton_eliminar_base_datos = tk.Button(root, text='Eliminar Base Datos Clientes', command=eliminar_base_datos) boton_eliminar_base_datos.pack(side=tk.RIGHT) # Mostrar ventana principal root.mainloop() ``` Este código crea una ventana principal con un menú desplegable en la parte superior que contiene las opciones "Cliente", "Acerca de..", y "Salida". El menú "Cliente" contiene las opciones "Registro de Clientes", "Mostrar Clientes", "Actualizar Cliente", y "Eliminar Cliente". El menú "Acerca de.." contiene la opción "Versión del sistema". El menú "Salida" contiene la opción "Salir". La ventana principal también contiene dos botones en la parte derecha que permiten crear y eliminar la base de datos. Cuando se selecciona una opción del menú, se abre una nueva ventana con la función correspondiente. Por ejemplo, cuando se selecciona la opción "Registro de Clientes", se abre una ventana con un formulario para registrar un cliente. Es importante mencionar que este código utiliza la biblioteca sqlite3 para interactuar con la base de datos. La base de datos se crea automáticamente si no existe, y se elimina si se selecciona la opción "Eliminar Base Datos Clientes".

Python
View
generate functionSat, 30 Nov 2024

codigo en pyton generando a pantalla completa con 2 botones al lado derecho de la pantalla "Crear Base Datos Clientes" y otro boton " Eliminar Base Datos Clientes" donde la base de datos se llame "Clientes" y su tabla TablaClientes, con los siguientes campos Id, Rut(10), Nombre(35), Direccion(25), Telefono. ademas agregar un boton de Salida agregar menu de botones para realizar CRUD en la tabla Clientes validando entrada de nombre ,direccion, solamente letras mayusculas

Aquí te muestro un ejemplo de código en Python que utiliza la biblioteca Tkinter para crear una interfaz gráfica con los botones y la base de datos que solicitaste: ```python import tkinter as tk from tkinter import messagebox import sqlite3 # Conectar a la base de datos conn = sqlite3.connect('Clientes.db') cursor = conn.cursor() # Crear tabla si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') # Función para crear base de datos def crear_base_datos(): try: cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') conn.commit() messagebox.showinfo('Éxito', 'Base de datos creada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar base de datos def eliminar_base_datos(): try: cursor.execute('DROP TABLE TablaClientes') conn.commit() messagebox.showinfo('Éxito', 'Base de datos eliminada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para agregar cliente def agregar_cliente(): ventana_agregar = tk.Toplevel(root) ventana_agregar.title('Agregar Cliente') tk.Label(ventana_agregar, text='Rut:').grid(row=0, column=0) tk.Label(ventana_agregar, text='Nombre:').grid(row=1, column=0) tk.Label(ventana_agregar, text='Direccion:').grid(row=2, column=0) tk.Label(ventana_agregar, text='Telefono:').grid(row=3, column=0) rut = tk.Entry(ventana_agregar) nombre = tk.Entry(ventana_agregar) direccion = tk.Entry(ventana_agregar) telefono = tk.Entry(ventana_agregar) rut.grid(row=0, column=1) nombre.grid(row=1, column=1) direccion.grid(row=2, column=1) telefono.grid(row=3, column=1) def guardar_cliente(): try: cursor.execute('INSERT INTO TablaClientes (Rut, Nombre, Direccion, Telefono) VALUES (?, ?, ?, ?)', (rut.get(), nombre.get(), direccion.get(), telefono.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente agregado con éxito') ventana_agregar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_agregar, text='Guardar', command=guardar_cliente).grid(row=4, column=0, columnspan=2) # Función para actualizar cliente def actualizar_cliente(): ventana_actualizar = tk.Toplevel(root) ventana_actualizar.title('Actualizar Cliente') tk.Label(ventana_actualizar, text='Id:').grid(row=0, column=0) tk.Label(ventana_actualizar, text='Rut:').grid(row=1, column=0) tk.Label(ventana_actualizar, text='Nombre:').grid(row=2, column=0) tk.Label(ventana_actualizar, text='Direccion:').grid(row=3, column=0) tk.Label(ventana_actualizar, text='Telefono:').grid(row=4, column=0) id = tk.Entry(ventana_actualizar) rut = tk.Entry(ventana_actualizar) nombre = tk.Entry(ventana_actualizar) direccion = tk.Entry(ventana_actualizar) telefono = tk.Entry(ventana_actualizar) id.grid(row=0, column=1) rut.grid(row=1, column=1) nombre.grid(row=2, column=1) direccion.grid(row=3, column=1) telefono.grid(row=4, column=1) def actualizar_cliente_db(): try: cursor.execute('UPDATE TablaClientes SET Rut = ?, Nombre = ?, Direccion = ?, Telefono = ? WHERE Id = ?', (rut.get(), nombre.get(), direccion.get(), telefono.get(), id.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente actualizado con éxito') ventana_actualizar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_actualizar, text='Actualizar', command=actualizar_cliente_db).grid(row=5, column=0, columnspan=2) # Función para eliminar cliente def eliminar_cliente(): ventana_eliminar = tk.Toplevel(root) ventana_eliminar.title('Eliminar Cliente') tk.Label(ventana_eliminar, text='Id:').grid(row=0, column=0) id = tk.Entry(ventana_eliminar) id.grid(row=0, column=1) def eliminar_cliente_db(): try: cursor.execute('DELETE FROM TablaClientes WHERE Id = ?', (id.get(),)) conn.commit() messagebox.showinfo('Éxito', 'Cliente eliminado con éxito') ventana_eliminar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_eliminar, text='Eliminar', command=eliminar_cliente_db).grid(row=1, column=0, columnspan=2) # Función para mostrar clientes def mostrar_clientes(): ventana_mostrar = tk.Toplevel(root) ventana_mostrar.title('Mostrar Clientes') cursor.execute('SELECT * FROM TablaClientes') clientes = cursor.fetchall() tk.Label(ventana_mostrar, text='Id').grid(row=0, column=0) tk.Label(ventana_mostrar, text='Rut').grid(row=0, column=1) tk.Label(ventana_mostrar, text='Nombre').grid(row=0, column=2) tk.Label(ventana_mostrar, text='Direccion').grid(row=0, column=3) tk.Label(ventana_mostrar, text='Telefono').grid(row=0, column=4) for i, cliente in enumerate(clientes): tk.Label(ventana_mostrar, text=str(cliente[0])).grid(row=i+1, column=0) tk.Label(ventana_mostrar, text=cliente[1]).grid(row=i+1, column=1) tk.Label(ventana_mostrar, text=cliente[2]).grid(row=i+1, column=2) tk.Label(ventana_mostrar, text=cliente[3]).grid(row=i+1, column=3) tk.Label(ventana_mostrar, text=cliente[4]).grid(row=i+1, column=4) # Crear ventana principal root = tk.Tk() root.title('Clientes') # Crear botones tk.Button(root, text='Crear Base Datos Clientes', command=crear_base_datos).pack(side=tk.RIGHT) tk.Button(root, text='Eliminar Base Datos Clientes', command=eliminar_base_datos).pack(side=tk.RIGHT) tk.Button(root, text='Agregar Cliente', command=agregar_cliente).pack(side=tk.RIGHT) tk.Button(root, text='Actualizar Cliente', command=actualizar_cliente).pack(side=tk.RIGHT) tk.Button(root, text='Eliminar Cliente', command=eliminar_cliente).pack(side=tk.RIGHT) tk.Button(root, text='Mostrar Clientes', command=mostrar_clientes).pack(side=tk.RIGHT) tk.Button(root, text='Salir', command=root.destroy).pack(side=tk.RIGHT) # Mostrar ventana principal root.mainloop() ``` Este código crea una ventana principal con los botones solicitados y una ventana secundaria para cada acción. La ventana secundaria se utiliza para agregar, actualizar y eliminar clientes, y para mostrar la lista de clientes. La base de datos se crea y se conecta automáticamente al iniciar la aplicación.

Python
View
generate functionSat, 30 Nov 2024

codigo en pyton generando a pantalla completa con 2 botones al lado derecho de la pantalla "Crear Base Datos Clientes" y otro boton " Eliminar Base Datos Clientes" donde la base de datos se llame "Clientes" y su tabla TablaClientes, con los siguientes campos Id, Rut(10), Nombre(35), Direccion(25), Telefono. ademas agregar un boton de Salida agregar menu de botones para realizar CRUD en la tabla Clientes validando entrada de nombre ,direccion, solamente letras mayusculas

Aquí te muestro un ejemplo de código en Python que utiliza la biblioteca Tkinter para crear una interfaz gráfica con los botones y la base de datos que solicitaste: ```python import tkinter as tk from tkinter import messagebox import sqlite3 # Conectar a la base de datos conn = sqlite3.connect('Clientes.db') cursor = conn.cursor() # Crear tabla si no existe cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') # Función para crear base de datos def crear_base_datos(): try: cursor.execute(''' CREATE TABLE IF NOT EXISTS TablaClientes ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Rut TEXT(10), Nombre TEXT(35), Direccion TEXT(25), Telefono TEXT ) ''') conn.commit() messagebox.showinfo('Éxito', 'Base de datos creada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para eliminar base de datos def eliminar_base_datos(): try: cursor.execute('DROP TABLE TablaClientes') conn.commit() messagebox.showinfo('Éxito', 'Base de datos eliminada con éxito') except Exception as e: messagebox.showerror('Error', str(e)) # Función para agregar cliente def agregar_cliente(): ventana_agregar = tk.Toplevel(root) ventana_agregar.title('Agregar Cliente') tk.Label(ventana_agregar, text='Rut:').grid(row=0, column=0) tk.Label(ventana_agregar, text='Nombre:').grid(row=1, column=0) tk.Label(ventana_agregar, text='Direccion:').grid(row=2, column=0) tk.Label(ventana_agregar, text='Telefono:').grid(row=3, column=0) rut = tk.Entry(ventana_agregar) nombre = tk.Entry(ventana_agregar) direccion = tk.Entry(ventana_agregar) telefono = tk.Entry(ventana_agregar) rut.grid(row=0, column=1) nombre.grid(row=1, column=1) direccion.grid(row=2, column=1) telefono.grid(row=3, column=1) def guardar_cliente(): try: cursor.execute('INSERT INTO TablaClientes (Rut, Nombre, Direccion, Telefono) VALUES (?, ?, ?, ?)', (rut.get(), nombre.get(), direccion.get(), telefono.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente agregado con éxito') ventana_agregar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_agregar, text='Guardar', command=guardar_cliente).grid(row=4, column=0, columnspan=2) # Función para actualizar cliente def actualizar_cliente(): ventana_actualizar = tk.Toplevel(root) ventana_actualizar.title('Actualizar Cliente') tk.Label(ventana_actualizar, text='Id:').grid(row=0, column=0) tk.Label(ventana_actualizar, text='Rut:').grid(row=1, column=0) tk.Label(ventana_actualizar, text='Nombre:').grid(row=2, column=0) tk.Label(ventana_actualizar, text='Direccion:').grid(row=3, column=0) tk.Label(ventana_actualizar, text='Telefono:').grid(row=4, column=0) id = tk.Entry(ventana_actualizar) rut = tk.Entry(ventana_actualizar) nombre = tk.Entry(ventana_actualizar) direccion = tk.Entry(ventana_actualizar) telefono = tk.Entry(ventana_actualizar) id.grid(row=0, column=1) rut.grid(row=1, column=1) nombre.grid(row=2, column=1) direccion.grid(row=3, column=1) telefono.grid(row=4, column=1) def actualizar_cliente_db(): try: cursor.execute('UPDATE TablaClientes SET Rut = ?, Nombre = ?, Direccion = ?, Telefono = ? WHERE Id = ?', (rut.get(), nombre.get(), direccion.get(), telefono.get(), id.get())) conn.commit() messagebox.showinfo('Éxito', 'Cliente actualizado con éxito') ventana_actualizar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_actualizar, text='Actualizar', command=actualizar_cliente_db).grid(row=5, column=0, columnspan=2) # Función para eliminar cliente def eliminar_cliente(): ventana_eliminar = tk.Toplevel(root) ventana_eliminar.title('Eliminar Cliente') tk.Label(ventana_eliminar, text='Id:').grid(row=0, column=0) id = tk.Entry(ventana_eliminar) id.grid(row=0, column=1) def eliminar_cliente_db(): try: cursor.execute('DELETE FROM TablaClientes WHERE Id = ?', (id.get(),)) conn.commit() messagebox.showinfo('Éxito', 'Cliente eliminado con éxito') ventana_eliminar.destroy() except Exception as e: messagebox.showerror('Error', str(e)) tk.Button(ventana_eliminar, text='Eliminar', command=eliminar_cliente_db).grid(row=1, column=0, columnspan=2) # Función para mostrar clientes def mostrar_clientes(): ventana_mostrar = tk.Toplevel(root) ventana_mostrar.title('Mostrar Clientes') cursor.execute('SELECT * FROM TablaClientes') clientes = cursor.fetchall() tk.Label(ventana_mostrar, text='Id').grid(row=0, column=0) tk.Label(ventana_mostrar, text='Rut').grid(row=0, column=1) tk.Label(ventana_mostrar, text='Nombre').grid(row=0, column=2) tk.Label(ventana_mostrar, text='Direccion').grid(row=0, column=3) tk.Label(ventana_mostrar, text='Telefono').grid(row=0, column=4) for i, cliente in enumerate(clientes): tk.Label(ventana_mostrar, text=str(cliente[0])).grid(row=i+1, column=0) tk.Label(ventana_mostrar, text=cliente[1]).grid(row=i+1, column=1) tk.Label(ventana_mostrar, text=cliente[2]).grid(row=i+1, column=2) tk.Label(ventana_mostrar, text=cliente[3]).grid(row=i+1, column=3) tk.Label(ventana_mostrar, text=cliente[4]).grid(row=i+1, column=4) # Crear ventana principal root = tk.Tk() root.title('Clientes') # Crear botones tk.Button(root, text='Crear Base Datos Clientes', command=crear_base_datos).pack(side=tk.RIGHT) tk.Button(root, text='Eliminar Base Datos Clientes', command=eliminar_base_datos).pack(side=tk.RIGHT) tk.Button(root, text='Agregar Cliente', command=agregar_cliente).pack(side=tk.RIGHT) tk.Button(root, text='Actualizar Cliente', command=actualizar_cliente).pack(side=tk.RIGHT) tk.Button(root, text='Eliminar Cliente', command=eliminar_cliente).pack(side=tk.RIGHT) tk.Button(root, text='Mostrar Clientes', command=mostrar_clientes).pack(side=tk.RIGHT) tk.Button(root, text='Salir', command=root.destroy).pack(side=tk.RIGHT) # Mostrar ventana principal root.mainloop() ``` Este código crea una ventana principal con los botones solicitados y una ventana secundaria para cada acción. La ventana secundaria se utiliza para agregar, actualizar y eliminar clientes, y para mostrar la lista de clientes. La base de datos se crea y se conecta automáticamente al iniciar la aplicación.

Python
View
translateSun, 01 Dec 2024

Dim globalReg As String Private lastSearchTerm As String Private lastFoundRow As Integer Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Private Sub banco_Click() FormCuentasporPagar2.Show End Sub Private Sub caja_Click() FormCaja.Show End Sub Private Sub Command1_Click() Unload Me End Sub Private Sub AgregarUsuarios_Click() FormUsuarios.Show End Sub Private Sub Command12_Click() BorrarRegistrosProveedores End Sub Private Sub Command2_Click() ' INDEXAR Tablamateriales x Codigo y Descripcion ' Dim conn As New ADODB.Connection ' conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\materiales2.mdb;" ' Comando SQL para crear índice en CODIGO ' Dim sqlCodigo As String ' sqlCodigo = "CREATE INDEX idx_codigo ON Tablamateriales (CODIGO)" ' conn.Execute sqlCodigo ' Comando SQL para crear índice en DESCRIPCION ' Dim sqlDescripcion As String ' sqlDescripcion = "CREATE INDEX idx_descripcion ON Tablamateriales (DESCRIPCION)" ' conn.Execute sqlDescripcion ' conn.Close ' Set conn = Nothing End Sub Private Sub Command10_Click() BorrarRegistrosProyectos End Sub Private Sub Command11_Click() BorrarRegistrosADO End Sub Private Sub Command3_Click() ProveedorRUT = "" ProveedorRazonSocial = "" ProveedorGiro = "" ProveedorDireccion = "" ProveedorComuna = "" ProveedorTelefono = "" ProveedorCorreo = "" Facturas22.Show End Sub Private Sub Command33_Click() Dim connMateriales2 As ADODB.Connection Dim rsMateriales2 As ADODB.Recordset Dim sql As String ' Crear la conexión ADODB para Access (.mdb) Set connMateriales2 = New ADODB.Connection connMateriales2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\materiales2.mdb;" ' Abrir la conexión connMateriales2.Open ' Iniciar una transacción connMateriales2.BeginTrans ' Crear el Recordset y abrir la tabla TABLAMATERIALES Set rsMateriales2 = New ADODB.Recordset sql = "SELECT * FROM TABLAMATERIALES" rsMateriales2.Open sql, connMateriales2, adOpenKeyset, adLockOptimistic ' Recorrer todos los registros y establecer el campo STOCK a 0 Do Until rsMateriales2.EOF rsMateriales2.Fields("STOCK").Value = 0 rsMateriales2.Update rsMateriales2.MoveNext Loop ' Confirmar la transacción connMateriales2.CommitTrans ' Cerrar el recordset y la conexión rsMateriales2.Close Set rsMateriales2 = Nothing connMateriales2.Close Set connMateriales2 = Nothing MsgBox "Todos los valores de STOCK se han actualizado a 0 en la tabla TABLAMATERIALES." End Sub Private Sub Command44_Click() Dim conn As ADODB.Connection Dim sql As String ' Inicializar la conexión a la base de datos Set conn = New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\FacturasCompra.mdb;" conn.Open ' Definir la consulta SQL para eliminar todos los registros de la tabla sql = "DELETE FROM TablaFacturas" ' Ejecutar la consulta On Error Resume Next conn.Execute sql If Err.Number <> 0 Then MsgBox "Error al eliminar registros: " & Err.Description Err.Clear End If On Error GoTo 0 ' Cerrar la conexión conn.Close Set conn = Nothing MsgBox "Todos los registros han sido eliminados.", vbInformation, "Éxito" End Sub Private Sub Command48_Click() Dim conn As ADODB.Connection Dim sql As String ' Inicializar la conexión a la base de datos Set conn = New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\RegistrosCaja.mdb;" conn.Open ' Definir la consulta SQL para eliminar todos los registros de la tabla sql = "DELETE FROM TablaRegistrosCaja" ' Ejecutar la consulta On Error Resume Next conn.Execute sql If Err.Number <> 0 Then MsgBox "Error al eliminar registros: " & Err.Description Err.Clear End If On Error GoTo 0 ' Cerrar la conexión conn.Close Set conn = Nothing ' Dejar monto en 0 Declarar las variables de conexión y recordset Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String ' Crear el objeto de conexión Set cn = New ADODB.Connection ' Abrir la conexión a la base de datos Access cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Cajas.mdb;" cn.Open ' Definir la consulta SQL para actualizar el campo MONTO a 0 strSQL = "UPDATE TablaCaja SET MONTO = 0" ' Ejecutar la consulta SQL cn.Execute strSQL ' Informar al usuario que los valores han sido actualizados MsgBox "Todos los valores del campo MONTO en la tabla TablaCaja han sido actualizados a 0.", vbInformation, "Actualización Completada" ' Cerrar la conexión cn.Close Set cn = Nothing MsgBox "Todos los registros han sido eliminados.", vbInformation, "Éxito" End Sub Private Sub Command5_Click() Dim conn As ADODB.Connection Dim sql As String ' Inicializar la conexión a la base de datos Set conn = New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\RegistrosDebito.mdb;" conn.Open ' Definir la consulta SQL para eliminar todos los registros de la tabla sql = "DELETE FROM TablaRegistrosDebito" ' Ejecutar la consulta On Error Resume Next conn.Execute sql If Err.Number <> 0 Then MsgBox "Error al eliminar registros: " & Err.Description Err.Clear End If On Error GoTo 0 ' Cerrar la conexión conn.Close Set conn = Nothing ' Dejar monto en 0 Declarar las variables de conexión y recordset Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String ' Crear el objeto de conexión Set cn = New ADODB.Connection ' Abrir la conexión a la base de datos Access cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Debitos.mdb;" cn.Open ' Definir la consulta SQL para actualizar el campo MONTO a 0 strSQL = "UPDATE TablaDebitos SET MONTO = 0" ' Ejecutar la consulta SQL cn.Execute strSQL ' Informar al usuario que los valores han sido actualizados MsgBox "Todos los valores del campo MONTO en la tabla TablaDebito han sido actualizados a 0.", vbInformation, "Actualización Completada" ' Cerrar la conexión cn.Close Set cn = Nothing MsgBox "Todos los registros han sido eliminados.", vbInformation, "Éxito" End Sub Private Sub Command8_Click() Dim conn As ADODB.Connection Dim sql As String ' Inicializar la conexión a la base de datos Set conn = New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\RegistrosCredito.mdb;" conn.Open ' Definir la consulta SQL para eliminar todos los registros de la tabla sql = "DELETE FROM TablaRegistrosCredito" ' Ejecutar la consulta On Error Resume Next conn.Execute sql If Err.Number <> 0 Then MsgBox "Error al eliminar registros: " & Err.Description Err.Clear End If On Error GoTo 0 ' Cerrar la conexión conn.Close Set conn = Nothing ' Dejar monto en 0 Declarar las variables de conexión y recordset Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String ' Crear el objeto de conexión Set cn = New ADODB.Connection ' Abrir la conexión a la base de datos Access cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Creditos.mdb;" cn.Open ' Definir la consulta SQL para actualizar el campo MONTO a 0 strSQL = "UPDATE TablaCredito SET MONTO = 0" ' Ejecutar la consulta SQL cn.Execute strSQL ' Informar al usuario que los valores han sido actualizados MsgBox "Todos los valores del campo MONTO en la tabla TablaCredito han sido actualizados a 0.", vbInformation, "Actualización Completada" ' Cerrar la conexión cn.Close Set cn = Nothing MsgBox "Todos los registros han sido eliminados.", vbInformation, "Éxito" End Sub Private Sub EliminarUsuario_Click() End Sub Private Sub facturascompra_Click() Facturas22.Show End Sub Private Sub facturasdecompras_Click() ProveedorRUT = "" ProveedorRazonSocial = "" ProveedorGiro = "" ProveedorDireccion = "" ProveedorComuna = "" ProveedorTelefono = "" ProveedorCorreo = "" Facturas22.Show End Sub Private Sub fechavencimiento_Click() FormCuentasPorPagar.Show End Sub Private Sub impimirreporrtefacturas_Click() ReporteFacturasPDF.Show End Sub Private Sub MantenciondeClientes_Click() MantencionClientes.Show End Sub Private Sub MenuProductos_Click() End Sub Private Sub mantenciondemateriales_Click() FormMateriales.Show End Sub Private Sub mantenciondeproveedores_Click() RegProveedores.Show End Sub Private Sub mantencionproyectos_Click() RegProyectos.Show End Sub Private Sub MenuSalidaSistema_Click() Unload Me End Sub Private Sub registrodeservicios_Click() CreaciondeServicios.Show End Sub Private Sub movimientoscaja_Click() FormreporteCajaxCodigo.Show End Sub Private Sub movimientoscredito_Click() FormReporteCreditoxCodigo.Show End Sub Private Sub movimientosdebito_Click() FormReporteDebitoxCodigo.Show End Sub Private Sub nuevo_Click() FormUsuarios.Show End Sub Private Sub registromateriales_Click() FormMateriales.Show End Sub ' Función para buscar y borrar el registro en la base de datos usando REGISTRO Private Sub BorrarRegistro(globalReg As String) On Error GoTo ErrorHandler ' Eliminar el registro de la base de datos TABLAPROYECTOS usando REGISTRO Dim conn As Object Set conn = CreateObject("ADODB.Connection") ' Configurar la cadena de conexión conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Proyectos.mdb;" ' Abrir la conexión conn.Open ' Verificar si la conexión se abrió correctamente If conn.State = adStateOpen Then ' Construir la consulta DELETE usando REGISTRO Dim sqlDelete As String sqlDelete = "DELETE FROM TABLAPROYECTOS WHERE REGISTRO = " & globalReg ' Ejecutar la consulta DELETE conn.Execute sqlDelete MsgBox "Registro eliminado correctamente.", vbInformation Else MsgBox "Error al abrir la conexión a la base de datos.", vbCritical End If ' Cerrar la conexión conn.Close Set conn = Nothing Exit Sub ErrorHandler: MsgBox "Error al borrar el registro en la base de datos: " & Err.Description, vbCritical ' Cerrar la conexión si está abierta If conn.State = adStateOpen Then conn.Close End If Set conn = Nothing End Sub Private Sub MSFlexGrid1_DblClick() Static previousRow As Integer Static previousCol As Integer ' Obtener la fila y columna actual Dim rowIndex As Integer Dim colIndex As Integer rowIndex = MSFlexGrid1.row colIndex = 4 ' Suponiendo que REGISTRO está en la primera columna (columna 0) ' Verificar si se hizo doble clic en la columna 4 If MSFlexGrid1.col = colIndex Then ' Restaurar el color original de la celda anteriormente seleccionada If previousRow <> 0 And previousCol <> 0 Then MSFlexGrid1.row = previousRow MSFlexGrid1.col = previousCol MSFlexGrid1.CellBackColor = MSFlexGrid1.BackColor ' Restaurar color de fondo original MSFlexGrid1.CellForeColor = MSFlexGrid1.ForeColor ' Restaurar color de texto original End If ' Obtener el número de registro (REGISTRO) de la primera columna de la fila seleccionada globalReg = MSFlexGrid1.TextMatrix(rowIndex, 0) ' Mostrar el número de registro en un mensaje (opcional) ' MsgBox "Número de registro seleccionado: " & globalReg ' Cambiar el color de fondo y el color de texto de la celda seleccionada MSFlexGrid1.row = rowIndex MSFlexGrid1.col = colIndex MSFlexGrid1.CellBackColor = &H8000000D ' Color de fondo: vbYellow MSFlexGrid1.CellForeColor = &H0& ' Color de texto: vbBlack ' Solicitar nuevo valor para la celda Dim newValue As String newValue = InputBox("Ingrese nueva cantidad ", "Modificar Valor") ' Verificar si se ingresó un valor numérico válido Dim numericValue As Integer If IsNumeric(newValue) Then numericValue = CInt(newValue) ' Convertir a Integer ' Actualizar en el MSFlexGrid MSFlexGrid1.TextMatrix(rowIndex, colIndex) = CStr(numericValue) ' Convertir a cadena y actualizar ' Actualizar también en la base de datos ActualizarBaseDeDatos numericValue Else MsgBox "Ingrese un valor numérico válido.", vbExclamation End If ' Actualizar la celda anterior previousRow = rowIndex previousCol = colIndex End If End Sub Private Sub ActualizarBaseDeDatos(ByVal newValue As Integer) ' Ruta de tu base de datos de Access Const DB_PATH As String = "E:\ProyectosVisual Basic\Proyecto4\Project\Proyectos.mdb" ' Construir la cadena SQL para actualizar CANMAT con parámetros Dim strSQL As String strSQL = "UPDATE TABLAPROYECTOS SET CANMAT = ? WHERE REGISTRO = ?" ' Mostrar el SQL para depuración Debug.Print "SQL a ejecutar: " & strSQL ' Inicializar la conexión ADODB usando CreateObject Dim conn As Object Set conn = CreateObject("ADODB.Connection") On Error GoTo ErrorHandler ' Configurar la cadena de conexión conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB_PATH & ";" ' Abrir la conexión conn.Open ' Crear objeto Command Dim cmd As Object Set cmd = CreateObject("ADODB.Command") ' Asignar conexión al comando Set cmd.ActiveConnection = conn ' Configurar el comando SQL con parámetros cmd.CommandType = 1 ' adCmdText cmd.CommandText = strSQL ' Agregar parámetros cmd.Parameters.Append cmd.CreateParameter("param1", adInteger, adParamInput, , newValue) cmd.Parameters.Append cmd.CreateParameter("param2", adVarChar, adParamInput, 50, globalReg) ' Ajusta el tamaño según tu campo REGISTRO ' Ejecutar la consulta SQL cmd.Execute ' Cerrar la conexión conn.Close ' Liberar recursos Set cmd = Nothing Set conn = Nothing Exit Sub ErrorHandler: MsgBox "Error al ejecutar la consulta SQL: " & Err.Description, vbExclamation If conn.State = 1 Then conn.Close ' adStateOpen Set cmd = Nothing Set conn = Nothing End Sub Private Sub registroproveedores_Click() RegProveedores.Show End Sub Private Sub RProyectos_Click() RegProyectos.Show End Sub Function BorrarRegistrosADO() As Boolean On Error GoTo ErrorHandler Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim sql As String Dim rsAntes As ADODB.Recordset Dim rsDespues As ADODB.Recordset Dim totalAntes As Integer Dim totalDespues As Integer ' Establecer la cadena de conexión para el archivo MDF cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Materiales2.mdb;" ' Abrir la conexión cn.Open ' Configurar el comando y el recordset para contar registros antes del borrado cmd.ActiveConnection = cn cmd.CommandType = adCmdText ' Consulta para contar registros antes del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TABLAMATERIALES" cmd.CommandText = sql Set rsAntes = cmd.Execute ' Obtener el número total de registros antes del borrado If Not rsAntes.EOF Then totalAntes = rsAntes.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsAntes.Close Set rsAntes = Nothing ' Configurar el comando para borrar todos los registros de la tabla TABLAMATERIALES sql = "DELETE FROM TABLAMATERIALES" cmd.CommandText = sql ' Ejecutar la consulta de borrado cmd.Execute ' Consulta para contar registros después del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TABLAMATERIALES" cmd.CommandText = sql Set rsDespues = cmd.Execute ' Obtener el número total de registros después del borrado If Not rsDespues.EOF Then totalDespues = rsDespues.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsDespues.Close Set rsDespues = Nothing ' Cerrar la conexión cn.Close Set cn = Nothing ' Mostrar mensaje de éxito si se borraron registros MsgBox totalAntes & " registros antes del borrado. Ahora hay " & totalDespues & " registros en la tabla TABLAMATERIALES.", vbInformation ' Indicar éxito BorrarRegistrosADO = True Exit Function ErrorHandler: ' Manejar el error si ocurre MsgBox "Error al intentar borrar registros de la tabla TABLAMATERIALES: " & Err.Description, vbExclamation ' Cerrar la conexión si está abierta If cn.State = adStateOpen Then cn.Close End If Set cn = Nothing BorrarRegistrosADO = False End Function Function BorrarRegistrosProyectos() As Boolean On Error GoTo ErrorHandler Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim sql As String Dim rsAntes As ADODB.Recordset Dim rsDespues As ADODB.Recordset Dim totalAntes As Integer Dim totalDespues As Integer ' Establecer la cadena de conexión para el archivo MDF cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Proyectos.mdb;" ' Abrir la conexión cn.Open ' Configurar el comando y el recordset para contar registros antes del borrado cmd.ActiveConnection = cn cmd.CommandType = adCmdText ' Consulta para contar registros antes del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TABLAPROYECTOS" cmd.CommandText = sql Set rsAntes = cmd.Execute ' Obtener el número total de registros antes del borrado If Not rsAntes.EOF Then totalAntes = rsAntes.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsAntes.Close Set rsAntes = Nothing ' Configurar el comando para borrar todos los registros de la tabla TABLAPROYECTOS sql = "DELETE FROM TABLAPROYECTOS" cmd.CommandText = sql ' Ejecutar la consulta de borrado cmd.Execute ' Consulta para contar registros después del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TABLAPROYECTOS" cmd.CommandText = sql Set rsDespues = cmd.Execute ' Obtener el número total de registros después del borrado If Not rsDespues.EOF Then totalDespues = rsDespues.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsDespues.Close Set rsDespues = Nothing ' Cerrar la conexión cn.Close Set cn = Nothing ' Mostrar mensaje de éxito si se borraron registros MsgBox totalAntes & " registros antes del borrado. Ahora hay " & totalDespues & " registros en la tabla TABLAPROYECTOS.", vbInformation ' Indicar éxito BorrarRegistrosProyectos = True Exit Function ErrorHandler: ' Manejar el error si ocurre MsgBox "Error al intentar borrar registros de la tabla TABLAPROYECTOS: " & Err.Description, vbExclamation ' Cerrar la conexión si está abierta If cn.State = adStateOpen Then cn.Close End If Set cn = Nothing BorrarRegistrosProyectos = False End Function Function BorrarRegistrosProveedores() As Boolean On Error GoTo ErrorHandler Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim sql As String Dim rsAntes As ADODB.Recordset Dim rsDespues As ADODB.Recordset Dim totalAntes As Integer Dim totalDespues As Integer ' Establecer la cadena de conexión para el archivo MDF cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ProyectosVisual Basic\Proyecto4\Project\Proveedores.mdb;" cn.Open ' Configurar el comando y el recordset para contar registros antes del borrado cmd.ActiveConnection = cn cmd.CommandType = adCmdText ' Consulta para contar registros antes del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TablaProveedores" cmd.CommandText = sql Set rsAntes = cmd.Execute ' Obtener el número total de registros antes del borrado If Not rsAntes.EOF Then totalAntes = rsAntes.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsAntes.Close Set rsAntes = Nothing ' Configurar el comando para borrar todos los registros de la tabla TablaProveedores sql = "DELETE FROM TablaProveedores" cmd.CommandText = sql ' Ejecutar la consulta de borrado cmd.Execute ' Consulta para contar registros después del borrado sql = "SELECT COUNT(*) AS TotalRegistros FROM TablaProveedores" cmd.CommandText = sql Set rsDespues = cmd.Execute ' Obtener el número total de registros después del borrado If Not rsDespues.EOF Then totalDespues = rsDespues.Fields("TotalRegistros").Value End If ' Cerrar el recordset rsDespues.Close Set rsDespues = Nothing ' Cerrar la conexión cn.Close Set cn = Nothing ' Mostrar mensaje de éxito si se borraron registros MsgBox totalAntes & " registros antes del borrado. Ahora hay " & totalDespues & " registros en la tabla TablaProveedores.", vbInformation ' Indicar éxito BorrarRegistrosProveedores = True Exit Function ErrorHandler: ' Manejar el error si ocurre MsgBox "Error al intentar borrar registros de la tabla TablaProveedores: " & Err.Description, vbExclamation ' Cerrar la conexión si está abierta If cn.State = adStateOpen Then cn.Close End If Set cn = Nothing BorrarRegistrosProveedores = False End Function Private Sub ordenadaporbanco_Click() FormCuentasporPagar2.Show End Sub Private Sub reportedescripcion_Click() ReporteMaterialesxDescripcion.Show End Sub Private Sub reportematerialesdescripcion_Click() ReporteMaterialesxDescripcion.Show End Sub Private Sub reportematerialesxfechacompra_Click() ReporteMaterialesxFechaCompras.Show End Sub Private Sub reportematerialesxproveedor_Click() ReporteMaterialesporProveedor.Show End Sub Private Sub reportexfechafactura_Click() ReporteMaterialesxFactura.Show End Sub Private Sub targetadecredito_Click() FormCredito.Show End Sub Private Sub targetadedebito_Click() FormBanco.Show End Sub Private Sub cmdBuscar_Click() If TextRut.Text = "" Then MsgBox "El campo Rut debe ser llenado", vbInformation, "Aviso": TextRut.SetFocus: Exit Sub TextNombre = "" TextDireccion = "" With Rsclientes .Requery .Find "RUT='" & Trim(TextRut.Text) & "'" If .EOF Then MsgBox "No encontado", vbExclamation TextRut.Text = "" TextRut.SetFocus CmdNuevoCliente.Enabled = True Else CmdNuevoCliente.Enabled = False TextNombre.Text = .Fields("NOMBRE").Value TextDireccion.Text = .Fields("DIRECCION").Value CmdEliminar.Enabled = True CmdModificar.Enabled = True End If End With End Sub Private Sub cmdEliminar_Click() If MsgBox("Esta seguro que desea eliminar este cliente ? ", vbQuestion + vbYesNo) = vbYes Then Rsclientes.Delete Limpiar MsgBox "Cliente eliminado correctamente", vbInformation, "Aviso" TextRut.SetFocus Else Limpiar TextRut.SetFocus End If End Sub Private Sub cmdModificar_Click() If TextNombre.Text = "" Then MsgBox "El campo Nombre debe ser llenado", vbInformation, "Aviso": TextNombre.SetFocus: Exit Sub If TextDireccion.Text = "" Then MsgBox "El campo Direccion debe ser llenado", vbInformation, "Aviso": TextDireccion.SetFocus: Exit Sub If MsgBox("Esta seguro que desea modificar los datos de este cliente ? ", vbQuestion + vbYesNo) = vbYes Then With rscliente Rsclientes.Fields("NOMBRE").Value = TextNombre.Text Rsclientes.Fields("DIRECCION").Value = TextDireccion.Text Rsclientes.Update End With End If Limpiar TextRut.SetFocus End Sub Private Sub CmdNuevoCliente_Click() If TextRut.Text = "" Then MsgBox "El campo Rut debe ser llenado", vbInformation, "Aviso": TextRut.SetFocus: Exit Sub If TextNombre.Text = "" Then MsgBox "El campo Nombre debe ser llenado", vbInformation, "Aviso": TextNombre.SetFocus: Exit Sub If TextDireccion.Text = "" Then MsgBox "El campo Direccion debe ser llenado", vbInformation, "Aviso": TextDireccion.SetFocus: Exit Sub With Rsclientes .Requery .Find "RUT='" & Trim(TextRut.Text) & "'" If .EOF Then .Requery .AddNew !RUT = TextRut.Text !NOMBRE = TextNombre.Text !direccion = TextDireccion.Text .Update .Requery MsgBox "Cliente registrado correctamente", vbInformation, "Aviso" TextRut.SetFocus Limpiar Else MsgBox "No se puede agregar un cliente ya existente", vbInformation, "Aviso" Limpiar TextRut.SetFocus End If End With End Sub Sub Limpiar() TextRut.Text = "" TextNombre.Text = "" TextDireccion.Text = "" TextComuna.Text = "" Texttelefono.Text = "" TextCorreo.Text = "" TextFpago.Text = "" End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() clientes CmdEliminar.Enabled = False CmdModificar.Enabled = False End Sub Private Sub cmdBuscar_Click() If TextRut.Text = "" Then MsgBox "El campo Rut debe ser llenado", vbInformation, "Aviso": TextRut.SetFocus: Exit Sub TextNombre = "" TextDireccion = "" With Rsclientes .Requery .Find "RUT='" & Trim(TextRut.Text) & "'" If .EOF Then MsgBox "No encontado", vbExclamation TextRut.Text = "" TextRut.SetFocus CmdNuevoCliente.Enabled = True Else CmdNuevoCliente.Enabled = False TextNombre.Text = .Fields("NOMBRE").Value TextDireccion.Text = .Fields("DIRECCION").Value CmdEliminar.Enabled = True CmdModificar.Enabled = True End If End With End Sub

Please keep input under 1000 characters

Python
View

Questions about programming?Chat with your personal AI assistant