Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



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



jueves, 12 de febrero de 2015

Gambas3: Ejemplo de autocompletado usando bases de datos


Gambas3: Ejemplo de autocompletado usando bases de datos


Os dejo aqui un pequeño ejemplo de como hacer un autocompletado de datos mientras se esta rellenando los textbox de un formulario. Se basa en que cada vez que escribo en el textbox, se produce un evento _keypress(), que añade la letra pulsado (key.text) al textbox.
Capturando esa tecla y el contenido del texbox, y pasandola a una consulta de la base de datos, extraido los datos "parecidos" (usando la orden like de SQL), del campo "nombre" de la tabla "personas", y los cargo al listbox.

Código fuente: evento _KeyPress() del textbox


Public Sub TextBoxNombre_KeyPress()
'cada vez que se escriba una letra, carga el contenido del listbox

If IsLetter(Key.text)
cargalisbox(TextBoxNombre.text & Key.Text)
Else

If Key.code = 16777219 Then
'pulsado la tecla de suprimir
cargalisbox(Mid$(TextBoxNombre.text, 1, Len(TextBoxNombre.text) - 1))
Endif
Endif

End

Carga de datos en el listbox:

Public Sub cargalisbox(texto As String)

resultado = BaseDAtos.Consulta(texto)

ListBox1.Clear

While resultado.Available

ListBox1.Add(resultado["nombre"])
resultado.MoveNext
Wend

End

Consulta a la base de dato que devuelve un result:

Public Sub Consulta(letras As String) As Result

Dim $Query As String
Dim nombredetabla As String = "personas"
Dim nombreDeCampo As String = "nombre"

$Query = "SELECT * FROM " & nombredetabla & " WHERE " & nombredecampo & " like '%" & letras & "%'"
$result = $Con.Exec($Query)
If Error Then
Message.Error("Problemas al realizar la consulta")
Else
Return $result
Endif

End

  Aqui teneis un video donde explico el procedimiento:




Enlace de descarga del código completo: alojado en google drive

Saludos

Julio

#Miriada X. Moneyball: La pelicula sobre Business Intelligence


 Moneyball: 

La película sobre Business Intelligence 

Acabo de empezar (con retraso) el curso de Miriada X sobre introducción al Business Intelligence, y en unos de los primeros videos, el profesor  José Ramón Rodríguez comentó esta película. Ante mi  desconocimiento del tema, me ha picado el gusanillo, y la he podido ver. Se trata de la historia de un equipo de béisbol aunque se puede equiparar a cualquier equipo de otro deporte (Fútbol, Baloncesto, etc).

Os cuento un poco de que vá:
La película trata de un "pequeño" equipo de béisbol que tras una buena temporada, pierde sus mejores jugadores, ya que son comprados por los equipos más "grandes" (con mayor poder adquisitivo y presupuesto).
¿os suena la historia? A todos los equipos pequeños les pasa siempre lo mismo, tienen una buena temporada o ascienden de categoría, pero no pueden retener a sus jugadores mejores, porque no tienen  talonario suficiente.
El equipo queda "desarbolado", y tienen  que volver a buscar otros jugadores para sustituir a los que se han ido, pero con el problema de que sus recursos económicos son bajos y que no pueden competir con equipos de mayor presupuesto. 
Para buscar a los nuevos jugadores, el sistema que usan ("el de toda la vida") es usar "ojeadores". Pero el manager del equipo quiere usar otro sistema, que no se base en las sensaciones personales de los ojeadores, sino en la matemáticas (estadísticas) aplicadas a como juegan los jugadores  para formar el nuevo equipo.

¿Como queda la historia?.... tendréis que ver la película.

Una de las ecuaciones usadas para valorar a los jugadores según como juegan


Saludos

Jsbsan

Fuentes:
http://informatica.blogs.uoc.edu/2012/06/28/beisbol-inteligencia-de-negocio-y-management/
https://hbr.org/2011/12/business-model-innovation-the

miércoles, 11 de febrero de 2015

Gambas3: Creación de un control Texbox Explanation

Gambas3: Creación de un control Texbox Explanation

Os traigo un código de Tobias Boege, que crea un nuevo control a partir de de un textbox, y que además de añadirle una nueva propiedad "Explanation" (para describir lo que tiene que rellenar el usuario en el textobox), también cambia el comportamiento del textbox, ya que si no tiene el foco y no contiene información introducida por el usuario, muestra el contenido de la nueva propiedad Explanation en gris:

Esto es muy útil para explicar con detalle como y que debe de rellenar el usuario los formularios.


Este es el código  de la clase ExplainTextbox:
' Gambas class file
' Copyright (C) 2015 Tobias Boege'' This program is free software; you can redistribute it and/or modify' it under the terms of the GNU General Public License as published by' the Free Software Foundation; either version 2 of the License, or' (at your option) any later version.'' This program is distributed in the hope that it will be useful,' but WITHOUT ANY WARRANTY; without even the implied warranty of' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the' GNU General Public License for more details.'' You should have received a copy of the GNU General Public License along' with this program; if not, write to the Free Software Foundation, Inc.,' 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
ExportInherits TextBox
Public Const _Properties As String = "*,Explanation"Public Const _DrawWith As String = "TextBox"
Property Explanation As String
Private $hBefore As ObserverPrivate $hAfter As ObserverPrivate $bShowExpl As BooleanPrivate $sExpl As String
Public Sub _new()
$hBefore = New Observer(Me, False) As "Before"$hAfter = New Observer(Me, True) As "After"
End
Public Sub Before_GotFocus()
If $bShowExpl ThenSuper.Text = ""Super.Foreground = $iActualForeground$bShowExpl = FalseEndif
End
Public Sub After_LostFocus()
If Not Super.Text ThenSuper.Text = $sExplSuper.Foreground = Color.Gray$bShowExpl = TrueEndif
End
Private Function Explanation_Read() As String
Return $sExpl
End
Private Sub Explanation_Write(Value As String)
$sExpl = ValueAfter_LostFocus()
End
' Hooks
Property Foreground As Integer

Private $iActualForeground As Integer
Private Function Foreground_Read() As IntegerReturn $iActualForegroundEnd

Private Sub Foreground_Write(Value As Integer)$iActualForeground = ValueIf Not $bShowExpl Then Super.Foreground = ValueEnd


Aquí podéis ver un vídeo de como es su funcionamiento:



Aquí teneis el enlace de descarga del código fuente completo: enlace a google drive