28 de marzo de 2012

Gambas2 El Visual Basic De Linux (UBUNTU)



Gambas es un lenguaje de programación líbre derivado de BASIC (de ahí que Gambas quiera decir Gambas Almost Means Basic).
Es distribuido con licencia GNU GPL. Cabe destacar que presenta ciertas similitudes conJava ya que en la ejecución de cualquier aplicación, se requiere un conjunto de librerías interprete previamente instaladas (Gambas Runtime) que entiendan el bytecode de las aplicaciones desarrolladas y lo conviertan en código ejecutable por el computador. Por otro lado, a diferencia de Java, no se experimentan ralentizaciones y es posible desarrollar grandes aplicaciones en poco tiempo.

Permite crear formularios con botones de comandos, cuadros de texto y muchos otros controles y enlazarlos abases de datos como MySQL, PostgreSQL o SQLite además de facilitar la creación de aplicaciones muy diversas como videojuegos (utilizando OpenGL), aplicaciones para dispositivos móviles (en desarrollo pero muy avanzado), aplicaciones de red (con manejo avanzado de protocolos HTTP, FTP, SMTP, DNS), entre otras.

Gambas puedes bajarlo de los repositorios de ubuntu, en caso que no ocupes ubuntu puedes descargarlo de la siguiente liga: http://gambas.sourceforge.net/en/main.html

En la sección “Descarga De Manuales” puedes descargar un tutorial muy bueno sobre este hermoso sistema orientado a objetos para programar.

26 de marzo de 2012

Ruta BD access desde directorio aplicación VS

C#


string rutaBD = Application.StartupPath + "\\bd.mdb";
            con = new conexionOleDb(rutaBD);


VB

Dim rutaBD As String = Application.StartupPath + "\bd.mdb"
        con = New conexionOleDb(rutaBD)


Pausa en aplicación VS

Muchas veces necesitamos que nuestra aplicación quede en modo espera o pausada para realizar un proceso externo y no tengamos problemas de sincronización, por ejemplo, cuando copiamos ficheros necesitamos que la aplicación se detenga unos segundos y después continuar el código. Sólo con una línea podemos pausar la aplicación durante el tiempo que queramos:

VB
System.Threading.Thread.Sleep(1000)

C#
System.Threading.Thread.Sleep(1000);


El parámetro es el tiempo medido en milisegundos (1000=1 segundo)

Ejecutar aplicaciones externas a VS



En este Form se cargan programas externos a nuestra aplicación, el Form para VB.NET queda así:


Public Class Form1

    Private Sub BNotepad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BNotepad.Click
        Process.Start("C:\Windows\System32\notepad.exe")
    End Sub

    Private Sub BConsola_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BConsola.Click
        Process.Start("C:\Windows\System32\cmd.exe")
    End Sub

    Private Sub BCalculadora_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BCalculadora.Click
        Process.Start("C:\Windows\System32\calc.exe")
    End Sub

    Private Sub BPowerpoint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BPowerpoint.Click
        Process.Start("C:\Archivos de programa\Microsoft Office\Office14\POWERPNT.EXE")
    End Sub

    Private Sub BOutlook_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BOutlook.Click
        Process.Start("C:\Archivos de programa\Microsoft Office\Office14\OUTLOOK.EXE")
    End Sub

    Private Sub BWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BWord.Click
        Process.Start("C:\Archivos de programa\Microsoft Office\Office14\WINWORD.EXE")
    End Sub

    Private Sub BExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BExcel.Click
        Process.Start("C:\Archivos de programa\Microsoft Office\Office14\EXCEL.EXE")
    End Sub
End Class





Para C# solo agreguen la directiva  using System.Diagnostics;



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Diagnostics;


namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void bNotepad_Click(object sender, EventArgs e)
        {
             Process.Start(@"C:\\Windows\\System32\\notepad.exe");
        }

        private void bConsola_Click(object sender, EventArgs e)
        {
            Process.Start(@"C:\Windows\System32\cmd.exe");
        }

        private void bCalculadora_Click(object sender, EventArgs e)
        {
             Process.Start(@"C:\Windows\System32\calc.exe");
        }

        private void bPowerpoint_Click(object sender, EventArgs e)
        {
        Process.Start(@"C:\Archivos de programa\Microsoft Office\Office14\POWERPNT.EXE");
        }

        private void bOutlook_Click(object sender, EventArgs e)
        {
            Process.Start(@"C:\Archivos de programa\Microsoft Office\Office14\OUTLOOK.EXE");
        }

        private void bWord_Click(object sender, EventArgs e)
        {
         Process.Start(@"C:\Archivos de programa\Microsoft Office\Office14\WINWORD.EXE");
        }

        private void bExcel_Click(object sender, EventArgs e)
        {
           Process.Start(@"C:\Archivos de programa\Microsoft Office\Office14\EXCEL.EXE");
        }   
        }}




  





Comprobar conexión a internet desde VS


Para conocer si hay conexión a Internet en caso tengamos un WebBrowser en la aplicación, para VB.NET se puede hacer esto:


Imports System.Net
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        compruebaConexion()
    End Sub

    Public Function compruebaConexion() As Boolean
        Dim request As WebRequest
        Dim response As WebResponse
        Dim Url As New Uri("http://www.pabletoreto.blogspot.com")
      
        Try
            'Creamos la request
            request = System.Net.WebRequest.Create(Url)
            'POnemos un tiempo limite
            request.Timeout = 5000
            'ejecutamos la request
            response = request.GetResponse
            response.Close()
            request = Nothing
            Label2.Text = System.Environment.MachineName & "si hay conexion a internet"
            Return True
        Catch ex As Exception
            'si ocurre un error, devolvemos error
            request = Nothing
            Label2.Text = "No hay conexion a internet"
            Return False
        End Try
    End Function
 End Class





Para conocer si hay conexión a Internet en caso tengamos un WebBrowser en la aplicación, para C# se puede hacer esto:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            compruebaConexion();
        }

        public bool compruebaConexion()
        {
            WebRequest request = null;
            WebResponse response = null;
            Uri Url = new Uri("http://www.pabletoreto.blogspot.com");

            try
            {
                //Creamos la request
                request = System.Net.WebRequest.Create(Url);
                //POnemos un tiempo limite
                request.Timeout = 5000;
                //ejecutamos la request
                response = request.GetResponse();
                response.Close();
                request = null;
                label1.Text = System.Environment.MachineName + "si hay conexion a internet";
                return true;
            }
            catch (Exception ex)
            {
                //si ocurre un error, devolvemos error
                request = null;
                label1.Text = "No hay conexion a internet";
                return false;
            }
        }
   
    }


}




Obtener PC usuario en VS



Para sacar u obtener el nombre del PC del usuario que utiliza nuestra aplicación VB.NET tenemos que agregar la siguiente línea en nuestro código fuente: 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Label1.Text = System.Environment.MachineName
    End Sub
 




Para sacar u obtener el nombre del PC del usuario que utiliza nuestra aplicación C#  tenemos que agregar la siguiente línea en nuestro código fuente: 



private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = System.Environment.MachineName;
        }

Obtener usuario Windows en VS


Para obtener el usuario Windows y mostrarlo en un label en VB


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Label1.Text = System.Environment.UserName
    End Sub




Para obtener el usuario Windows y mostrarlo en un label en C#


private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = System.Environment.UserName;
        }



25 de marzo de 2012

Teclas de función en VS

Dentro de un formulario o un objeto para utilizar las teclas de función es la sentencia siguiente, por ejemplo que al presionar F2 se ejecute el botón Nuevo, hay que utilizar el evento KeyUp y previamente hay que configurar el formulario con su propiedad KeyPreview a True 


En VB

Private Sub frmCliente_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp

        If e.KeyCode = Keys.F2 Then
            btnNuevo_Click(sender, e)
        End If

    End Sub




En C#

private void frmCliente_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F2)
            {
                btnNuevo_Click(sender, e);
            }

        }



TRUNCATE y DELETE en VS

TRUNCATE

Este comando remueve todas las filas de una tabla sin registrar las eliminaciones individuales en el log de transacciones. Prácticamente hace lo mismo que DELETE sin modificar o borrar la estructura de la tabla, sin embargo no se puede utilizar la clausula WHERE. TRUNCATE no permite filtrar por filas, elimina todos los registros de una tabla.

Por ejemplo:

TRUNCATE TABLE Autores

Esto eliminará todos los registros de la tabla Autores.

DELETE

DELETE también remueve las filas de una tabla, pero registra las eliminaciones individuales en el log de transacciones. Podemos utilizar la clausula WHERE para filtrar las filas que necesitemos eliminar.

Ejemplo:

DELETE FROM Autores (elimina todas las filas de la tabla autores)

DELETE FROM Autores WHERE IdCiudad = 30 (elimina las filas de la tabla autores que coincide con la condición indicada)

DIFERENCIAS ENTRE TRUNCATE Y DELETE

Ahora que sabemos en que consiste cada sentencia, veamos las semejanzas y diferencias:

- Ambas eliminan los datos, no la estructura.
- Solo DELETE permite la eliminación condicional de los registros.
- DELETE es una operación registrada en el log de transacciones, basada en registrar cada eliminación individual.
- TRUNCATE es una operación registrada en el log de transacciones, pero como un todo, en conjunto, no por eliminación individual. TRUNCATE se registra como una liberación de las páginas de datos en las cuales existen los datos.
- TRUNCATE es más rápida que DELETE.
- Ambas se pueden deshacer con un ROLLBACK.
- TRUNCATE reiniciará el contador para una tabla que contenga una columna IDENTITY.
- DELETE mantendrá el contador de la tabla para una columna IDENTITY.
- TRUNCATE es un comando DDL(lenguaje de definición de datos) mientras que DELETE es un DML(lenguaje de manipulación de datos).
- TRUNCATE no desencadena un TRIGGER, DELETE sí.

24 de marzo de 2012

ProgressBar y Timer en VS

El ProgressBar se maneja con un timer y la especificación de un limite que se mostrará al usuario cuando el progreso este finalizado, para este ejemplo se mostrara al ejecutar la aplicación un Formulario que al dar click sobre el botón de este indicara al ProgressBar que debe empezar a trabajar y al momento de completarse abrirá el Form2, así que se necesita:

1. Creamos un nuevo formulario que llamaré Form1, dentro de este insertamos un ProgressBar, un timer, un botón y un Label cuyo texto será el numero 0.



Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
        Timer1.Start()
        ProgressBar1.Enabled = True
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Timer1.Tick
        ProgressBar1.Value = ProgressBar1.Value + 1
        Label1.Text = CInt(Label1.Text) + 1
        ProgressBar1.Style = ProgressBarStyle.Continuous
        If CInt(ProgressBar1.Value) = 100 Then
            Timer1.Stop()
            Timer1.Enabled = False
            Me.Hide()
            Form2.Show()
        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
        Timer1.Enabled = False
        Timer1.Interval = 100
    End Sub
End Class



2. Agregamos un nuevo formulario que será Form2.










El mismo ejemplo pero con Form1 programado en C#




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            progressBar1.Value = progressBar1.Value + 1;
            label1.Text = (Convert.ToInt32(label1.Text) + 1).ToString();
            progressBar1.Style = ProgressBarStyle.Continuous;
            if (Convert.ToInt32(progressBar1.Value) == 100)
            {
                timer1.Stop();
                timer1.Enabled = false;
                this.Hide();
                Form2 form2 = new Form2();
                form2.Show();
            }
        }
    }
}