jueves, 11 de febrero de 2016

Obtener datos e información de la computadora y exportarla a un archivo de texto o word desde C# .net versión 2012

Que tal colegas, hace bastante tiempo que no publicaba nada y solo me había dedicado a resolver dudas que me han comentando aquí en el blog y han sido resueltas, aparte de que también me he dedicado a otras cosas como lo que es la instalación de redes, equipos cctv, soporte técnico especializado y cosas de ese estilo.
Se me presento en el trabajo una situación la cual puede que a ustedes les haya pasado algo similar, es algo sencillo pero es muy útil la verdad.
El caso es que este pequeño programa su finalidad es que obtiene la información de tu computadora que es el la marca del fabricante, el modelo de la maquina, la versión del sistema operativo instalada y su arquitectura, las memorias ram instaladas, el procesador, los discos duros instalados, las impresoras instaladas ya sea por red o por USB.

Bueno para empezar lo primero que hice es hacer un proyecto de Windows form el cual contiene
2 cajas de texto, 1 label, 1 groupbox, 3 picturebox y un boton para exportar la información a un archivo ya sea de texto o de word, y lo puse de la siguiente manera:


Y sencillamente todo lo programe dentro de la misma clase de la forma, no hay necesidad de hacer capas ni nada puesto que no utiliza puesto que no utilice recursos de bases de datos ni nada especial.

Al objeto label le nombre lblInfo a la caja de texto del procesador le nombre txtProcesador y a la de la memoria ram txtMemoria, aclaro que las cajas de texto deben de ser multilinea para que puedan expandirlas.

En el proyecto al principio de la programación de las lineas yo inicie una instancia para mas adelante poder utilizarla y exportar/escribir en un archivo de texto o de word toda la información que hayan leído o cachado los métodos programados, es sencilla la linea es:

System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\InfoPC.doc")

Y para que no batallen les pondre todo el codigo que debe de llevar dentro de la clase la cual los métodos los puse en Ingles y les explicare un poco de lo que hace cada cosa:

Método para obtener información acerca de los discos duros instalados:

        private string getDrives()
        {
            StringBuilder StringBuilder1 = new StringBuilder(string.Empty);
            foreach (System.IO.DriveInfo DriveInfo1 in System.IO.DriveInfo.GetDrives())
            {
                try
                {
                    if (DriveInfo1.DriveType.ToString() != "Network")
                    {
                        StringBuilder1.AppendFormat("\t Drive: {0}\r\n\t\t VolumeLabel: " +
                          "{1}\r\n\t\t DriveType: {2}\r\n\t\t DriveFormat: {3}\r\n\t\t " +
                          "TotalSize: {4}\r\n\t\t AvailableFreeSpace: {5}",
                          DriveInfo1.Name, DriveInfo1.VolumeLabel, DriveInfo1.DriveType,
                          DriveInfo1.DriveFormat, DriveInfo1.TotalSize, DriveInfo1.AvailableFreeSpace);
                    }
                }
                catch
                {
                    //
                }
            }
            return StringBuilder1.ToString();
        }

Método para obtener la información del sistema operativo instalado

        private string getOSInfo()
        {
            OperatingSystem os = Environment.OSVersion;
            Version vs = os.Version;
            string operatingSystem = "";

            if (os.Platform == PlatformID.Win32Windows)
            {
                switch (vs.Minor)
                {
                    case 0:
                        operatingSystem = "95";
                        break;
                    case 10:
                        if (vs.Revision.ToString() == "2222A")
                            operatingSystem = "98SE";
                        else
                            operatingSystem = "98";
                        break;
                    case 90:
                        operatingSystem = "Me";
                        break;
                    default:
                        break;
                }
            }
            else if (os.Platform == PlatformID.Win32NT)
            {
                switch (vs.Major)
                {
                    case 3:
                        operatingSystem = "NT 3.51";
                        break;
                    case 4:
                        operatingSystem = "NT 4.0";
                        break;
                    case 5:
                        if (vs.Minor == 0)
                            operatingSystem = "2000";
                        else
                            operatingSystem = "XP";
                        break;
                    case 6:
                        if (vs.Minor == 0)
                            operatingSystem = "Vista";
                        else
                            operatingSystem = "7";
                        break;
                    default:
                        break;
                }
            }
            if (operatingSystem != "")
            {
                operatingSystem = "Windows " + operatingSystem;
                if (os.ServicePack != "")
                {
                    operatingSystem += " " + os.ServicePack;
                }
            }
            return operatingSystem;
        }


Método para obtener la información del fabricante

        private string getManufacturer()
        {
            string manufacturer = null;
            ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
            ManagementObjectCollection moc = mc.GetInstances();
            if (moc.Count != 0)
            {
                foreach (ManagementObject mo in mc.GetInstances())
                {
                    manufacturer = (mo["Manufacturer"].ToString());
                }
            }
            return manufacturer;
        }

Método para obtener la información del modelo del fabricante

        private string getModel()
        {
            string model = null;
            ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
            ManagementObjectCollection moc = mc.GetInstances();
            if (moc.Count != 0)
            {
                foreach (ManagementObject mo in mc.GetInstances())
                {
                    model = (mo["Model"].ToString());
                }
            }
            return model;
        }

Método para obtener el tipo de computadora (Laptop o Escritorio)

        private string getTipo()
        {
            PowerStatus powerStatus = System.Windows.Forms.SystemInformation.PowerStatus;
            if (powerStatus.BatteryChargeStatus != BatteryChargeStatus.NoSystemBattery)
            {
                return "Portatil";
            }
            else
                return "Escritorio";
        }

Método para obtener el modelo del monitor instalado

        private string getMonitor()
        {
            Screen[] monitors = Screen.AllScreens;

            string monitor = null;
            try
            {
                ManagementObjectSearcher searcher =
                    new ManagementObjectSearcher("root\\CIMV2",
                    "SELECT * FROM Win32_DesktopMonitor");

                foreach (ManagementObject queryObj in searcher.Get())
                { 
                    monitor = (queryObj["Description"]).ToString();
                }
            }
            catch (ManagementException e)
            {
                MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
            }

            return monitor;
        }

Metodo para obtener las impresoras instaladas

        private string getPrinters()
        {
            StringBuilder StringBuilder1 = new StringBuilder(string.Empty);
            var printerQuery = new ManagementObjectSearcher("SELECT * from Win32_Printer");
            foreach (var printer in printerQuery.Get())
            {
                var name = printer.GetPropertyValue("Name");
                var port = printer.GetPropertyValue("PortName");
                var isDefault = printer.GetPropertyValue("Default");
                var isNetworkPrinter = printer.GetPropertyValue("Network");

                if (port.Equals("USB001"))
                {
                    StringBuilder1.AppendFormat("\t\r\nConectada por USB: " + name.ToString());
                }
                else
                {
                    if (isDefault.Equals(true))
                    {
                        StringBuilder1.AppendFormat("\t\r\nPredeterminada: " + name.ToString());
                        StringBuilder1.AppendFormat("\t\r\nPuerto impresora: " + port.ToString());
                    }
                }
            }
            return StringBuilder1.ToString();
        }

Enseguida los dos métodos que pondré son algo específicos y son los que tienen un poco mas de cuidado al utilizarlos, es donde podrían tener errores pero nada graves de que preocuparse

Este método lo que hace es obtener toda la información del dispositivo según la librería que se le pida, pero te obtiene todo en general nada en especifico y con ese método vamos a jugar con varias cosas:

        private string DeviceInformation(string stringIn)
        {
            StringBuilder StringBuilder1 = new StringBuilder(string.Empty);
            ManagementClass ManagementClass1 = new ManagementClass(stringIn);
            ManagementObjectCollection ManagemenobjCol = ManagementClass1.GetInstances();
            PropertyDataCollection properties = ManagementClass1.Properties;
            foreach (ManagementObject obj in ManagemenobjCol)
            {
                foreach (PropertyData property in properties)
                {
                    try
                    {
                        StringBuilder1.AppendLine(property.Name + ":  " +
                          obj.Properties[property.Name].Value.ToString());
                    }
                    catch
                    {
                        //
                    }
                }
                StringBuilder1.AppendLine();
            }
            file.WriteLine(StringBuilder1);
            return StringBuilder1.ToString();
        }

Y en el siguiente método es donde vamos a hacer uso de TODOS los métodos anteriores

        private string SystemInformation()
        {
            StringBuilder StringBuilder1 = new StringBuilder(string.Empty);
            try
            {
                StringBuilder1.AppendFormat("Operation System:  {0}\r\n", getOSInfo());
                if (Environment.Is64BitOperatingSystem)
                    StringBuilder1.AppendFormat("\t\t  64 Bit Operating System\r\n");
                else
                    StringBuilder1.AppendFormat("\t\t  32 Bit Operating System\r\n");
                    StringBuilder1.AppendFormat("SystemDirectory:  {0}\r\n", Environment.SystemDirectory);
                    StringBuilder1.AppendFormat("ProcessorCount:  {0}\r\n", Environment.ProcessorCount);
                    StringBuilder1.AppendFormat("UserDomainName:  {0}\r\n", Environment.UserDomainName);
                    StringBuilder1.AppendFormat("UserName: {0}\r\n", Environment.UserName);
                    StringBuilder1.AppendFormat("Fabricante: {0}\r\n", getManufacturer());
                    StringBuilder1.AppendFormat("Modelo: {0}\r\n", getModel());
                    StringBuilder1.AppendFormat("Tipo: {0}\r\n", getTipo());
                    StringBuilder1.AppendFormat("Monitor: {0}\r\n", getMonitor());
                    StringBuilder1.AppendFormat("Impresoras: {0}\r\n", getPrinters());
                    StringBuilder1.AppendFormat("LogicalDrives: {0}\r\n", getDrives());
                    StringBuilder1.AppendFormat("SystemPageSize:  {0}\r\n", Environment.SystemPageSize);
                    StringBuilder1.AppendFormat("Version:  {0}\r\n", Environment.Version);
            }
            catch
            {
                //
            }
            file.WriteLine(StringBuilder1);
            return StringBuilder1.ToString();
        }


Bueno ya teniendo todos los métodos dentro de la misma clase, lo que hice fue poner dentro de el metodo onload de la forma principal lo siguiente:

           lblInfo.Text = SystemInformation();
            txtProcesador.Text = DeviceInformation("Win32_Processor");
            txtMemoria.Text = DeviceInformation("Win32_PhysicalMemory");

Que lo que hago sencillamente es llamar a los métodos creados para que al momento de abrir la forma se ejecuten automáticamente y me las muestre en cada caja objeto correspondido en la forma.

En el evento onclic del boton lo que hago es lo siguiente

            file.Close();
            MessageBox.Show("Archivo InfoPC.doccreado en la unidad C: a continuacion se abrira el explorador");
            System.Diagnostics.Process.Start(@"C:\");

Que básicamente es cerrar y crear el filestream para que me cree el archivo y me abra la ventana de C que es donde le estoy dando la ubicación del guardado.

De todos modos les subiré el proyecto ya compilado para que lo tengan.

Saludos!

Ing. Misael Ontiveros Rodriguez






martes, 27 de mayo de 2014

Calculadora científica C# .net 2010

Que tal buenas tardes amigos, hace mucho que no posteaba un nuevo tema pero a las dudas que han salido referente a proyectos que ya tengo puesto les he respondido al momento aclarando dudas y que bueno que les hayan servido tanto como para su escuela, su trabajo o en si proyectos personales.
En este post simplemente les subiré una calculadora que tiene las funciones básicas y funciones científicas, les dejo el link a continuación de mi Skydrive para que la descarguen y vean el código y su funcionamiento.
Les apuesto que alguna ves se la han de ver dejado de tarea así que para que no batallen y la estudien ahí la dejo.
https://onedrive.live.com/?cid=E17AAA68D9CA0FF8&id=E17AAA68D9CA0FF8%21452
Archivo calculadora.rar
Aqui les dejo la muestra de como es y de igual manera si tienen alguna duda del código o de cualquier cosa solamente pregunten y les responderé a la brevedad, saludos.


jueves, 25 de octubre de 2012

Archivo .mht en Crystal Reports con Visual Studio C# 2010

Que tal, pues aqui describiendo rapidamente lo que una ves me paso y me preguntaron recientemente y quise ponerles aqui la solucion a lo que se hace cuando ustedes tienen instalado Visual Studio C# 2010 en español y Crystal Reports que al momento de crear un archivo de reporte que por lo regular su extension es .rpt y les crea un archivo de tipo .mht.
Lo que tienen que hacer es descargarse la version de Crystal reports para Visual Studio 2010 pero en Ingles.
Muchos descargan la version de Crystal pero en español y es donde les causa este conflicto de compatibilidad, es por eso que necesitan descargarse la version pero en Ingles para que puedan trabajar con archivos rpt.

Cualquier duda que tengan sobre un tema en especifico o lo que sea haganmela saber y con gusto les ayudare.

Saludos.
Misael Ontiveros.

lunes, 8 de octubre de 2012

RadControls Telerik Winforms

RadControls Winforms Telerik

Si tienen la manera de conseguir esa suite les favorecera mucho en el diseño de sus formularios en C# .net cuando desarrollen aplicaciones de escritorio o de web .aspx, los componentes que maneja son bastantes buenos y con muy buen diseño, hace que sus proyectos se vean mucho mas profesionales y elegantes.


Y por supuesto que yo la consegui, la instale y es muy buena, pueden descargarla de su sitio web y probarla.

Bueno si logran desarrollar una aplicacion con RadControls muy probable sea que al querer ejecutar su aplicacion en otra maquina que no sea la suya lo que tienen que hacer es poner dentro de su carpeta bin del proyecto todos los dlls de radcontrols y funcionara a la perfeccion.

Saludos.

Misael Ontiveros.

sábado, 6 de octubre de 2012

Form con fondo transparente C# .net

Hola que tal, aqui les enseñare un pequeño truquito que es desconocido por muchos que es bastante facil y rapido.
El truco consiste en hacer que la ventana o mas bien digamosle nuestro windows form se vuelva transparente, pero ojo una cosa es hacer todos los objetos transparentes y otra es dejar tu form transparentes pero con tus objetos como botones, imagenes, labels sin transparencia.
Bueno con el ejemplo se daran cuenta de que hablo:

Vamos a empezar creando un nuevo proyecto de windows form, pongamos un PictureBox, un boton y un label asi como lo muestro:


Yo en photoshop hice una imagen con fondos transparente .PNG para ponerla en el pictureBox y vean el efecto que hay, igual de todos modos se daran cuenta tambien con los botones y labels que pusimos.
Bueno el truco consiste que en las propiedas BackColor y TransparencyKey de nuestro Form tengan el mismo color, es decir si le pongo de color Silver al BackColor entonces el TransparencyKey debera de tener el mismo color Silver.
 


Como se dieron cuenta en las dos imagenes tengo el mismo color en las dos propiedades y ya agregue una imagen a mi pictureBox con fondo transparente, ahora compilamos y veamos el efecto.



Ahora otro efectito para que se se note aun mas, en la propiedad de FormBorderStyle le ponemos None





y listo tenemos el efecto aplicado.



Eso les puede servir para su pantalla de login o igual para lo que necesiten, espero les haya servido de algo.

Cualquier duda que tengan de lo que sea pueden preguntar o sugerir de algun tema que quieren que explique para exponerles una solucion, no necesariamente tiene que ser de windows forms, tambien puede ser de consola o igual cualquier necesidad que tengan lo mas minima que sea es bien recibida.

Saludos.
Misael Ontiveros.


viernes, 5 de octubre de 2012

Tomar foto con nuestra webcam Visual Studio C# .net

Hola que tal, enseguida les describire como tomar una foto desde su webcam.
Antes que nada hay que descargar un archivo el cual contiene los dos .dll que nos servira para hacer funcionar nuestra webcam, les dejo el link de descarga:
https://skydrive.live.com/?cid=E17AAA68D9CA0FF8&id=E17AAA68D9CA0FF8%21452
La carpeta comprimida se llama AForge, mas adelantito les explicare en la ubicacion donde deben de ponerla y como poder utilizarla en su proyecto ya que estos archivos hay que agregarlos como referencias.

Bueno para empezar vamos a crear un nuevo proyecto en su VS, yo lo nombre poniendole EjemploWebcam e hice un formulario que contiene un combobox, un picturebox y un simple boton.


Ahora hay que agregar a nuestro proyecto las referencias de los archivos dll descargados de la siguiente manera:
En el explorador de soluciones de su proyecto hay que pocisionarnos donde dice References, darle clic derecho y darle clic en agregar referencia:


Pero para eso primero hay que mover los archivos dlls descargados a su carpeta DEBUG del proyecto.


Entonces volviendo a la pantalla donde agregaremos la referencia, cuando le del clic en agregar referencia les saldra una ventana en la cual debemos ir a la pestaña de Examinar y en donde dice Buscar en hay que ir a la carpeta del proyecto donde tenemos nuestros archivos dlls y seleccionar ambos archivos dlls para agregarlos al proyecto.



Si se fijan bien ya se agregaron los archivos dlls a su proyecto:

 

En nuestro proyecto hay que utilizar las siguientes librerias junto con la de los archivos que descargamos con el using para que pueda reconocer nuestro codigo.

Ausing  System.IO;

using  System.Drawing.Imaging;

using  AForge.Video;

using AForge.Video.DirectShow;


Y tambien hay que hacer instancias de los siguientes objetos en nuestro proyecto:

private bool ExistenDispositivos = false;

private FilterInfoCollection DispositivosDeVideo;

private VideoCaptureDevice FuenteDeVideo = null;


Ok ahora lo que vamos a hacer es irnos al evento onclic de nuestro boton.
NOTA: Como propiedad de texto al boton ponganle: Iniciar, adelante explicare el por que.
Y agregamos el siguiente codigo a nuestro evento.

if (btnIniciar.Text == "Iniciar")

{
 
if (ExistenDispositivos)

{

FuenteDeVideo =
new VideoCaptureDevice(DispositivosDeVideo[cboDispositivos.SelectedIndex].MonikerString);

FuenteDeVideo.NewFrame += new NewFrameEventHandler(video_NuevoFrame);

FuenteDeVideo.Start();

btnIniciar.Text =
"Detener";

cboDispositivos.Enabled = false;

gbMenu.Text = DispositivosDeVideo[cboDispositivos.SelectedIndex].Name.ToString();

}
else

 MessageBox.Show("Error: No se encuentra dispositivo.");

}
else

{
 
if (FuenteDeVideo.IsRunning)

{

TerminarFuenteDeVideo();

btnIniciar.Text =
"Iniciar";

cboDispositivos.Enabled = true;

}

}


 


No se asusten, yo se que su proyecto les marcara en rojo los metodos que no encuentra por que exactamente no se encuentran pero aqui se los pego en codigo para que los pongan dentro de su proyecto.
 
 
public void CargarDispositivos(FilterInfoCollection Dispositivos)

{
for (int i = 0; i < Dispositivos.Count; i++)

cboDispositivos.Items.Add(Dispositivos[i].Name.ToString());
//cboDispositivos es nuestro combobox

cboDispositivos.Text = cboDispositivos.Items[0].ToString();

}

public void BuscarDispositivos()

{

DispositivosDeVideo =

new FilterInfoCollection(FilterCategory.VideoInputDevice);

if (DispositivosDeVideo.Count == 0)

ExistenDispositivos =
false;
 else

{

ExistenDispositivos =

true;

CargarDispositivos(DispositivosDeVideo);

}

}
 
public void TerminarFuenteDeVideo()

{
if (!(FuenteDeVideo == null))

if (FuenteDeVideo.IsRunning)

{

FuenteDeVideo.SignalToStop();

FuenteDeVideo =

null;

}

}

private void video_NuevoFrame(object sender, NewFrameEventArgs eventArgs)

{ Bitmap Imagen = (Bitmap)eventArgs.Frame.Clone();

pbFotoUser.Image = Imagen;
//pbFotoUser es nuestro pictureBox

}


 
Ahora si compilan el proyecto y lo ejecutan.



Para poder guardar la foto es sencillo, con esta linea de codigo:

pbFotoUser.Image.Save(Nombre,
ImageFormat.Jpeg);


 Donde pbFotoUser es nuestro pictureBox y como propiedad en imagen tiene el metodo Save que sirve para guardar, ahi ustedes jueguen con eso es bastante facil.

Cualquier duda, comentario es bien recibido espero les haya servido de algo.
Les deje el archivo del proyecto ahi mismo en mi SkyDrive para que puedan descargarlo, se llama EjemploWebcam esta comprimido.

Saludos.
Misael Ontiveros


 

jueves, 4 de octubre de 2012

Login usuario C# .net y SQL Server con Dataset

Aqui les presentare una de tantas formas que hay de hacer un formulario de login el cual va a checar en su  base de datos y pueda dar acceso o que lo niegue al usuario de entrar a su sistema, es bastante basica pero muy funcional.
Cabe destacar que hare el uso de Dataset por el hecho de que si ustedes quieren hacer un programa el cual se ejecute en varias maquinas (Cliente) no van a batallar, si lo hacen de manera distinta puede de que les salga un error en el cual te pida la ubicacion de la base de datos, usuario y todo lo relacionado cada ves que quieran iniciar sesion.

Bueno para empezar abrimos un nuevo proyecto de Windows Forms el cual debera contener 2 TextBoxs, 2 labels, 1 Boton de Aceptar y otro Winform dentro del mismo proyecto.

Una forma de windows la utilizaremos para la ventana del login y la otra como si fuera la ventana principal a donde queremos accesar.

Algo similares a esto:


 
Ok entonces ahora haremos en nuestra base de datos una tabla la cual contendra los nombres de usuarios y sus respectivos passwords, yo le puse tblLogin
 

Si se fijan yo solo puse 2 usuarios,igual pueden tener cuantos quieran o necesiten.
Bueno ya teniendo eso vamos a programar un pequeñito Stored Procedure el cual nos devolvera un numero 1 si existen registros al momento de buscar al usuario y password y un 0 si no encuentra nada que coincida, bueno para que no batallen les dejo el stored procedure tal y como lo ejecutaran en una consulta.

CREATE
procedure [dbo].[sp_Login]

@Usuariovarchar(15),

@Passwordvarchar(15)

AS

SELECT

count(*) FROM tblLogin WHERE

Usuario
= @Usuario AND Password = @Password


Me lo pone todo mal acomodado aqui pero en el SQL si ejecutara bien la consulta.
Bueno ya que tengamos lista nuestra tabla de datos con de perdida un usuario creado con contraseña y el SP procedemos a agregar un Dataset a nuestro proyecto.



Ahora lo que sigue hay que poner algo de enfasis, no es dificil pero si deben de checar bien, lo que vamos a agregar es nuestro origen de base de datos el cual dentro de nuestro objeto Dataset creado nos vamos a ir del lado izquierdo por lo general a la pestaña de Origenes de Datos y seleccionamos el icono de forma de base de datos con un cuadrito con una palomita en verde, es el tercero de izquierda a derecha y hara que salga una ventana Wizard para indicarles donde se encuentra nuestro origen de base de datos asi como lo muestro en la imagen:
 
 
Como ven se nos va a expandir las tablas de la base de datos que tenemos y seleccionamos en este caso la de tblLogin que es donde tenemos a nuestros usuarios.
 
NOTA: Si no les aparece la forma de la ventana anterior hay que darle clic al primer icono de la base de datos que aparece en primer lugar la que no tiene palomita, les va a salir un formulario pidiendoles los datos para el acceso a la base de datos, ya que los pongan este les creara un nuevo dataset en el cual tambien pueden poner lo que enseguida explicare no hay problema, asi ya tendran guardara la cadena de conexion para futuras conexiones.
 
 
Bueno ya teniendo guardada la conexion y configurada les arrastrara automaticamente al dataset la tabla que seleccionamos que en este caso fue la de tblLogin
 


Ok ahora ya que tenemos nuestro Dataset con la conexion hay que agregar al dataset el stored procedure que creamos de la siguiente manera:
 


 
Hay que darle click derecho en la parte que dice tblLoginTableAdapter y le damos clic en Agregar consulta y nos saldra un Wizar el cual debemos de seleccionar Usar el Procedimiento Almacenado Existente y le damos siguiente y nos pondremos sobre la siguiente ventana:




Si se fijan en el combobox que aparece le damos clic y nos aparecera el Stored Procedure que creamos y lo tenemos que seleccionar para que nos salga lo que les mostre en pantalla, entonces si todo va bien hasta ahi le vamos a dar clic en siguiente, nos saldran unas opciones en la siguiente ventana la cual hay que seleccionar la que dice Un Solo Valor: se generara una funcion con tipo que devuelve un solo valor.......
El stored procedure que creamos recuerden que nos devolvera un 1 o un 0 es por eso que necesita que este seleccionada esa opcion, ya despues de eso le damos Finalizar y listo hemos agregado nuestro Stored Procedure a la tabla de datos, asi como se muestra en la imagen:



Buenos ya que tenemos todo listo hasta ahi nos vamos al formulario de Login en donde validaremos los datos para el acceso y para esto hay que hacer lo siguiente:

En el evento onclic de nuestro boton de login hay que poner el siguiente codigo, se los dejo para que no batallen, es bastante facil de todos modos:


try

{ if (txtUsuario.Text == "" || txtPassword.Text == "") // ESTOS SON LOS TEXTBOXS DEL FORMUARIO CHECAMOS QUE NO ESTEN VACIOS
 MessageBox.Show("Favor de llenar todos los campos correspondientes");
 else

{
if (ta.sp_Login(txtUsuario.Text, txtPassword.Text).ToString() == "1") //ESTO LO EXPLICO MAS ADELANTE

{ frmPrincipal frm = new frmPrincipal(); //MUESTRA EL FORMULARIO PRINCIPAL A DONDE QUEREMOS ACCESAR
frm.Show();                    
}

else
MessageBox.Show("Acceso denegado al sistema, favor de verificar sus datos");

}

}

catch (Exception ex)

{ MessageBox.Show(ex.Message);
}

 
 Para esto antes del evento onclic en el codigo que les genera, es decir por fuera del bloque
hay que poner el siguiente codigo:

tblLoginTableAdapter

ta = new tblLoginTableAdapter();



Esto es para instanciar el adaptador que tenemos en nuestro dataset de donde jalaremos al Stored Procedure y para eso tambien la clase necesita el  
 
using

EjemploLogin.LoginDataSetTableAdapters;


 Que eso queda de mas de explicar, es solo agregar la linea hasta arriba y listo.

Bueno ya que tengamos listo todo eso compilamos el proyecto y tratamos de hacer el login y checamos si funciona bien.



Espero les haya servido de algo, cualquier duda o comentario es bien recibido.

Gracias.

Misael Ontiveros