Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/10/2011, 09:03
Avatar de bosterkill
bosterkill
 
Fecha de Ingreso: mayo-2011
Mensajes: 56
Antigüedad: 13 años
Puntos: 0
Pregunta duda con query usando wxpython

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
  1. '''
  2. Created on 17/10/2011
  3.  
  4. @author: Administrador
  5. '''
  6. import wx
  7. import sqlite3 as lite
  8.  
  9. class Macro(wx.Frame):
  10.     def __init__(self, parent, id, title):
  11.         wx.Frame.__init__(self, parent, id, title, size = (400,400))
  12.         panel = wx.Panel(self, -1)
  13.         #Nombres estaticos
  14.         primaria = wx.StaticText(panel, -1, "ID:", pos = (115,40))
  15.         nombre = wx.StaticText(panel, -1, "Nombre y apellido:", pos = (40,80))
  16.         cedula = wx.StaticText(panel, -1, "Cedula:", pos = (92,120))
  17.         numero = wx.StaticText(panel, -1, "Numero Telefonico:", pos = (35,160))
  18.         direccion = wx.StaticText(panel, -1, "Direccion:", pos = (82,200))
  19.         #cajas
  20.         self.cprimaria = wx.TextCtrl(panel, -1, "", pos = (150,40))
  21.         self.cnombre = wx.TextCtrl(panel, -1, "", pos = (150,80))
  22.         self.ccedula = wx.TextCtrl(panel, -1, "", pos = (150,120))
  23.         self.cnumero = wx.TextCtrl(panel, -1, "", pos = (150,160))
  24.         self.cdireccion = wx.TextCtrl(panel, -1, "", size = (100,50), pos = (150,200), style = wx.TE_MULTILINE)
  25.         #botones
  26.         nuevo = wx.Button(panel, -1, "nuevo", pos = (15,280), size = (50,30))
  27.         nuevo.Bind(wx.EVT_BUTTON, self.OnNuevo)
  28.         deshacer = wx.Button(panel, -1, "deshacer", pos = (68,280), size = (50,30))
  29.         deshacer.Bind(wx.EVT_BUTTON, self.OnDeshacer)
  30.         adelante = wx.Button(panel, -1, "adelante", pos = (121,280), size = (50,30))
  31.         adelante.Bind(wx.EVT_BUTTON, self.OnAdelante)
  32.         atras = wx.Button(panel, -1, "atras", pos = (175,280), size = (50,30))
  33.         eliminar = wx.Button(panel, -1, "eliminar", pos = (228,280), size = (50,30))
  34.         guardar = wx.Button(panel, -1, "guardar", pos = (282, 280), size = (50,30))
  35.         guardar.Bind(wx.EVT_BUTTON, self.OnGuardar)
  36.         cerrar = wx.Button(panel, -1, "cerrar", pos = (335,280), size = (50,30))
  37.         cerrar.Bind(wx.EVT_BUTTON, self.OnCerrar)
  38.         self.Centre()
  39.         self.Show()
  40.  
  41.     def OnAdelante(self, event):
  42.         try:
  43.             con = lite.connect('basededato.sqlite')
  44.             cur = con.cursor()
  45.             uno = self.cprimaria.GetValue()
  46.             dos = self.cnombre.GetValue()
  47.             tres = self.ccedula.GetValue()
  48.             cuatro = self.cnumero.GetValue()
  49.             cinco = self.cdireccion.GetValue()
  50.             cur.execute("Selec * from empleado where id = "1+"", (uno, dos, tres, cuatro, cinco))
  51.             con.commit()
  52.             cur.close()
  53.             con.close()
  54.  
  55.         except lite.Error, error:
  56.             dlg = wx.MessageDialog(self, str(error), 'Ha ocurrido un error')
  57.             dlg.ShowModal()
  58.        
  59.        
  60.        
  61.        
  62.     def OnNuevo(self, event):
  63.         self.cprimaria.Clear()
  64.         self.cnombre.Clear()
  65.         self.ccedula.Clear()
  66.         self.cnumero.Clear()
  67.         self.cdireccion.Clear()    
  68.    
  69.        
  70.     def OnGuardar(self, event):
  71.         try:
  72.             con = lite.connect('basededato.sqlite')
  73.             cur = con.cursor()
  74.             uno = self.cprimaria.GetValue()
  75.             dos = self.cnombre.GetValue()
  76.             tres = self.ccedula.GetValue()
  77.             cuatro = self.cnumero.GetValue()
  78.             cinco = self.cdireccion.GetValue()
  79.             cur.execute("INSERT into empleado values(?, ?, ?, ?, ?)", (uno, dos, tres, cuatro, cinco))
  80.             con.commit()
  81.             cur.close()
  82.             con.close()
  83.             self.cprimaria.Clear()
  84.             self.cnombre.Clear()
  85.             self.ccedula.Clear()
  86.             self.cnumero.Clear()
  87.             self.cdireccion.Clear()
  88.             wx.MessageBox("Sus datos fueron guardados exitosamente", "Guardar", wx.OK | wx.ICON_INFORMATION)
  89.            
  90.         except lite.Error, error:
  91.             dlg = wx.MessageDialog(self, str(error), 'Ha ocurrido un error')
  92.             dlg.ShowModal()
  93.  
  94.            
  95.  
  96.        
  97.     def OnDeshacer(self, event):
  98.         self.cprimaria.Clear()
  99.         self.cnombre.Clear()
  100.         self.ccedula.Clear()
  101.         self.cnumero.Clear()
  102.         self.cdireccion.Clear()
  103.         wx.MessageBox("Se han borrado los campos, satisfactoriamente", "Deshacer", wx.OK | wx.ICON_INFORMATION)
  104.        
  105.        
  106.    
  107.     def OnCerrar(self, event):
  108.         self.Destroy()
  109.        
  110. app = wx.App()
  111. Macro(None, -1, "Formulario de empleado")
  112. app.MainLoop()