martes, 27 de marzo de 2012

DataGrid en vb y c#


Saludos Ami@s
Hoy hablaremos sobre la creaciones de consultas en c· y Vb.net, en este artículos mostrare paso como hacerla en los dos lenguajes de programación, ustedes elegirán cuál  van a aplicar dependiendo del lenguaje de preferencia.

Bien después de haber iniciando  un Proyecto Nuevo, procedemos  insertar el Objeto DataGridView que se encuentra dentro de la Ficha Data del ToolBox. Como se muestra en la figura siguiente:

Lo dibujamos en e el formulario tomando en cuento la cantidad de campos que deseamos mostrar.

Estando seleccionado el objeto DataGridview procedemos a ponerle un nombre para poder hacer referencia a él más adelante, lo denominaremos dgvestudiantes
Ahora entremos a lo que a mí más me gusta…  Los Códigos.
Lo primero que debemos hacer es indicarle al .net con cual proveedor de datos vamos a trabajar, esto lo pulsando doble clic en el formulario y posicionándonos en la parte superior donde inician los códigos que se generan por defecto.
En Vb.net
Imports System.Data
Imports System.Data.OleDb

En C#
using System.Data;
using system.Data.OleDb;


En el evento Load escribimos el siguiente código para que cuando se cargue el formulario automaticamente muestre los datos en el datagrid View.




En Vb.Net
 REM Creo la cadena de conexion para Office 2007
 Dim cadena As String
cadena = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Sistema\Pratcicas\Estudiantes.accdb;Persist Security Info=False" REM Objeto conexion
        Dim conexion As OleDbConnection = New OleDbConnection(cadena)
        REM declaro una variable que va a contener la sentencia sql para mostrar los campos
        Dim strsql As String
        strsql = "SELECT TOP 15 MATEST AS Matricula, NOMEST AS Nombre, APEEST AS Estudiante, DIREST as Direccion, TELEST AS Telefono FROM TblEstudiantes"
        REM TOP 15 es para que solo me muestre los primeros 15 registros y asi no tardar tanto cargando los registros.

        REM Abro la conexion
        conexion.Open()
        REM Creo el adaptador y selecciono los datos de la tabla
        Dim adap As OleDbDataAdapter = New OleDbDataAdapter(strsql, conexion)
        REM Creo el DataSet
        Dim dsDatos As DataSet = New DataSet()
        REM Relleno el adaptador con los datos en memoria
        adap.Fill(dsDatos, "TblPrueba")
        REM Creo el miembro de datos del DataGridView
        dvgestudiantes.DataMember = "TblEstudiantes"
        REM muestro los datos al DataGridView
        dvgestudiantes.DataSource = dsDatos




ahora vermeos el código en  En C#
//Creo la cadena de conexion para Office 2007
            string cadena = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Sistema\Pratcicas\Estudiantes.accdb;Persist Security Info=False";
            //Objeto conexion
            OleDbConnection conexion = new OleDbConnection(cadena);
            //Abro la conexion
            conexion.Open();
            // declaro una variable que va a contener la sentencia sql para mostrar los campos
            string strsql;
strsql = "SELECT TOP 15 MATEST AS Matricula, NOMEST AS Nombre, APEEST AS Estudiante, DIREST as Direccion, TELEST AS Telefono FROM TblEstudiantes";
            // TOP 15 es para que solo me muestre los primeros 15 registros y asi no tardar tanto cargando los registros.
           
            //Creo el adaptador y selecciono los datos de la tabla
            OleDbDataAdapter adap = new OleDbDataAdapter(strsql, conexion);
            //Creo el DataSet
            DataSet dsDatos = new DataSet();
            //Relleno el adaptador con los datos en memoria
            adap.Fill(dsDatos, "TblEstudiantes");
            //Creo el miembro de datos del DataGridView
            this.dvgestudiantes.DataMember = "TblEstudiantes";
            //Muestro los datos al DataGridView
            this.dvgestudiantes.DataSource = dsDatos;


Como pueden ver la forma para hacerlo es muy parecida, algunos cambios en cuanto a la declaración de variable y el punto y coma para c#.
Ahora le muestro como quedaría la consulta utilizando el DataGridview.







viernes, 23 de marzo de 2012

Cursos Virtuales


Introducción a  Base de Datos (Curso Gratis!!)

El curso se basa en un enfoque teórico y práctico, e incluye la realización de numerosos ejercicios para una mejor comprensión de los conceptos expuestos.
Introducción a base de datos proporciona toda la documentación y materiales necesarios para lograr el entendimiento y crear los conocimientos imprescindibles para adentrarse al desarrollo y administración de base de datos, el curso  será impartido por un programador con experiencia real tanto en gestión de proyectos como en diseño y  administración de base de datos.

Para solicitar este curso envia los siguientes datos:
Nombre y Apellido, Cedula, Telefono o celular.
e mail:  formaterd@gmail.com

Att.
Diognees Amaury Ms
Director

FormateRD, Formación Virtual, Con calidad Presencial.

jueves, 22 de marzo de 2012

Integridad Referencial

La integridad referencial es un sistema de reglas que utilizan las bases de datos relacionales para asegurarse que los registros de tablas relacionadas son válidos y que no se borren o cambien datos relacionados de forma accidental produciendo errores de integridad, pero al mismo tiempo permiten también que si borra o actualiza un registro relacionado, todos los registro dependiente de este sea afectados.

Para hablar de integridad referencial, antes debemos tocar el tema de tipos de relaciones, ya que trabajan en conjunto.

Tipos de relaciones:
Entre dos tablas de cualquier base de datos relacional pueden haber dos tipos de relaciones, relaciones uno a uno y relaciones uno a muchos:

Relación Uno a Uno: Cuando un registro de una tabla sólo puede estar relacionado con un único registro de la otra tabla y viceversa.
Por ejemplo: tenemos dos tablas una de profesores y otra de departamentos y queremos saber qué profesor es jefe de qué departamento, tenemos una relación uno a uno entre las dos tablas ya que un departamento tiene un solo jefe y un profesor puede ser jefe de un solo departamento.

Relación Uno a Varios: Cuando un registro de una tabla (tabla secundaria) sólo puede estar relacionado con un único registro de la otra tabla (tabla principal) y un registro de la tabla principal puede tener más de un registro relacionado en la tabla secundaria, en este caso se suele hacer referencia a la tabla principal como tabla 'padre' y a la tabla secundaria como tabla 'hijo', entonces la regla se convierte en 'un padre puede tener varios hijos pero un hijo solo tiene un padre (regla más fácil de recordar).

Por ejemplo: tenemos dos tablas una con los datos de diferentes poblaciones y otra con los habitantes, una población puede tener más de un habitante, pero un habitante pertenecerá (estará empadronado) en una única población. En este caso la tabla principal será la de poblaciones y la tabla secundaria será la de habitantes. Una población puede tener varios habitantes pero un habitante pertenece a una sola población. Esta relación se representa incluyendo en la tabla 'hijo' una columna que se corresponde con la clave principal de la tabla 'padre', esta columna es lo denominamos clave foránea (o clave ajena o clave externa).
Una clave foránea es pues un campo de una tabla que contiene una referencia a un registro de otra tabla. Siguiendo nuestro ejemplo en la tabla habitantes tenemos una columna población que contiene el código de la población en la que está empadronado el habitante, esta columna es clave ajena de la tabla habitantes, y en la tabla poblaciones tenemos una columna codigo de poblacion clave principal de la tabla.

Relación Varios a Varios: Cuando un registro de una tabla puede estar relacionado con más de un registro de la otra tabla y viceversa. En este caso las dos tablas no pueden estar relacionadas directamente, se tiene que añadir una tabla entre las dos que incluya los pares de valores relacionados entre sí.
Por ejemplo: tenemos dos tablas una con los datos de clientes y otra con los artículos que se venden en la empresa, un cliente podrá realizar un pedido con varios artículos, y un artículo podrá ser vendido a más de un cliente.
No se puede definir entre clientes y artículos, hace falta otra tabla (por ejemplo una tabla de pedidos) relacionada con clientes y con artículos. La tabla pedidos estará relacionada con cliente por una relación uno a muchos y también estará relacionada con artículos por un relación uno a muchos.


Integridad referencial:
Cuando se define una columna como clave foránea, las filas de la tabla pueden contener en esa columna o bien el valor nulo (ningún valor), o bien un valor que existe en la otra tabla, un error sería asignar a un habitante una población que no está en la tabla de poblaciones. Eso es lo que se denomina integridad referencial y consiste en que los datos que referencian otros (claves foráneas) deben ser correctos. La integridad referencial hace que el sistema gestor de la base de datos se asegure de que no hayan en las claves foráneas valores que no estén en la tabla principal.
La integridad referencial se activa en cuanto creamos una clave foránea y a partir de ese momento se comprueba cada vez que se modifiquen datos que puedan alterarla.
¿ Cuándo se pueden producir errores en los datos?
Cuando insertamos una nueva fila en la tabla secundaria y el valor de la clave foránea no existe en la tabla principal. insertamos un nuevo habitante y en la columna poblacion escribimos un código de poblacion que no está en la tabla de poblaciones (una población que no existe).
Cuando modificamos el valor de la clave principal de un registro que tiene 'hijos', modificamos el codigo de Valencia, sustituimos el valor que tenía (1) por un nuevo valor (10), si Valencia tenía habitantes asignados, qué pasa con esos habitantes, no pueden seguir teniendo el codigo de población 1 porque la población 1 ya no existe, en este caso hay dos alternativas, no dejar cambiar el codigo de Valencia o bien cambiar el codigo de población de todos los habitantes de Valencia y asignarles el código 10.
Cuando modificamos el valor de la clave foránea, el nuevo valor debe existir en la tabla principal. Por ejemplo cambiamos la población de un habitante, tenía asignada la población 1 (porque estaba empadronado en valencia) y ahora se le asigna la población 2 porque cambia de lugar de residencia. La población 2 debe existir en la tabla de poblaciones.
Cuando queremos borrar una fila de la tabla principal y ese registro tiene 'hijos', por ejemplo queremos borrar la población 1 (Valencia) si existen habitantes asignados a la población 1, estos no se pueden quedar con el valor 1 en la columna población porque tendrían asignada una población que no existe. En este caso tenemos dos alternativas, no dejar borrar la población 1 de la tabla de poblaciones, o bien borrarla y poner a valor nulo el campo poblacion de todos sus 'hijos'.
Asociada a la integridad referencial están los conceptos de actualizar los registros en cascada y eliminar registros en cascada.


Actualización y borrado en cascada


El actualizar y/o eliminar registros en cascada, son opciones que se definen cuando definimos la clave foránea y que le indican al sistema gestor qué hacer en los casos comentados en el punto anterior.
          Actualizar registros en cascada:

Esta opción le indica al sistema gestor de la base de datos que
 cuando se cambie un valor del campo clave de la tabla principal, automáticamente cambiará el valor de la clave foránea de los registros relacionados en la tabla secundaria. 

Por ejemplo, si cambiamos en la tabla de poblaciones (la tabla principal) el valor 1 por el valor 10 en el campo codigo (la clave principal), automáticamente se actualizan todos los habitantes (en la tabla secundaria) que tienen el valor 1 en el campo poblacion (en la clave ajena) dejando 10 en vez de 1.
Si no se tiene definida esta opción, no se puede cambiar los valores de la clave principal de la tabla principal. En este caso, si intentamos cambiar el valor 1 del codigo de la tabla de poblaciones , no se produce el cambio y el sistema nos devuelve un error o un mensaje que los registros no se han podido modificar por infracciones de clave.
         Eliminar registros en cascada:
 
Esta opción le indica al sistema gestor de la base de datos que
 cuando se elimina un registro de la tabla principal automáticamente se borran también los registros relacionados en la tabla secundaria. 

Por ejemplo: Si borramos la población Onteniente en la tabla de poblaciones, automáticamente todos los habitantes de Onteniente se borrarán de la tabla de habitantes.
Si no se tiene definida esta opción, no se pueden borrar registros de la tabla principal si estos tienen registros relacionados en la tabla secundaria. En este caso, si intentamos borrar la población Onteniente, no se produce el borrado y el sistema nos devuelve un error o un mensaje que los registros no se han podido eliminar por infracciones de clave.

  Fuente: AulaClic
   



viernes, 16 de marzo de 2012

Clases Y Funciones vb.net


Hoy vamos a mostrar la forma de crear clases en vb.net  utilizando funciones, la idea es crear una clase llamada Nomina, la cual va a contener funciones para Calcular en base al sueldo bruto del empleado,  el Ahorro de fondo de pensiones (afp), Sfs (seguro Familiar de salud (sfs), Total de descuento ( afp +  sfs) y por último sueldo neto (sualdo bruto  menos el descuento).

Lo primero que tenemos que hacer es crear la clase, para ello  en el Solution Explorer pulsamos clic derecho y nos ubicamos en la opción Add, luego seleccionamos la opción que dice Class .
1)
2)




y se mostrara un código como el siguiente:
Public Class Class1

End Class
Sustituimos Class1 por el nombre que le vamos a asignar en nuestro caso la llamaremos Nomina.
Public Class Nomina

End Class
Luego procedemos a crear las funciones que mencionamos anteriormente, recordando que una función desde el punto de vista de programación, se define como un proceso que recibe valores de entrada (llamados argumentos) y retornan un resultado.
Dentro de la clase vamos a definir las funciones que necesitamos, iniciamos con la de afp, el orden no es necesario para estos fines.
Public Class nomina
   
     Public Shared Function afp(ByVal sb As Double) As Double
        afp = sb * 0.03
     End Function
   
   
   Public Shared Function sfs(ByVal sb As Double) As Double
        sfs = sb * 0.02
    End Function
  Public Shared Function descuento(ByVal des_afp As Double, ByVal des_sfs As Double) As Double
        descuento = des_afp + des_sfs
    End Function


Public Shared Function sueldo_neto(ByVal sb As Double, ByVal totdes As Double) As Double
        sueldo_neto = sb - totdes
    End Function
End Class

Después de crear la clase, podemos proceder a llamarla desde cualquier formulario de nuestro proyecto.
Ejemplo.
txtafp.Text = nomina.afp(txtsueldo.Text)
txtsfs.Text = nomina.sfs(txtsueldo.Text)
txtdescuento.Text = nomina.descuento(txtafp.Text, txtsfs.Text)
TXTSUELDONET.Text = nomina.sueldo_neto(txtsueldo.Text, txtdescuento.Text)

Como ustedes comprederan la programación utilizandos clase nos proporciona una mejor reutilización de nuestro código y nos facilita el mantenimiento de nuestras aplicaciones.



En la próxima entrega estaremos viendo como hacer esto en c#, muy parecido les adelanto.

Att. Diógenes Amaury MS



miércoles, 14 de marzo de 2012

Ejemplo con Java


Por. Diógenes Amaury MS
Trabajando con java.

Hoy le presento parte de el código que esteoy utilizando en mi paseo por el mundo Java, o mejor dicho los que mis queridos estudiante de la Universidad llaman "Open Source", lo mejor según ellos. y aunque prefiero a Microsoft debo admitir que me esta gustando  lo de java, eclipse y sqllite,  pero como siempre e dicho no podemos limitarnos a teorizar, debemos pasar a la practica.

Lo que le presento en esta ocasión se trata de un formulario que determina la nota final de la universidad O&M.



 Botón Limpiar:
 private void jButton2MouseClicked(java.awt.event.MouseEvent evt)
   {
        txtap.setText("");
        txtpp.setText("");
        txttp.setText("");
        txtef.setText("");
        txtnf.setText("");
        txtmensaje.setText("");
        txtap.requestFocusInWindow();
    }


Botón calcular:
        private void jButton1MouseClicked(java.awt.event.MouseEvent evt)
        {
        //validando los datos, para esto pregunto si el Jtextfield es =""
        if (txtap.getText().equals(""))
        {
            txtmensaje.setText("Por favor indique el valor de AP");
            txtap.requestFocusInWindow();
        }
        else if (txtpp.getText().equals(""))
        {
            txtmensaje.setText("Por favor indique el valor de PP");
            txtpp.requestFocusInWindow();
        }
     
        else if (txttp.getText().equals(""))
        {
            txtmensaje.setText("Por favor indique el valor de TP");
            txttp.requestFocusInWindow();
        }
     
        else if (txtef.getText().equals(""))
        {
            txtmensaje.setText("Por favor indique el valor de EF");
            txtef.requestFocusInWindow();
        }
        else
        {
        int ap,pp,tp,ef,nf;
        ap= Integer.parseInt(txtap.getText());
        pp= Integer.parseInt(txtpp.getText());
        tp= Integer.parseInt(txttp.getText());
        ef= Integer.parseInt(txtef.getText());
        nf=ap+pp+tp+ef;
        txtnf.setText(String.valueOf(nf));
        txtmensaje.setText("");
        }
     
      }

Para centralizar la ventana:
dialog.setLocationRelativeTo(null);
este codigo lo colocamos en esta area del código.

             public void run() {
                NewJDialog dialog = new NewJDialog(new javax.swing.JFrame(), true);
             
                dialog.setLocationRelativeTo(null);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {

                    @Override
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);

LA CRISIS SEGÚN ALBERT EINSTEIN


Un día como hoy nace  Albert Einstein 14 de marzo de 1879 - 1955
Está considerado como el científico más importante del siglo XX.
El vivió 76 años y realizo teorías que estaban por un nivel superior al de sus colegas científicos, realizo 7 Informes, 3 teorías que hoy son de gran relevancia y obtuvo un Premio Nobel de física en 1921.
Albert Einstein 14 de marzo de 1879 - 1955

LA CRISIS SEGÚN ALBERT EINSTEIN:

La creatividad nace de la angustia como el día nace de la noche oscura. Es en la crisis que nace la inventiva, los descubrimientos y las grandes estrategias. Quien supera la crisis se supera a sí mismo sin quedar superado.


“No pretendamos que las cosas cambien, si siempre hacemos lo mismo. La crisis, es la mejor bendición que puede sucederle a personas y países, porque la crisis trae progresos. La creatividad nace de la angustia como el día nace de la noche oscura. Es en la crisis que nace la inventiva, los descubrimientos y las grandes estrategias. Quien supera la crisis se supera a sí mismo sin quedar superado.

Quien atribuye a la crisis sus fracasos y penurias, violenta su propio talento y respeta más a los problemas que a las soluciones.

La verdadera crisis, es la crisis de la incompetencia.

El inconveniente de las personas y los países es la pereza para encontrar las salidas y soluciones. Sin crisis no hay desafíos, sin desafíos la vida es una rutina, una lenta agonía. Sin crisis no hay méritos.

Es en la crisis donde aflora lo mejor de cada uno, porque sin crisis todo viento es caricia. Hablar de crisis es promoverla, y callar en la crisis es exaltar el conformismo. En vez de esto, trabajemos duro. Acabemos de una vez con la única crisis amenazadora, que es la tragedia de no querer luchar por superarla.”

Albert Einstein.
1879-1955.



martes, 13 de marzo de 2012

DataGridVieww en C#

Trabajando con un DatagridView
Por Diogenes Amaury MS ( diogenesamaury.blogspot.com )
El control  DataGridView proporciona una tabla personalizable para mostrar datos. La clase DataGridView permite personalizar celdas, filas, columnas.
Puede utilizar un control DataGridView para mostrar datos con o sin un origen de datos subyacente. Sin especificar un origen de datos, puede crear las columnas y filas que contendrán los datos y agregarlas directamente a DataGridView.

Iniciemos ahora con las propiedades y metodos que intervienen en este objeto:
.Rows: hace referencia a una fila del grid.
[. CurrentRow.Index:] especifica la fila tenemos seleccionada.
.Cells[columna].Value : Se refiere al valor de la celda que tenemos seleccionada en el grid, en donde columna es el nombre de la celda o campo.
ToString() :para convertir el valor del resultado en string para poder asignarlo a la propiedad text de nuestro textbox.
.Rows.RemoveAt(Fila):Elimina un elemnto de un determinado objeto, esto aplica para un DatagridView, ComboBox, Listviws ect.


Iniciamos por dibujar el objeto  y para nuestro caso en la propiedad name asignamos el nombre del objeto, para nuestro caso será 
DGVDET



Llenando un DataGridView:
DGVDET.Rows.Add(TXTCODPRO.Text,TXTDESPRO.Text,TXTCANPRO.Text,TXTPREPRO.Text,Convert.ToDouble(TXTPREPRO.Text)* Convert.ToDouble(TXTCANPRO.Text));

la forma es bien sencilla:
DGVDET.Rows.Add(): agrega una fila, dentro del ( ) escribimos los objetos que llenaran dicho objeto.

Acumulando los elementos que pasamos a un datagridview en un objeto textbox.
txttotpro.Text =Convert.ToString(Convert.ToDouble(txttotpro.Text) + (Convert.ToDouble(TXTPREPRO.Text) * Convert.ToDouble(TXTCANPRO.Text)));

Asignando datos de un DatagridView a un Texbox:

 TXTCODPRO.Text = DGVDET.Rows[DGVDET..CurrentRow.Index].Cells[0].Value.ToString();
 TXTDESPRO.Text = DGVDET.Rows[DGVDET..CurrentRow.Index].Cells[1].Value.ToString();
 TXTCANPRO.Text = DGVDET.Rows[DGVDET..CurrentRow.Index].Cells[2].Value.ToString();
 TXTPREPRO.Text = DGVDET.Rows[DGVDET..CurrentRow.Index].Cells[3].Value.ToString();


   Eliminando Filas de un DataGridView:
   int fila = DGVDETALLE.CurrentRow.Index;
   DGVDETALLE.Rows.RemoveAt(fila);