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…
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”
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...
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
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
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”
Esta sentencia es para
que me muestre el número de encuesta en la página del informe.
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.
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…
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!!!