Consultas, desarrollo de programas y petición de presupuestos:

domingo, 5 de octubre de 2014

Código de Ejemplo de: INSERTAR, EDITAR, BORRAR Y BUSCAR en una base de datos


Un ejemplo completo de insertar, editar, borrar y buscar en una base de datos


En el curso de gambas3 (que es de acceso gratuito) añadí bastantes ejemplos para explicar los diversos controles, funciones, etc usando gambas3.  Uno de los ejemplos que creo que es más útil es este, donde hacemos lo básico con una base de datos: añadir, editar, borrar y buscar registros, y todo ello de modo visual, usando formularios, menús y botones. En este caso usaba SQLite3

Puede ser de mucha utilidad para los que deseen desarrollar aplicaciones en modo visual, para sus bases de datos y deseen conocer como hacerlo con gambas3.

Si no se sabe nada de programación, es muy recomendable que estudies el curso (que es de acceso gratuito) y no empecéis con  bases de datos antes de conocer  el lenguaje. En fin, lo que siempre se dice: no se empieza la casa por el tejado.

A continuación el programa:

En este este programa vamos a poder insertar, editar, borrar y realizar busquedas en una base de datos llamada "DatosEjemplos",  que tiene una tabla llamada "Personas".
Los campos de esta tabla son: nombre, apellidos, edad y la fecha de nacimiento

La estructura del proyecto es la siguiente:


Código fuente:
Modulo ModComun:
-
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. ' Gambas module file
  2.  
  3. Private hconn As Connection
  4.  
  5. Public Function ConectarBase() As Connection
  6.  
  7.   hconn = New Connection
  8.   hconn.host = User.home &/ ".ejemploBD"
  9.   hconn.name = "DatosEjemplos"
  10.   hconn.type = "sqlite3"
  11.  
  12.   Try hconn.Open()
  13.  
  14.   If Error Then
  15.     Message.Info("Error al conectarse a la base de datos")
  16.     Print Error.Text
  17.     Print Error.Where
  18.     Print Error.Code
  19.   Else
  20.     Return hconn
  21.   Endif
  22.  
  23.   Return Null
  24.  
  25. End
  26.  
  27. Public Function copiarBase()
  28.  
  29.   If Exist(User.home &/ ".ejemploBD/DatosEjemplos") Then
  30.     'existe el archivo, no hago nada.
  31.   Else
  32.     Try Mkdir User.home &/ ".ejemploBD"
  33.     Try Copy "DatosEjemplos" To User.home &/ ".ejemploBD/DatosEjemplos"
  34.   Endif
  35.  
  36. End

-

Módulo fuente:
FormMostrarResultados
-
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. ' Gambas class file
  2.  
  3. Private hconn As Connection
  4. Private hresult As Result
  5.  
  6. Public Sub Form_Open()
  7.   'ajuste la posición de la ventana al lado del formulario principal
  8.  
  9.   ColumnViewTabla.PopupMenu = "Menu1"
  10.  
  11.   'formateo columview
  12.   formato()
  13.   'cargo los datos en el columview
  14.   recarga("")
  15.  
  16. End
  17.  
  18. Public Sub formato()
  19.  
  20.   With ColumnViewTabla
  21.     .Columns.count = 5
  22.     .Columns[0].text = "id"
  23.     .Columns[0].Width = 20
  24.     .Columns[1].text = "Nombre"
  25.     .Columns[1].Width = 100
  26.     .Columns[2].text = "Apellidos"
  27.     .Columns[2].Width = 150
  28.     .Columns[3].text = "Edad"
  29.     .Columns[3].Width = 50
  30.     .Columns[4].text = "Fecha nacimiento"
  31.   End With
  32.  
  33. End
  34.  
  35. Public Sub recarga(sentenciaSQL As String)
  36.  
  37.   ColumnViewTabla.Clear
  38.   formato()
  39.   hconn = ModComun.ConectarBase()
  40.  
  41.   If sentenciaSQL = "" Then
  42.     hresult = hconn.Exec("Select * from Personas")
  43.   Else
  44.     hresult = hconn.Exec(sentenciaSQL)
  45.   Endif
  46.  
  47.   'relleno los datos
  48.   RellenarColumnView(hresult)
  49.  
  50. End
  51.  
  52. Public Sub RellenarColumnView(resultado As Result)
  53.  
  54.   Dim clave As String
  55.  
  56.   ColumnViewTabla.Clear
  57.   formato()
  58.   'relleno los datos
  59.   Do While resultado.Available
  60.     clave = resultado["id"]
  61.     ColumnViewTabla.Add(clave, clave)
  62.    
  63.     ColumnViewTabla[clave][1] = resultado["nombre"]
  64.     ColumnViewTabla[clave][2] = resultado["apellidos"]
  65.     ColumnViewTabla[clave][3] = resultado["edad"]
  66.     ColumnViewTabla[clave][4] = Format(resultado["fecha_nacimiento"], "dd/mm/yyyy")
  67.     resultado.MoveNext
  68.   Loop
  69.  
  70. End
  71.  
  72. Public Sub Menu1Editar_Click()
  73.  
  74.   hresult = hconn.Edit("Personas", "id=&1", ColumnViewTabla.Current.key)
  75.  
  76.   FMain.SetActivoModoEditor(hresult)
  77.  
  78. End
  79.  
  80. Public Sub Menu1Borrar_Click()
  81.  
  82.   hconn = ModComun.ConectarBase()
  83.   hconn.Delete("Personas", "id=&1", ColumnViewTabla.Current[0])
  84.  
  85.   'cargo los datos en el columview
  86.   recarga("")
  87.  
  88. End
  89.  
  90. Public Sub Menu1Buscar_Click()
  91.  
  92.   Dim cadena As String
  93.  
  94.   cadena = InputBox("Busqueda por nombre:", "Filtrar contenido de nombre", "")
  95.  
  96.   cadena = "%" & cadena & "%" 'uso % para busquedas por contendio
  97.   hresult = hconn.Find("Personas", "nombre like &1", cadena) 'solo busco en el campo "nombre"
  98.  
  99.   RellenarColumnView(hresult)
  100.  
  101. End
  102.  
  103. Public Sub Menu1QuitarFiltro_click()
  104.   'quito el filtro, mostrando todos los registros  
  105.  
  106.   recarga("")
  107.  
  108. End

-

Módulo fuente:
Fmain:
-
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. ' Gambas class file
  2.  
  3. Public hconn As Connection
  4. Public hresult As Result
  5. Public ideditando As Integer
  6.  
  7. Public Sub _new()
  8.  
  9. End
  10.  
  11. Public Sub Form_Open()
  12.  
  13.   Me.x = FormMostrarResultados.w + 10
  14.   Me.y = FormMostrarResultados.y + 20
  15.  
  16.   'copio la base de datos... al disco duro
  17.  
  18.   ModComun.copiarBase()
  19.   'muestro resultados
  20.   FormMostrarResultados.Show()
  21.   'conectar a la base de datos...
  22.  
  23.   hconn = ModComun.ConectarBase()
  24.  
  25.   'modo insertar:
  26.   ButtonAnade.tag = "insertar"
  27.  
  28. End
  29.  
  30. Public Sub ButtonAnade_Click()
  31.  
  32.   If ButtonAnade.tag = "insertar" Then
  33.    
  34.     'Una forma de hacerlo:
  35.     'hconn.Exec("insert into Personas values (&1,&2,&3,&4,&5)", Null, TextBoxNombre.text, TextBoxApellidos.text, ValueBoxEdad.value, DateBoxFecha.value)
  36.    
  37.     'Otra forma de hacerlo:
  38.     hresult = hconn.Create("Personas")
  39.     hresult["id"] = Null
  40.     hresult["nombre"] = TextBoxNombre.Text
  41.     hresult["apellidos"] = TextBoxApellidos.Text
  42.     hresult["edad"] = ValueBoxEdad.Value
  43.     hresult["fecha_nacimiento"] = DateBoxFecha.Value
  44.    
  45.     'actualizamos valores
  46.     hresult.Update
  47.     hconn.Commit
  48.     'hconn.Close()
  49.     FormMostrarResultados.recarga("")  
  50.    
  51.   Else
  52.     'editando
  53.     hresult["nombre"] = TextBoxNombre.Text
  54.     hresult["apellidos"] = TextBoxApellidos.Text
  55.     hresult["edad"] = ValueBoxEdad.value
  56.     hresult["fecha_nacimiento"] = DateBoxFecha.value
  57.    
  58.     'actualizo los datos
  59.     hresult.Update()
  60.     hconn.Commit()
  61.    
  62.     FormMostrarResultados.recarga("")  
  63.     'fin de editar
  64.     ButtonAnade.tag = "insertar"
  65.     ButtonAnade.text = "Añadir Registro"
  66.     Frame1.text = "Añadir Registro"
  67.     TextBoxNombre.Text = ""
  68.     TextBoxApellidos.Text = ""
  69.     ValueBoxEdad.value = 0
  70.     DateBoxFecha.value = 0
  71.    
  72.   Endif
  73.  
  74. End
  75.  
  76. Public Sub SetActivoModoEditor(data As Result)
  77.  
  78.   ButtonAnade.tag = "editando"
  79.   ButtonAnade.text = "Actualizar Registro"
  80.   Frame1.text = "Editando Registro"
  81.   hresult = data
  82.   TextBoxNombre.text = data["nombre"]
  83.   TextBoxApellidos.text = data["apellidos"]
  84.   ValueBoxEdad.Value = data["edad"]
  85.   DateBoxFecha.value = data["fecha_nacimiento"]
  86.  
  87. End
  88.  
  89. Public Sub ButtonSalir_Click()
  90.  
  91.   hconn.Close()
  92.   FormMostrarResultados.Close()
  93.  
  94.   Me.Close
  95.  
  96. End

-

Ejemplo de la aplicación funcionando:

Varias cosas a comentar:
1) El propio programa tiene la base de datos internamente, que la copia al directorio  User.home &/ ".ejemploBD"  si no la encuentra en el disco duro.
2) Si pulsáis  el botón derecho del ratón en alguna fila del ColumView, tendréis acceso al menú popup :"Editar/Borrar/Filtrar/Quitar Filtro"

3) Se han usado los métodos de la clase connection para editar, insert, borrar y filtrar información. También se podía haber echo con sentencias SQL y usando el método .Exec()

4) El esquema de la tabla Personas:
El campo Id es una llave primaria integer, la cual se autoenumera cuando le damos valor Null.

5) Las fechas se guardan internamente en la base de datos en el formato mes/dia/año, por eso para mostrarlas en el columnview uso el formateo  "dd/mm/yyyy".
Para mostrarla en el formulario Fmain (añade o edita registros), al usar un DateBox, automáticamente se formatea correctamente.

enlace de descarga: archivo alojado en Box.com

Documentación Oficial:





Fuentehttp://cursogambas.blogspot.com.es/2013/07/conexiones-y-resultados.html

5 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. necesito ayuda con un select option en php pero es orientado a objetos soy nuevo en esto

    ResponderEliminar
    Respuestas
    1. Preguntalo en un foro de php o en el foro de gambas-es.org, donde tenemos destinado una seccion para temas de "otros lenguajes".

      Eliminar
  3. tengo q hacer una biblioteca de libros q tenga la id del libro el nombre del libro y el año de publicacion en una base de datos se tiene q actualizar insertar consultar y borrar
    ayudaaaaa

    ResponderEliminar