sábado, 14 de abril de 2012

Como crear un proyecto en .Net (Visual Studio 2011), paso a paso.

Para realizar un nuevo proyecto  en este caso un proyecto de encuestas, necesitaremos como primer paso crear una nueva tabla de datos en Access, a esta tabla la llamaremos con el nombre de “Encuesta”. Les mostrare la imagen del ejemplo de la tabla para que puedan llenarla con los campos que se muestran, la tabla debe quedarle de la siguiente manera…


Como se muestra en la imagen la clave principal la llamaremos “IdEncuesta” y es de tipo autonumerico. En el campo “Sexo” lo pondremos de tipo texto y el  tamaño de campo será de 1 caracter, porque? Porque solo representaremos el tipo de sexo con una sola letra las cuales son las iníciales, una “M” para masculino y una “F” para femenino. Como siguiente campo tenemos la “Edad” lo pondremos de tipo numérico (numero). Ahora para las dos primeras preguntas que se muestran en la imagen (“preg1, preg2”) las pondremos de tipo texto, el tamaño de campo para estas  los pondremos más o menos 50 caracteres. Y para las preguntas restantes (“preg3, preg4, preg5, preg6”)  las pondremos también de tipo texto, el tamaño de campo será de solo 2 caracteres porque estas preguntas solo las responderán con un Sí o con un No.  Luego guardamos cambios y  el archivo lo guardamos en una carpeta que llevara por nombre “Encuesta”, esta carpeta la podemos crear en nuestro equipo en la unidad C: pero en este caso yo creare una carpeta con el nombre de “Encuesta” y la guardare en la unidad E esta unidad es la de mi memoria  y es allí en esa carpeta donde guardaremos el archivo de Access con el nombre de “Encuesta” .Sin nada más que hacer en Access, seguiremos a realizar el siguiente paso.

Como siguiente paso abriremos el programa Visual Studio, luego en el programa damos clic en  “Archivo” y después clic en “Nuevo proyecto” o si queremos usamos la combinación de teclas Ctrl+N, luego de haber hecho esto nos aparecerá una ventana de esta forma…


El nombre del proyecto que seleccionaremos la opción  “Aplicación de Windows forms” y le pondremos el nombre de  “Registro_de_Encuesta” . (Ojo tenemos que fijarnos que nuestro nombre de proyecto o de cualquier otro elemento o formulario  tiene que ser pegado o separado por guiones pero no deben de llevar espacios en blanco). Luego clic en “aceptar”. Después nos aparecerá esta ventana…


En esta ventana nos aparece ya creado un formulario , a ese formulario le cambiaremos de nombre en la sección del explorador de soluciones que nos aparece en la esquina superior izquierda en la imagen y luego  dando clic derecho y luego cambiar nombre y se lo cambiaremos  a “frmEncuesta.vb”, en este caso tenemos que ponerle la extensión “.vb” al final del nombre para que no nos genere un error. Una vez creado el formulario pasaremos al siguiente paso.

Agregaremos un nuevo origen de datos, esta la encontraremos en la pestaña “Datos” de opciones de visual studio, luego clic en “Agregar nuevo origen de datos” nos aparecerá la siguiente ventana…

 Le damos clic en “Siguiente” y nos aparecerá otra ventana similar a la anterior,  le damos clic en la opción “Conjunto de datos” y luego clic en “Siguiente”  y aparecerá una nueva ventana donde nos aparecerá la opción de elegir la conexión de datos, le damos clic en el botón “Nueva conexión” el botón  aparece en la esquina superior derecha. Después de hacer eso seleccionas el origen de datos, este debe de ser de tipo “Archivo de base de datos de Microsoft Access” (ejemplo en la imagen), luego clic en “Continuar”.
Despues de hacer clic en "continuar" Nos aparecerá una ventana como la siguiente…



Le damos clic en “examinar” y nos aparecera esa ventana mostrada en esa misma imagen, buscamos en la carpeta que creamos al pricipio en nuestro equipo o memoria el archivo de access de la tabla de “Encuesta” y luego clic en “abrir”, nos regresara a la ventana anterior y damos clic en probar conexión y no s aparecera un mensaje “La conexión de prueba se realizo correctaamente y luego clic “aceptar”, despues al hacer clic en el boton “siguiente”  nos aparecera una ventana con un mensaje de conexión y le damos clic en “no”. Luego nos aparecera esta ventana…
Clic en siguiente… luego nos aparecerá esta otra ventana…

Y al nombre del “dataset” le pondremos “dsEncuesta”, Seleccionamos la opción de tablas como se muestra en la imagen anterior y luego clic en “finalizar” y ya hemos conectado esta tabla de Access con nuestro proyecto en visual studio… asi nos aparecerá en la ventana de programa…


Luego clic en “mostrar orígenes de datos” y arrastramos los datos de la tabla  que se muestra y los diseñamos de manera que queden como se muestra en la imagen…






Luego tenemos que tener estos objetos que se muestran en la imagen ya añadidos a nuestro formulario para que funcione de manera correcta…


Esos objetos los vamos añadiendo a medida que vayamos creando de manera correcta nuestro formulario y nuestras conexiones, añadimos ese objeto llamado “ErrorProvider” al cual le cambiaremos la propiedad “name” y le llamaremos “Err”, luego añadimos los objetos “BindingSource” le cambiamos la propiedad “name” a “EncuestaBindingSource”, un ”Bindingnavigator” y también le cambiamos la propiedad ”name” a “EncuestaBindingnavigator” este objeto es para conectarse con la base de datos de nuestra tabla en Access, y por ultimo un “Dataset” al cual llamaremos “DsEncuesta”  y lo conectaremos con el tipo de datos de nuestra base de datos tal y como se muestra en la imagen… luego clic en “aceptar”.



El siguiente paso crearemos un “control de usuario”, para eso, clic derecho en el proyecto, agregar, y luego clic en “control de usuario” ejemplo en la imagen… y a este le llaman “entorno”



Esto nos creara algo así...

Los objetos encerrados en ese circulo rojo son los de que tenemos que añadir al entorno pero estos objetos están ocultos o desactivados para esta versión de visual studio para encontrarlos o activarlos tenemos que hacer lo siguiente…clic derecho  cualquiera de  las propiedades del cuadro de herramientas y nos aparecerá “alegir elementos” a este le damos clic...

Al darle clic en “elegir elementos” nos aparecerá la siguiente pantalla…

En el cuadro de texto de filtro escribiremos “oledb” para que se muestres las opciones u objetos que deseamos activar para el “entorno”  y activamos todas las opciones... luego clic en “aceptar”

Ahora ya tenemos activas los objetos que debemos de pegar en el “entorno” para añadirlos busquémoslos en la pestaña “impresión” del “cuadro de herramientas” y los añadimos al entorno de esta manera… y siempre le especificamos la dirección de la conexión de datos de Access a visual studio.
Les cambiamos la propiedad “name” , al objeto  “olebconnection” se lo cambiamos por “oConexion” y al objeto “oledbDataAdapter” por “daEncuesta” … es importante eliminar algunos apuntes de la propiedad “comandtext” de la pestaña “deletecomand” de las propiedades del “dataset” ósea el “daEncuesta” esto debe de quedar asi… para eso eliminamos algunos codigos y solo dejamos los siguientes:
DELETE FROM Encuesta
WHERE        (IdEncuesta = ?)

le damos "aceptar" y ahora regresamos al entonor y le damos clic en el  y presionamos la tecla F7 para ver el código…

Public Class entorno
    Public Shared Datos As New entorno
    Public Sub Conectar()
        If oConexion.State <> ConnectionState.Open Then
            oConexion.Open()
        End If
    End Sub
    Public Function ObtenerDatos() As DataSet
        Dim ds As New DataSet
        Conectar()
        daEncuesta.Fill(ds, "Encuesta")
        oConexion.Close()
        Return ds
    End Function
    Public Sub salvarencuesta(ByVal ds As DataSet)
        Conectar()
        daEncuesta.Update(ds)
        oConexion.Close()
    End Sub



Copiamos todos y cada uno de los códigos que se muestran en la imagen…esto para que podamos empezar a programar en nuestro “frmEncuesta”.
Después hacer el diseño de los elementos principales para este tipo de proyecto de encuesta guardaremos los cambios, clic en “archivo>guardar todo > y examinamos la carpeta que creamos al principio llamada “Encuesta”  luego seguimos desarrollado nuestro proyecto para  proceder a programar cada botón de nuestro formulario “frmEncuesta”.

Damos clic derecho en el formulario>ver código ó pulsamos directamente la tecla F7…luego nos aparecerá una ventana como la siguiente…copiamos esos códigos tal y como se muestran…

Es importante agregar “Imports Registro_de_Encuesta.entorno para que nuestros datos sean importados tal y como los tenemos en nuestra tabla o base de datos, DsEncuesta.Merge(Datos.ObtenerDatos, False)” que son las variables que añadimos anteriormente en nuestro creado “control de usuario” al cual llamamos “entorno” esto para que los datos puedan hacer la conexión correctamente.

Ahora validamos toda nuestra lista de detalles de nuestra tabla o base de datos de esta manera…

Private Function validar() As Boolean
        If cmbSexo.SelectedIndex = -1 Then
            Err.SetError(cmbSexo, "Por favor conteste la pregunta")
            Return False
        End If
        If EdadTextBox.Text = "" Then
            Err.SetError(EdadTextBox, "Por favor conteste la pregunta")
            Return False
        End If
        Return True
        If Preg1TextBox.Text = "" Then
            Err.SetError(Preg1TextBox, "Por favor conteste la pregunta")
            Return False
        End If
        Return True
        If Preg2TextBox.Text = "" Then
            Err.SetError(Preg2TextBox, "Por favor conteste la pregunta")
            Return False
        End If
        If cmbPreg3.SelectedIndex = -1 Then
            Err.SetError(cmbPreg3, "Por favor conteste la pregunta")
            Return False
        End If
        Return True
        If cmbPreg4.SelectedIndex = -1 Then
            Err.SetError(cmbPreg4, "Por favor conteste la pregunta")
            Return False
        End If
        Return True
        If cmbPreg5.SelectedIndex = -1 Then
            Err.SetError(cmbPreg5, "Por favor conteste la pregunta")
            Return False
        End If
        Return True
        If cmbPreg6.SelectedIndex = -1 Then
            Err.SetError(cmbPreg6, "Por favor conteste la pregunta")
            Return False
        End If
        Return True
        Err.SetError(cmbSexo, "")
        Err.SetError(EdadTextBox, "")
        Err.SetError(Preg1TextBox, "")
        Err.SetError(Preg2TextBox, "")
        Return True
    End Function

Pondremos estas sentencias y les escribiremos  “.text = “” Then ” al final de todos los campos que son de cuadros de textos ejemplo:
If Preg1TextBox.Text = "" Then
Err.SetError(Preg1TextBox, "Por favor conteste la pregunta") (este es el mensaje que dara al usuario nuestro objeto llamado “Err” que creamos anteriormente que mostrara a la hora de no ingresar nada a este campo, esto se dara en cada campo que añadimos)
            Return False
        End If

 Y “.SelectedIndex = -1” para todos aquellos “combobox” de nuestro formulario “frmEncuesta” ejemplo:
If cmbPreg6.SelectedIndex = -1 Then
            Err.SetError(cmbPreg6, "Por favor conteste la pregunta")
            Return False
        End If

Ahora programaremos cada botón de nuestro formulario...
En nuestro botón de “guardar” copiaremos los siguientes códigos…
If validar() = True Then
            EncuestaBindingSource.EndEdit()
            Datos.salvarencuesta(DsEncuesta)
            DsEncuesta.AcceptChanges()
            MsgBox("Los datos se han almacenado correctamente", MsgBoxStyle.Information, "Salvar")
        End If

En el botón de “eliminar” copiaremos los siguientes codigos…
  If MsgBox("Desea eliminar este registro", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Eliminar") = MsgBoxResult.Yes Then
            EncuestaBindingSource.EndEdit()
            EncuestaBindingSource.RemoveCurrent()
            Datos.salvarencuesta(DsEncuesta)
            DsEncuesta.AcceptChanges()
            MsgBox("El registro se elimino de manera permanente", MsgBoxStyle.Information, "Confirmado")
            IdEncuestaTextBox.Focus()
        End If

En el botón “añadir ó agregar” copiaremos los siguientes…
EncuestaBindingSource.EndEdit()
        EncuestaBindingSource.AddNew()
        IdEncuestaTextBox.Focus()
        cmbPreg3.SelectedIndex = -1
        cmbPreg4.SelectedIndex = -1
        cmbPreg5.SelectedIndex = -1
        cmbPreg6.SelectedIndex = -1

Ahora que  ya programamos todos los botones del formulario “frmEncuesta” , crearemos un nuevo formulario (windowsforms) y le cambiaremos el nombre a “frmGrafica” , luego le pegaremos un objeto llamado “TabControl” este lo encontraremos en la pestaña “Contenedores” del cuadro de herramientas y lo utilizaremos para que todas nuestras graficas estén en un solo formulario y no tengamos que crear uno para cada una de ellas, una vez añadido pegamos nuestro objeto “Chart” dentro del “TabControl” y le cambiamos la propiedad “name “ por ” oGrafico1”  y pegaremos un botón y también le cambiaremos la propiedad “name” por “Actualizar grafico” dentro de este copiaremos los siguienes codigos… , en este caso yo solo les daré un ejemplo, ustedes deberán crear una grafica para cada pregunta si es necesario..

Imports System.Data.OleDb
Public Class frmGrafica
    Public Cadena As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = D:\Encuesta\Encuesta.accdb"
    Private Sub cmdActualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdActualizar.Click
        Dim cSQL As String = "Select preg1, count(preg1) as Total from Encuesta group by preg1"
        Dim oConexion As New OleDbConnection(Cadena)
        oConexion.Open()
        Dim Comando As New OleDbCommand(cSQL, oConexion)
        Dim Lector As OleDbDataReader = Comando.ExecuteReader
        'Limpiar la grafica anterior
        oGrafico1.ChartAreas.Clear()
        oGrafico1.Series.Clear()
        oGrafico1.Titles.Clear()
        'Agregar una área, titulo y tamaño del titulo de la grafica
        oGrafico1.ChartAreas.Add(0)
        oGrafico1.Titles.Add("Cual es el ultimo libro que ha leido?")
        oGrafico1.Titles(0).Font = New Font("Garamount", 18, FontStyle.Bold)
        'Enlazar la grafica con los datos obtenidos mediante la SQL
        oGrafico1.DataBindTable(Lector, "preg1")
        oGrafico1.Series(0).IsValueShownAsLabel = True
        oGrafico1.ChartAreas(0).Area3DStyle.Enable3D = True
        oConexion.Close()
    End Sub

Al principio de codigo tenemos el “Imports System.Data.OleDb” esto será como ya sabemos para importar los datos de nuestra base de datos, esto junto con la ruta de nuestra base de datos de Access…
 Public Cadena As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = D:\Encuesta\Encuesta.accdb"

Tienen que ingresarla solo una vez y es al principio porque la variable “ cadena” ya esta declarada por lo tanto no tenemos que crear otra ruta, La variable “cSQL” Dim cSQL As String = "Select preg1, count(preg1) as Total from Encuesta group by preg1"

Importante! La variable “cSQL” si la debemos cambiar para una segunda grafica como por ejemplo “cSQL2”  , pero al crear otra grafica lógicamente tenemos que cambiar la propiedad “name” por  “oGrafica2”  y asi sucesivamente pero siempre cambiando también el código de “preg1” a “preg2” para que no genere un error lógico.
 Pero para crear una nueva grafica en nuestro “TabControl” cada grafica, deberemos hacer lo siguiente…
Como vemos en la imagen, le damos clic al “TabControl” luego “Agregar ficha” y nos creara una como vemos en la imagen... y así iremos creando una para cada grafica con su respectivo botón de “actualizar grafica” lógicamente cambiando los nombres para cada grafica, ejemplo: grafica1, grafica2,grafica3…y así sucesivamente, lógicamente cambiando los tipos de preguntas, y si queremos que nos muestre las preguntas en cada pestaña, nos iremos a las propiedad del “TabControl” llamada:  “TabPage” y editaremos la colección de cada “TabPage” y le cambiaremos la propieda “text” a cada “TabPage” con su pregunta respectiva, ejemplo en la imagen…


Clic en aceptar cuando ya modifiquemos todos los “tabpages” de cada pregunta, hecho esto pasemos a lo siguiente...

Crearemos un nuevo elemento, a estas alturas ya deberían saber como crear un nuevo elmento yo lo hare presionando las teclas (Ctrl+Mayus.+A)  nos aparecerá una ventana como la siguiente…

 En los tipos de plantillas seleccionaremos la que dice “Reporting” luego nos aparecerá los tipos de informes y seleccionaremos el que dice “Informe”  le cambiamos el nombre por “rptEncuesta” y luego clic en “agregar” y nos creara un nuevo reporte.

Ahora para agregar los datos que necesitamos que se muestre en nuestro Informe que vamos hacer para que las encuestas sean mostradas de pagina a imprimir o en una página donde se mostraran los datos guardados debemos de pegar el objeto llamado “Rectangulo” mostrado en los elementos del informe una vez pegado todo , hasta los campos que queramos que sean mostrados en la pagina formal nos debería de quedar de la siguiente manera…
Como hice para pegar todos eso cuadros de textos en mi informe? Lo que hice fue lo siguiente: en el cuadro de herramientas o elementos del informe agregue o pegue el objeto llamado “Cuadro de texto” a mi informe.

Para que al momento de ver una encuesta me mostrara el número de encuesta pegue este cuadro de texto y le ingrese la siguiente expresión, para ingresar a la expresión del cuadro de texto, clic derecho en el cuadro de texto y le damos clic en  “expresión”
Ahora ingresaremos la siguiente expresión…

Esta sentencia es para que me muestre el número de encuesta en la página del informe.

Ahora pegaremos los demás cuadros de texto para todos los campos de esta manera…

Un cuadro de texto para la pregunta y otro para la respuesta, en el campo de texto para la pregunta si queremos escribirle algo solo damos clic en el y escribimos el tipo de pregunta que pertenece o cual sea, en el cuadro de texto para la respuesta haremos el mismo paso que hicimos para añadirle  el  número de encuesta, para eso clic derecho en el cuadro de texto, luego “expresión”  y nos aparecerá la ventana de expresión…

En “Categoría” seleccionamos la que dice “Campos(DataSet1) y en los valores seleccionamos la pregunta que queramos que se muestre, dando doble clic para que se escriba la expresión automáticamente como se muestra en la imagen, después clic en aceptar, este paso lo haremos para cada pregunta o cualquier campo que nosotros queramos que se muestre en el informe.

Finalizado todo nos quedara así, ejemplo…

Y algo importante, para que cada encuesta nos aparezca una en cada página y no todas en una sola lo que haremos será lo siguiente.

En la parte inferior de nuestro informe nos aparecerá una opción llamada grupos de filas, más abajo aparece la opción detalles, le damos clic, y nos vamos donde dice propiedades de grupo le damos clic…ejemplo…

Luego le indicamos que nos agrupe el informe por “IdEncuesta” como se muestra en la imagen...
Después damos clic en la opción “Saltos de página” y seleccionamos: “entre cada instancia de un grupo y también al final de un grupo”  ejemplo…

Esto es para que nos aparezca una sola encuesta por cada página y no todas seguidas en una sola página… finalmente clic en “aceptar”

Y como último paso crearemos un formulario al cual llamaremos “frmReporte” a este le pegamos un objeto llamado “reportviewer”  este lo encontraras en la pestaña “informe” del cuadro de herramientas, una vez pegado haremos que el “reportviewer” nos cubra toda la ventana para eso haremos lo siguiente… nos iremos a la flechita que aparece en la esquina superior derecha del “reportviewer” le damos clic y nos aparecerán las opciones mostradas en la imagen… luego damos clic en “Acoplar en contenedor primario esto hará que se acople a nuestro formulario y lo cubra por completo… 


Luego lo conectamos con nuestro informe de datos, para eso clic en elegir informe y elegimos el informe que creamos con el nombre “rptEncuesta” lógicamente les aparecerá asi…

Y listo nuestro formulario de reporte nos conectara con el informe de encuesta y se mostraran los datos.

Finalmente ejecutamos nuestro proyecto y espero que les funcione a mi me funciono, es importante que te fijes en la ruta o dirección ya que estas tienen que coincidir con la base de datos de Access de no ser asi tu proyecto podría fallar a la hora de hacer cualquier tipo de cambios y no se ejecutara, talvez se ejecute pero no hará acciones como de guardar datos, eliminar, etc... Bueno gracias por tu atención y hasta mi próxima entrada.
Bueno amigos espero que estos pasos les sirvan de mucha ayuda y que Dios les bendiga ahora y siempre!!!