Sistema de Facturacion Gambas

Buenas noches mis estimados, voy a dejar aquí el sistema de facturación que hice hace algunos años para una pequeña empresa, lo acabo de rescatar de mis archivos antiguos y espero que le sirva a alguno de ustedes, no es la gran cosa lo admito pero algo es algo.

Descargar

Abrir un Archivo en Gambas

Nuevamente yo por aquí tratando de escribir algo, estuve explorando como abrir archivos en Gambas usando un cuadro de dialogo, en este caso archivos de texto, en el programita que es muy sencillito, tenemos dos botones uno llamado abrir localmente y otro abrir externamente. Cuando le damos click al boton “localmente” entonces el contenido del archivo de texto se pegará al area de texto y si le damos al botón “externamente” entonces se usará el programa por defecto para abrir el archivo, en mi caso es el gedit.

Aquí está el método que hace todo esto que digo:

Public Sub abrir(local As Boolean)

  Dim cadena As String
  Dialog.Title = "Escoger archivo"
  Dialog.Filter = ["*.txt", "Todos los archivos de texto"]
  If Dialog.OpenFile() Then
     Return ' Proceso cancelado por el usuario
  Else
     If local Then
        'Almacenamos en la variable cadena el contenido del archivo de texto
        cadena = File.Load(Dialog.Path)
        txtArchivo.Text = cadena
     Else
        'Abrimos el archivo con el programa predeterminado
        Desktop.Open(Dialog.Path)
     Endif
  Endif

End

Como verán no es la gran cosa pero puede servir de ayuda y me sirve para no perder el ritmo y mantener actualizado el blog.

Descarga el código.

Saludos combativos.

Sisrest

Buenas noches mis estimados, nuevamente les voy a dejar un programita que hice para practicar con las conexiones a bases de datos, en este caso MYSQL, espero que sea de utilidad, lo pueden descargar desde aquí.

Tiene un fichero que dice instrucciones, espero poder hacer un manual y detallar las funcionalidades del programa pero será para mas adelante.

Saludos combativos.

Analizador Lexico

Nuevamente retomando el blog y tratando de darle continuidad aunque creo que va a estar difícil por falta de tiempo, en esta oportunidad voy a dejarles un analizador léxico que hice cuando estaba en la universidad, lo encontré revisando unos archivos viejos y pensé en postearlo por si podía servirle a alguien mas.Está comprimido y viene con un archivo llamado script que es el documento a analizar.

Descarga Analizador

Espero que sea de utilidad y disculpen la poca documentación, luego trataré de profundizar.

Saludos combativos.

Trabajando con Calendarios en Gambas

Debido a que necesitaba contar con un calendario para una aplicacion que estaba desarrollando me lanze a la busqueda a ver que me ofrecia Gambas y me encontre con el control DateChooser.

Su ventana de propiedades es como sigue:

La aplicacion completa es mas o menos asi.

Tengo un boton, una caja de texto y el control DateChooser en el modo de diseño pongo el control DateChooser invisible de tal manera que al lanzar la aplicacion nos aparezca de este modo.

Y cuando le damos click al boton la aplicacion nos muestra lo siguiente:

El código que hace esto es el siguiente:

'El metodo Raise envia el control al frente del contenedor
Calendario.Raise()
'El metodo Show nos muestra el control
Calendario.Show()

Si seleccionamos una fecha del control este lo mostrara en la caja de texto, trabajamos esto en el evento change del DateChooser.

PUBLIC SUB Calendario_Change()

    txtFecha.Text = Calendario.Day & "/" & Calendario.Month & "/" & Calendario.Year
    Calendario.Hide()

END


Bueno yo particularmente no estoy muy conforme con la solucion que he encontrado asi que si alguien me puede ayudar a corregir y mejorar esto se lo agradeceria muchisimo.
Saludos combativos.

Haciendo y Restaurando Backups de Mysql con Gambas

Bueno despues de muchas lunas vuelvo a escribir sobre Gambas lamento haber tenido abandonado el tema durante mucho tiempo y dedicarme a postear otras cosas pero espero retomar con fuerza y ayudar a quienes tengan alguna duda con este lenguaje de paso que tambien aprendemos juntos listo entonces hecha la aclaracion manos a la obra.
El asunto es bastante sencillo resulta que necesitamos hacer backups de nuestra base de datos y poder restaurarlos posteriormente en caso de que suceda algun problema asi que creamos una interfaz grafica como esta.

Bueno la interfaz es bastante intuitiva(eso espero XD) asi que vamos a ver una porcion de codigo, cuando le damos click al boton respaldar.

Dialog.Title = "Guardar archivo"
Dialog.Path = "."
'Filtro para tomar solamente extensiones sql
Dialog.Filter = ["*.sql", "Ficheros sql"]
'Variables.CFG_BD_PASS es una variable donde almaceno el password de la base de datos, desde un modulo Variables
pass = " --password=" & Variables.CFG_BD_PASS & " "
IF NOT Dialog.SaveFile() THEN
	ruta = Dialog.Path
ENDIF
	'redireccion es la ruta donde se va a guardar el backup le agregamos el simbolo > como operador de redireccionamiento redireccion = " > " & ruta
	'Usamos SHELL para correr el proceso en este caso mysqldump que es el que realmente hace todo el trabajo para mayor informacion sobre este comando remitirse  a la documentacion de Mysql
	proceso = SHELL "mysqldump -u " & Variables.CFG_BD_USUARIO & pass & Variables.CFG_BD_NAME & redireccion FOR READ

Con lo que obtendriamos la siguiente ventana.


Con lo que inmediatamente guardamos nuestro backup con el nombre que le querramos asignar.
Si queremos restaurarlo el procedimiento es analogo salvo el comando de mysql que es el que se usa para restaurar

Dialog.Title = "Elija una ubicacion"
Dialog.Path = "."
Dialog.Filter = ["*.sql", "Ficheros sql"]
pass = " --password=" & Variables.CFG_BD_PASS & " "
IF NOT Dialog.OpenFile() THEN
	ruta = Dialog.Path
ENDIF
	redireccion = " < " & ruta
	proceso = SHELL "mysql -u " & Variables.CFG_BD_USUARIO & pass & Variables.CFG_BD_NAME & redireccion FOR READ


Y listo eso es todo asi de simple como se habran dado cuenta quien realmente hace el trabajo es mysql lo unico que he hecho con gambas es la interfaz grafica, haciendo uso de la orden SHELL para ejecutar los comandos.
Saludos y hasta la proxima.

Trabajando con Fechas en Gambas

PUBLIC FUNCTION formatDateBD(fec AS Date) AS String
   DIM dat AS String
   dat = Year(fec) / Month(fec) / Day(fec)
   RETURN dat
END

Las fechas en gambas pueden ser trabajadas con Date.
El cual se estructura de la siguiente forma:

Date = Date ( Year , Month , Day [ , Hours , Minutes , Seconds ] ) AS Date

Si quisieramos trabajar con una fecha obtenida de una base de datos y colocarla en un objeto calendar y en una caja de texto podriamos hacerlo de la siguiente forma:

Dim fec as Date
fec = resGuias[fecha]
GuiaRemision.Calendario.Year = Year(fec)
GuiaRemision.Calendario.Month = Month(fec)
GuiaRemision.Calendario.Day = Day(fec)
txtFecha.Text = Calendario.Day / Calendario.Month / Calendario.Year

Si queremos guardar una fecha obtenida en nuestro programa en la base de datos podemos usar la siguiente funcion.

PUBLIC FUNCTION formatDateBD(fec AS Date) AS String
	DIM dat AS String
	dat = Year(fec) / Month(fec) / Day(fec)
	RETURN dat
END

Y finalmente esto es lo que guardo en la base de datos donde el dato es de tipo Fecha segun el gestor de datos de Gambas.

Segun lo que estoy viendo esta no es la manera mas optima de trabajar pero funciona, asi que si alguien conoce alguna mejor, por favor espero me pueda ayudar.

Saludos