Poner la primer letra Mayúscula y las demás en minúscula (TRANSACT SQL, MYSQL)

En esta ocasión les mostrare como modificar las oraciones para que la primer letra de una oración comience con Mayúscula y las demás en Minúscula, este es un caso real que me toco resolver en una base de datos de la empresa en que trabajo, la misma trabaja sobre un motor de base de datos MYSQL.

Utilizo MYSQL GUI TOOLS 5.0 – MYSQL QUERY BROWSER

http://dev.mysql.com/downloads/gui-tools/5.0.html

Empecemos:

Cuando hacia un select al campo ‘lastname’ me aparecían los apellidos todos en mayúscula (PEREZ) o todo en minúscula (lopez), los cuales fueron omisiones de los data entry que ingresaron esos datos, en algunos casos los hicieron bien.

Les muestro la consulta:

image

Hice un backup de la base de datos (MYSQL), por las dudas que se rompa algo o haga mal la transacción.

Luego comencé una transacción para si se producía un error haría un roolback y no tendría que levantar nuevamente el backup:image

Luego ejecute la siguiente consulta (NOTA: lastname es el nombre del campo a actualizar!!!, deberían poner el nombre del campo que desean actualizar y cambiar el nombre de la tabla):

UPDATE hr_mysql.hs_job_application SET lastname = CONCAT (UCASE (SUBSTRING(lastname, 1, 1)), LCASE (SUBSTRING( lastname, 2)));

image

Luego nuevamente hago una consulta para ver los apellidos, si fueron modificados y el registro 757 el cual se muestra en la imagen de arriba que estaba minúscula fue modificado correctamente.

image

Por ultimo hacemos un commit a la transacción y listo.

Espero que les haya gustado.

Saludos.

Trigger en Transact SQL (SQL Server 2008) Ejemplo de Insert (DML)

En esta ocasión voy a publicar como crear un Trigger desde cero, para que tengan un pantallazo en general un Trigger es como su nombre lo dice un “desencadenador”, el cual ejecuta una serie de operaciones Transact SQL al producirse una acción en la base de datos, esta acción puede ser cambios a nivel datos (DML – Data Manipulation Language) y a nivel esquema (DDL – Data Definition Language), los cambios a nivel de datos se refieren a INSERT/DELETE/UPDATE que se puedan producir en los datos de la base de datos. Los Triggers se usan generalmente para hacer auditorias sobre las tablas, y para tener un mejor control de las mismas, ya que si los datos son borrados los mismos se pueden recuperar, también se pueden usar para guardar datos de algo en especifico como las compras de un proveedor.

Empezamos con el ejemplo de DML para cuando se produzca una acción de Insert sobre una determinada tabla. Las tablas que guardan estas acciones son dos INSERTED (inserciones) y DELETED (borrados).

Para ello creamos una tabla producto y otra tabla que contendrá todos los productos insertados.

Tabla Productos, “tb_Productos”, tiene los campos idProducto (llave primaria, identidad), nombre, precio.

image

Tabla “tb_Productos_Audit_Insert”, tiene los campos idProducto (clave primaria), nombre, precio, acción (guardara el nombre de la acción producida), fecha_accion (guarda la fecha y hora cuando se produce la acción de insert).

image

Cargo datos en la tabla Productos.

image

Luego creamos el Trigger:

CREATE TRIGGER [dbo]. [tg_Productos_Audit_Insert] //NOMBRE DEL TRIGGER
ON [dbo].[tb_Productos] //ELEGIMOS LA TABLA SOBRE LA CUAL SE REALIZARA
FOR INSERT //ELEGIMOS LA ACCION
AS
DECLARE @now datetime //DECLARO UNA VARIABLE QUE GUARDE LA FECHA Y HORA
DECLARE @accion nvarchar(10) //DECLARO UNA VARIABLE QUE TENDRA EL NOMBRE DE LA ACCION

BEGIN TRY //PONEMOS LA EJECUCION DE LA CONSULTA SQL DENTRO DE UN TRY PARA QUE SI NO SE EJECUTA CORRECTAMENTE HACEMOS UN ROLLBACK DE LA TRANSACCION
SET @now = getdate() //TOMO LA FECHA Y HORA
SET @accion = 'INSERTED' //PONGO EL NOMBRE DE LA ACCION

INSERT INTO [dbo].[tb_Productos_Audit_Insert] //TABLA PARA LA AUDITORIA DEL INSERT
(idProducto, Nombre, Precio, Accion, Fecha_Accion)
SELECT INSERTED.idProducto, INSERTED.Nombre, INSERTED.Precio, @accion, @now
FROM INSERTED // TRAE LOS VALORES DE LA TABLA INSERTED, SI BORRAMOS LOS DATOS LA TABLA VIRTUAL QUE CONTENDRA LOS DATOS BORRADOS ES DELETED
END TRY

BEGIN CATCH
ROLLBACK TRANSACTION //VUELVE ATRAS LOS CAMBIOS

RAISERROR (‘HUBO UN ERROR SOBRE LA INSERCION DE LA TABLA AUDITORA DE PRODUTOS’,20,1)
END CATCH

GO

HACEMOS ALGUNOS INSERT SOBRE LA TABLA PRODUCTOS.

HACEMOS una consulta de SELECT sobre la tabla auditora:

image

Los Triggers se guardan sobre la tabla en donde se utilizara:

image

Espero que les haya gustado, cualquier pregunta consúltenme, mi correo es cristian.ayala08@gmail.com

¿Como hacer una aplicación en Capas? (Parte II)

   En este post les voy a mostrar como generar una solución en Visual Studio 2008 (en mi caso es el Team System), para que puedan agregar varios proyectos (que serian las capas) a una misma solución.

   Los pasos son los siguientes:

  1. Abrimos el Visual Studio. Y luego vamos a File > New Project…

 

capas01

2.    En Proyect Types > Desplieguen la lista de “Other Project Types” > Hacer clic en “Visual Studio Solutions” > Y Seleccionar “Blank Solution” > En “Name”: Seleccionan el nombre que quieren que tenga su Solución y en “Location”: Seleccionan la ruta en donde se va a guardar la Solución, haciendo clic en “Browse…” podes recorrer tus directorios para seleccionar en donde guardar. (Por defecto para una solución se crea un directorio).

 

capas02

3.    El siguiente paso es para agregar los proyectos a la solución, en general cuando se trabaja con capas, se agregan proyectos de Class Library, de esa forma trabajaremos.

Para ello deben hacer lo siguiente (lo pueden hacer de dos formas):

   La primera: Es haciendo clic con botón derecho sobre nuestra solución en nuestro Explorador de Soluciones (“Solution Explorer”) > Luego hacer clic en Add > New Project…

 

capas03

   La segunda: Es haciendo clic en “File” > “Add” > “New Project…”

 

capas04

 

4.    Luego hay que elegir el proyecto que sea “Class Library”, como yo uso VB.net , lo seleccione como esta en la imagen. En “Name” tienen que poner los nombres de cada capa.

 

capas05

 

5.    Tienen que hacer lo mismo para todas las capas que agreguen. Y ya con eso terminan.

  

capas06

 

Espero que les haya gustado, para las próximas partes, veremos algún ejemplo de capas, para ver como funciona.

Saludos y que tengan felices fiestas!!!

¿Como hacer una aplicación en Capas? (Parte I)

Programación en capas primero a entender que es?

¿Cuantas capas existen para programar?

En la actualidad Se han propuesto diversas técnicas de programación, cuyo objetivo es mejorar tanto el proceso de creación de software como su mantenimiento. Entre ellas se pueden mencionar las programaciones lineal, estructurada, modular y orientada a objetos. Pero la programación en capas es el mejor método para la facilidad de el programador por este motivo existen n-capas pero El diseño más en boga actualmente es el diseño en tres niveles (o en tres capas).

Programación en 3 capas o Three-Tier: es un estilo de programación en la que el objetivo primordial es la separación de la lógica de negocios de la lógica de diseño, un ejemplo básico de esto es separar la capa de datos de la capa de presentación al usuario. La programación en capas es la técnica más efectiva en aplicaciones empresariales, debido a la fácil administración que implica el dividir los componentes de la aplicación en capas y la rapidez que esto implica en programas orientados a Cliente-Servidor. Esta arquitectura consiste en dividir los componentes primarios de la aplicación, programarlos por separado y después unirlos en tiempo de ejecución

clip_image003

Definición: Una capa representa un elemento del sistema que procesa o trata la información.

Características: Una capa puede residir (se ejecuta) en una maquina diferente o en diferentes espacios o entornos de procesos dentro de la misma maquina.

Diseñando Aplicaciones Distribuidas.

El diseño de aplicaciones modernas involucra la división de una aplicación en múltiples capas; la interface de usuario (IU), la capa media de objetos de negocios, y la capa de acceso a datos. Si se programa en 4 Capas, se le agrega una capa la cual es la de “Modelo” en la cual va una clase por cada tabla que haya en la base de datos, ya que va a tener los atributos de cada tabla las clases (Producto, Persona, etc).

Puede ser útil identificar los tipos de procesamiento que podemos esperar que una aplicación realice. Muchas aplicaciones pueden, al menos, hacer lo siguiente:

  • Cálculos u otros procesos de negocios.
  • Ejecución de reglas de negocios.
  • Validación de datos relacionados al negocio.
  • Manipulación de datos.
  • Ejecución de las reglas de datos relacional.
  • Interactuar con aplicaciones externas o servicios.
  • Interactuar con otros usuarios.

Nosotros podemos tomar estos tipos de servicios y generalizarlos dentro de los tres grupos o capas que a continuación se resumen:

· Interface de usuario (Capa de Presentación)

  • Interactuar con otros usuarios.
  • Interactuar con aplicaciones externas o servicios.

· Procesos de negocios (Capa de Negocios)

  • Cálculos u otros procesos de negocios.
  • Ejecución de reglas de negocios.
  • Validación de datos relacionados al negocio.

· Procesos de datos (Capa de Servicios de Datos).

  • Manipulación de datos.
  • Ejecución de las reglas de datos relacional.

La división de estos procesos de aplicaciones y su distribución entre diferentes procesos cliente/servidor es conocido como Procesamiento Distribuido. Generalizando estos procesos dentro de estas tres categorías o capas es una distribución lógica y no refleja necesariamente alguna opción de diseño físico sobre computadoras, terminales u otros equipos. Usted puede desarrollar una aplicación cliente/servidor distribuida basada sobre estas tres capas de Presentación, Lógica de Negocios y Servicios de Datos y tener la aplicación entera corriendo sobre una simple computadora. Alternativamente, usted puede esparcir estas tres capas a través de un gran número de diferentes computadoras sobre una red. De cualquier forma usted ha desarrollado una aplicación cliente/servidor de tres capas.

Capas o niveles

1 Capa de presentación (IU):

La capa de Presentación provee su aplicación con una interface de usuario (IU). Aquí es donde su aplicación presenta información a los usuarios y acepta entradas o respuestas del usuario para usar su programa (Generalmente son formularios WindowsForm, o de tipo consola, etc). Idealmente, la IU no desarrolla ningún procesamiento de negocios o reglas de validación de negocios. Por el contrario, la IU debería relegar sobre la capa de negocios para manipular estos asuntos. Aunque se puede poner validaciones sobre la IU, como validar datos de entrada que no sean correctos, como por ejemplo, si pedís que ingrese un dato numérico e ingresa un dato string (cadena), esa validación la haces en la IU, las validaciones de Negocio, como que el numero sea entre $50 a $100 va en la capa de Negocio.

Comprende las responsabilidades de lógica de presentación:

  • Navegabilidad del sistema
  • Validación de datos de entrada
  • Formateo de los datos de salida
  • Internacionalización
  • Reenderezado de presentación

Funciones de la capa de Presentación:

  • Recoger la información del Usuario.
  • Enviar esta información a la Capa de Negocios.
  • Recoger resultados de la Capa de Negocios
  • Presentar los resultados al usuario.

2 Capa de negocio:

Toda aplicación tiene código para implementar reglas de negocios, procesos relacionados a los datos o cálculos y otras actividades relativas a los negocios. La lógica de negocios debe mantenerse separada de la capa de presentación y de los servicios de datos.

Deben encapsular la lógica de negocios en un conjunto de objetos o componentes que no contienen presentación o código de servicios de datos. Teniendo separada lógicamente su lógica de negocios de ambas, la capa de presentación y servicios de datos, ganará en flexibilidad en término de donde usted puede almacenar físicamente la lógica de negocios.

Los objetos de negocios son diseñados para reflejar o representar sus negocios. Ellos se convierten en un modelo de sus entidades de negocios e interrelaciones. Esto incluye tanto objetos físicos como conceptos abstractos. Estos son algunos ejemplos de objetos del mundo real: un empleado, un cliente, un producto, una orden de compra.

Puede crear objetos de negocios de una orden conteniendo el código necesario para administrarse a si mismo, así usted nunca necesitará replicar código para crear ordenes, usted solo usará el objeto. Similarmente, un objeto cliente contiene y administra sus propios datos. Un buen diseño de un objeto cliente contiene todos los datos y rutinas necesitadas para representarlo a través del negocio completo, y puede ser usado a través de toda la aplicación de ese negocio.

No toda la lógica de negocio es la misma. Alguna lógica de negocio es un proceso intensivo de datos, requiriendo un eficiente y rápido acceso a la base de datos. Otras no requieren un frecuente acceso a los datos, pero es de uso frecuente por una interface de usuario robusta para la validación en la entrada de campos u otras interacciones de usuarios. Si nosotros necesitamos una validación al nivel de pantallas y quizás cálculos en tiempos real u otra lógica de negocios, pudiéramos considerar este tipo de lógica de negocios para ser parte de la IU, ya que en su mayor parte es usada por la interface de usuario.

Una alternativa de solución es dividir la capa de lógica de negocios en dos:

  • Objetos de negocios de la IU.
  • Objetos de negocios de datos.

Un ejemplo del objeto Empleado de la capa objetos de negocios de la IU proveerá propiedades y métodos para usar por el diseñador de la interface de usuario. Ejemplo de propiedades y métodos pudieran ser: IDEmpleado, Nombre, Dirección, etc., y como métodos crear una de compra, etc. El objeto Empleado de la capa de objetos de negocios de datos será responsable de los mecanismos de persistencias, interactuar con la base de datos. Los objetos de esta capa son considerados sin estado, solo poseen métodos.

Comprende las responsabilidades de lógica de negocio (o dominio) del sistema.

  • Resultado del análisis funcional:
  • Conjunto de reglas de negocio que abstraen el mundo real.
  • La capa de negocio ha de ser independiente de la capa de presentación y viceversa (en la medida de lo posible).

Funciones de la capa de Negocio:

  • Recibir la información de la capa de presentación
  • Interactuar con los servicios de datos para realizar la lógica de negocio y de la aplicación.
  • Enviar resultados a la capa de presentación

3 Capa de datos:

Es donde residen los datos. Está formada por uno o más gestor de bases de datos que realiza todo el almacenamiento de datos, reciben solicitudes de almacenamiento o recuperación de información desde la capa de negocio. Capa que sirve entre como puente entre la capa lógica de negocio y el proveedor de datos. Este capa pretende encapsular las especificidades del proveedor de datos tales como (SQL, Oracle, Sybase, archivos XML, texto, hojas electrónicas), a la siguiente capa. Hoy en día contamos con Enterprise Library, con la cual se nos facilita mas la Capa de Datos, para traer datos, modificar o borrar, etc (Mas adelante les hablare sobre esto).

Esta capa queda encargada de tomar la información de la base de datos dada una petición de la capa de Reglas del Negocio, que a su vez es generada por la capa de presentación.

Comprende las responsabilidades de lógica de persistencia de las entidades que maneja el sistema en desarrollo.

  • Inserción
  • Eliminación
  • Actualizaciones
  • Búsquedas

Funciones de la capa de Datos:

  • Almacenar Datos
  • Recibir datos
  • Mantenimientos de los datos
  • Integridad de los datos

En una arquitectura de tres niveles, los términos "capas" y "niveles" no significan lo mismo ni son similares.
El término "capa" hace referencia a la forma como una solución es segmentada desde el punto de vista lógico:
- Presentación
- Lógica de Negocio
- Datos
En cambio, el término "nivel", corresponde a la forma en que las capas lógicas se encuentran distribuidas de forma física. Por ejemplo:

Una solución de tres capas (presentación, lógica, datos) que residen en un solo ordenador (Presentación+lógica+datos). Se dice, que la arquitectura de la solución es de tres capas y un nivel.
Una solución de tres capas (presentación, lógica, datos) que residen en dos ordenadores (presentación+lógica, lógica+datos). Se dice que la arquitectura de la solución es de tres capas y dos niveles. Una solución de tres capas (presentación, lógica, datos) que residen en tres ordenadores (presentación, lógica, datos). La arquitectura que la define es: solución de tres capas y tres niveles.

Ventajas de trabajar con Capas:

    • Reutilización de capas;
    • Facilita la estandarización
    • Dependencias se limitan a intra-capa
    • Contención de cambios a una o pocas capas
    • darle seguridad y versatilidad al sistema
    • porque con objetos es mas fácil hacer crecer la aplicación
    • es mas ordenado
    • Clara distribución de las responsabilidades.
    • Es más fácil trabajar en equipo con otros desarrolladores y hasta armar equipos de desarrolladores para cada capa.
    • Podemos cambiar de repositorio de datos sin impacto en el resto de la aplicación.

Desventajas de trabajar con Capas:

    • A veces no se logra la contención del cambio y se requiere una cascada de cambios en varias capas;
    • Pérdida de eficiencia;
    • Trabajo innecesario por parte de capas más internas o redundante entre varias capas;
    • Dificultad de diseñar correctamente la granularidad de las capas.

¿Cuál es la diferencia con la programación tradicional?

¿Por qué esto es mejor que programar todo de una sola vez y qué diferencia hay entre una arquitectura y otra?

Las gráficas nos ayudarán a visualizar mejor estas diferencias.

MODELO TRADICIONAL

Todas las capas están ubicadas en un único elemento y al actualizar un elemento se tendrán que afectar todos

clip_image006

En este el cambio en la capa de presentación no afectará reglas del negocio y se pueden actualizar las funciones de reglas del negocio sin tener que cambiar el acceso a datos.

MODELO THREE-TIER

clip_image007

Como podemos apreciar en las gráficas, resulta mucho más práctico programar las capas por separado, sobretodo en situaciones que tenemos un equipo de trabajo de diferentes programadores o el proyecto es para una empresa con varias sucursales con políticas independientes.

¿Cuándo es recomendable utilizar esta arquitectura?

  • Cuando el proyecto es muy grande.
  • Cuando son varios los programadores y existen dificultades para coordinarlos, por ejemplo cuando el software se está desarrollando con programadores freelance que están muy lejos unos de los otros.
  • Cuando el programa es para una empresa con varias sucursales y cada sucursal puede tener algunos métodos y políticas diferentes.

 

En el próximo post les hablare de como hacer su proyecto en Cuatro Capas.

Espero que les haya gustado.

Aplicación Nº 12 (cotización)

Elaborar una aplicación que permita crear un objeto de la clase artículo al seleccionar “Alta” del menú Artículo y luego mostrar los artículos cargados en un cuadro combinado (Combo). Apenas el usuario seleccione un artículo se debe mostrar el precio del mismo, el interés es fijo para esta ocasión.

El diseño de la interfaz debe ser similar a la siguiente figura:

Programa 12

Al hacer click en el Menu de “Articulos”, y de nuevo en “Altas”, se agregaran los articulos al comboBox.

Programa 12 - Parte 2

Programa 12 - Parte 3

La venta a realizarse es a plazos, ello condiciona la cuota mensual a pagarse. Cuando se haga click sobre el botón Cuota mensual debe mostrarse un cuadro de diálogo con los datos propuestos:

Programa 12 - Parte 4

De manera similar al hacer click sobre el botón Total nos debe mostrar la cantidad total a pagar.

Programa 12 - Parte 5

Bueno pasemos al codigo del formulario.

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Text = "Pedido de cotizaciones"
        Me.Label1.Text = "Articulos"
        Me.Label2.Text = "Precio en US$"
        Me.Label3.Text = "Interes"
        Me.GroupBox1.Text = "Plazo:"
        Me.RadioButton1.Text = "6 meses"
        Me.RadioButton2.Text = "12 meses"
        Me.RadioButton3.Text = "24 meses"
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Me.TextBox1.Text = ""
        Me.TextBox2.Text = ""
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If MessageBox.Show("Desea Salir?", "Chau", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = Windows.Forms.DialogResult.OK Then
            MessageBox.Show("Ha decidido salir, chau!!!", "CHAU", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Me.Close()
        Else
            MessageBox.Show("Continua en la aplicacion", "Gracias", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If
    End Sub

    Private Sub AltasToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AltasToolStripMenuItem.Click
        Dim primerArt As String = "Televisor"
        Dim segundoArt As String = "Heladera"
        Dim tercerArt As String = "Computadora"
        Dim cuartoArt As String = "Cocina"

        Dim nuevoArticulo As New Articulo(primerArt, segundoArt, tercerArt, cuartoArt)

        Me.ComboBox1.Items.Add(nuevoArticulo.Primer)
        Me.ComboBox1.Items.Add(nuevoArticulo.Segundo)
        Me.ComboBox1.Items.Add(nuevoArticulo.Tercer)
        Me.ComboBox1.Items.Add(nuevoArticulo.Cuarto)

    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        Select Case (Me.ComboBox1.SelectedIndex)
            Case 0 : Me.TextBox1.Text = 600.2 REM televisor
            Case 1 : Me.TextBox1.Text = 900.5D REM heladera
            Case 2 : Me.TextBox1.Text = 2600D REM computadora
            Case 3 : Me.TextBox1.Text = 500.2D REM cocina
        End Select

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim cuotaMensual As Single
        Dim interes As Single

        If RadioButton1.Checked = True Then
            interes = Me.TextBox1.Text * 10 / 100
            cuotaMensual = (Me.TextBox1.Text + interes) / 6
            MessageBox.Show("Interes: $" & interes & "Cuota Mensual: $" & cuotaMensual, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End If

        If RadioButton2.Checked = True Then
            interes = Me.TextBox1.Text * 20 / 100
            cuotaMensual = (Me.TextBox1.Text + interes) / 12
            MessageBox.Show("Interes: $" & interes & "Cuota Mensual: $" & cuotaMensual, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End If

        If RadioButton3.Checked = True Then
            interes = Me.TextBox1.Text * 40 / 100
            cuotaMensual = (Me.TextBox1.Text + interes) / 24
            MessageBox.Show("Interes: $" & interes & "Cuota Mensual: $" & cuotaMensual, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End If

    End Sub

    Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
        Me.TextBox2.Text = "10%"
    End Sub

    Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
        Me.TextBox2.Text = "20%"
    End Sub

    Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged
        Me.TextBox2.Text = "40%"
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim interes As Single
        Dim total As Single

        If RadioButton1.Checked = True Then
            interes = Me.TextBox1.Text * 10 / 100
            total = Me.TextBox1.Text + interes
            MessageBox.Show("El total es " & total, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If

        If RadioButton2.Checked = True Then
            interes = Me.TextBox1.Text * 20 / 100
            total = Me.TextBox1.Text + interes
            MessageBox.Show("El total es " & total, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If

        If RadioButton3.Checked = True Then
            interes = Me.TextBox1.Text * 40 / 100
            total = Me.TextBox1.Text + interes
            MessageBox.Show("El total es " & total, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If

    End Sub
End Class

-----------------------------------------------------------------------------------------------------

Public Class Articulo
    Private _primerArt As String
    Private _segundoArt As String
    Private _tercerArt As String
    Private _cuartoArt As String
    Private _interesArt As Single

    Public Sub New()

    End Sub

    Public Sub New(ByVal primerArt As String, ByVal segundoArt As String, ByVal tercerArt As String, ByVal cuartoArt As String)
        Me.Primer = primerArt
        Me.Segundo = segundoArt
        Me.Tercer = tercerArt
        Me.Cuarto = cuartoArt
    End Sub

    Public Property Primer() As String
        Get
            Return _primerArt
        End Get
        Set(ByVal value As String)
            _primerArt = value
        End Set
    End Property

    Public Property Segundo() As String
        Get
            Return _segundoArt
        End Get
        Set(ByVal value As String)
            _segundoArt = value
        End Set
    End Property

    Public Property Tercer() As String
        Get
            Return _tercerArt
        End Get
        Set(ByVal value As String)
            _tercerArt = value
        End Set
    End Property

    Public Property Cuarto() As String
        Get
            Return _cuartoArt
        End Get
        Set(ByVal value As String)
            _cuartoArt = value
        End Set
    End Property
End Class

Aplicación Nº 11 (salario)

Elaborar una aplicación que permita calcular el salario neto de un trabajador en función del número de horas trabajadas, pago por hora de trabajo y un descuento fijo al sueldo bruto del 20%. Los cálculos a efectuar para obtener el salario neto de un trabajador se muestran a continuación:


SalarioBruto = HorasTrabajadas * PagoPorHora

Descuento = 0.2 * SalarioBruto

SalarioNeto = SalarioBruto – Descuento

El diseño de la interfaz debe ser similar a la figura mostrada:

Programa 11

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Label1.Text = "Apellido y Nombre:"
        Label2.Text = "Horas Trabajadas:"
        Label3.Text = "Pago por Hora:"
        GroupBox1.Text = "Ingreso de Datos"
        Label4.Text = "Salario Bruto:"
        Label5.Text = "Descuento:"
        Label6.Text = "Salario Neto:"
        GroupBox2.Text = "Salia de Datos"
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text <> "" And TextBox2.Text <> "" And TextBox3.Text <> "" Then
            Dim nombre As String
            Dim horasTrabajadas As Integer
            Dim pagoPorHora As Single

            nombre = TextBox1.Text.ToString
            horasTrabajadas = CInt(TextBox2.Text) REM horasTrabajadas = single.parse(textbox2.text)
            pagoPorHora = CSng(TextBox3.Text) REM pagoPorHora = single.parse(textbox2.text)

            Dim nuevoEmpleado As New Empleado(nombre, horasTrabajadas, pagoPorHora)

            nuevoEmpleado.Bruto()
            nuevoEmpleado.Neto()
            nuevoEmpleado.DescuentoHecho()

            Me.TextBox4.Text = nuevoEmpleado.SalarioBruto.ToString
            Me.TextBox5.Text = nuevoEmpleado.Descuento.ToString
            Me.TextBox6.Text = nuevoEmpleado.SalarioNeto.ToString

        Else
            MessageBox.Show("Por Favor ingrese los datos!", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        End If

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""
        TextBox5.Text = ""
        TextBox6.Text = ""
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If MessageBox.Show("Desea Salir?", "Chau", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = Windows.Forms.DialogResult.OK Then
            MessageBox.Show("Ha decidido salir!, CHAU!!!")
            Me.Close()
        Else
            MessageBox.Show("Gracias por continuar")
        End If
    End Sub
End Class

------------------------------------------------------------------------------------------------

Public Class Empleado

    Private _nombre As String
    Private _horasTrabajadas As Single
    Private _pagoPorHora As Single
    Private _salarioBruto As Single
    Private _descuento As Single
    Private _salarioNeto As Single
    Public Sub New(ByVal nombre As String, ByVal horasTrabajadas As Single, ByVal pagoPorHora As Single)
        Me._nombre = nombre
        Me._horasTrabajadas = horasTrabajadas
        Me._pagoPorHora = pagoPorHora

    End Sub

    Public Property Nombre() As String
        Get
            Return _nombre
        End Get
        Set(ByVal value As String)
            _nombre = value
        End Set
    End Property

    Public Property HorasTrabajadas() As Single
        Get
            Return _horasTrabajadas
        End Get
        Set(ByVal value As Single)
            _horasTrabajadas = value
        End Set
    End Property

    Public Property PagoPorHora() As Single
        Get
            Return _pagoPorHora
        End Get
        Set(ByVal value As Single)
            _pagoPorHora = value
        End Set
    End Property

    Public Property SalarioBruto() As Single
        Get
            Return _salarioBruto
        End Get
        Set(ByVal value As Single)
            _salarioBruto = value
        End Set
    End Property
    Public Property Descuento() As Single
        Get
            Return _descuento
        End Get
        Set(ByVal value As Single)
            _descuento = value
        End Set
    End Property
    Public Property SalarioNeto() As Single
        Get
            Return _salarioNeto
        End Get
        Set(ByVal value As Single)
            _salarioNeto = value
        End Set
    End Property

    Public Sub Bruto()
        Me.SalarioBruto = Me._pagoPorHora * Me._horasTrabajadas
    End Sub

    Public Sub DescuentoHecho()
        Me.Descuento = CType(0.2 * Me._salarioBruto, Single)
    End Sub

    Public Sub Neto()
        Me.SalarioNeto = Me._salarioBruto - Me._descuento

    End Sub

End Class

Programa 11 - Parte 2

Aplicación Nº 8 (Manejo de cadena)

Escriba una función que reciba como argumento una cadena de caracteres, la devuelva en forma inversa y ordena alfabéticamente sus letras.

Octavo Programa

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim cadena As String
        Dim caracter() As Char

        cadena = TextBox1.Text()

        TextBox2.Text = StrReverse(cadena)

        caracter = cadena.ToCharArray()

        For i As Integer = 1 To caracter.Length

            Array.Sort(caracter)

            TextBox3.Text = caracter

        Next

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Me.TextBox1.Text = ""
        Me.TextBox2.Text = ""
        Me.TextBox3.Text = ""
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim respuesta As DialogResult

        respuesta = MessageBox.Show("Desea Continuar", "Seleccione una opcion", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

        If (respuesta = Windows.Forms.DialogResult.No) Then
            Me.Close()
        End If
        End
    End Sub

End Class

Octavo Programa - Parte 2