Hola, me estoy preguntando porque es tan difícil hacer consultas o querys a base de datos usando wxpython lo que va de la tarde de ayer y noche y mañana de hoy me ha sacado chispas y aún sin poder hacer la consulta que deseo
es decir mi objetivo es hacer
y al darle a los botones "adelante", "atras", los datos se muevan en las cajas de texto.
entonces mi pregunta es ¿porque es tan difícil construir eso? si en comparación a visual foxpro es cuestión de 5 a 10 minutos hacer algo similar :(
mi base de datos es así
CREATE TABLE [empleado] (id integer NOT NULL,nombre_completo text,cedula integer,numero_telefono integer,dirección text)
Código Python:
Ver original'''
Created on 17/10/2011
@author: Administrador
'''
import wx
import sqlite3 as lite
class Macro(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size = (400,400))
panel = wx.Panel(self, -1)
#Nombres estaticos
primaria = wx.StaticText(panel, -1, "ID:", pos = (115,40))
nombre = wx.StaticText(panel, -1, "Nombre y apellido:", pos = (40,80))
cedula = wx.StaticText(panel, -1, "Cedula:", pos = (92,120))
numero = wx.StaticText(panel, -1, "Numero Telefonico:", pos = (35,160))
direccion = wx.StaticText(panel, -1, "Direccion:", pos = (82,200))
#cajas
self.cprimaria = wx.TextCtrl(panel, -1, "", pos = (150,40))
self.cnombre = wx.TextCtrl(panel, -1, "", pos = (150,80))
self.ccedula = wx.TextCtrl(panel, -1, "", pos = (150,120))
self.cnumero = wx.TextCtrl(panel, -1, "", pos = (150,160))
self.cdireccion = wx.TextCtrl(panel, -1, "", size = (100,50), pos = (150,200), style = wx.TE_MULTILINE)
#botones
nuevo = wx.Button(panel, -1, "nuevo", pos = (15,280), size = (50,30))
nuevo.Bind(wx.EVT_BUTTON, self.OnNuevo)
deshacer = wx.Button(panel, -1, "deshacer", pos = (68,280), size = (50,30))
deshacer.Bind(wx.EVT_BUTTON, self.OnDeshacer)
adelante = wx.Button(panel, -1, "adelante", pos = (121,280), size = (50,30))
adelante.Bind(wx.EVT_BUTTON, self.OnAdelante)
atras = wx.Button(panel, -1, "atras", pos = (175,280), size = (50,30))
eliminar = wx.Button(panel, -1, "eliminar", pos = (228,280), size = (50,30))
guardar = wx.Button(panel, -1, "guardar", pos = (282, 280), size = (50,30))
guardar.Bind(wx.EVT_BUTTON, self.OnGuardar)
cerrar = wx.Button(panel, -1, "cerrar", pos = (335,280), size = (50,30))
cerrar.Bind(wx.EVT_BUTTON, self.OnCerrar)
self.Centre()
self.Show()
def OnAdelante(self, event):
try:
con = lite.connect('basededato.sqlite')
cur = con.cursor()
uno = self.cprimaria.GetValue()
dos = self.cnombre.GetValue()
tres = self.ccedula.GetValue()
cuatro = self.cnumero.GetValue()
cinco = self.cdireccion.GetValue()
cur.execute("Selec * from empleado where id = "1+"", (uno, dos, tres, cuatro, cinco))
con.commit()
cur.close()
con.close()
except lite.Error, error:
dlg = wx.MessageDialog(self, str(error), 'Ha ocurrido un error')
dlg.ShowModal()
def OnNuevo(self, event):
self.cprimaria.Clear()
self.cnombre.Clear()
self.ccedula.Clear()
self.cnumero.Clear()
self.cdireccion.Clear()
def OnGuardar(self, event):
try:
con = lite.connect('basededato.sqlite')
cur = con.cursor()
uno = self.cprimaria.GetValue()
dos = self.cnombre.GetValue()
tres = self.ccedula.GetValue()
cuatro = self.cnumero.GetValue()
cinco = self.cdireccion.GetValue()
cur.execute("INSERT into empleado values(?, ?, ?, ?, ?)", (uno, dos, tres, cuatro, cinco))
con.commit()
cur.close()
con.close()
self.cprimaria.Clear()
self.cnombre.Clear()
self.ccedula.Clear()
self.cnumero.Clear()
self.cdireccion.Clear()
wx.MessageBox("Sus datos fueron guardados exitosamente", "Guardar", wx.OK | wx.ICON_INFORMATION)
except lite.Error, error:
dlg = wx.MessageDialog(self, str(error), 'Ha ocurrido un error')
dlg.ShowModal()
def OnDeshacer(self, event):
self.cprimaria.Clear()
self.cnombre.Clear()
self.ccedula.Clear()
self.cnumero.Clear()
self.cdireccion.Clear()
wx.MessageBox("Se han borrado los campos, satisfactoriamente", "Deshacer", wx.OK | wx.ICON_INFORMATION)
def OnCerrar(self, event):
self.Destroy()
app = wx.App()
Macro(None, -1, "Formulario de empleado")
app.MainLoop()