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







Creacion de reportes con Crystal Reports y DataSet en C# .net y SQL

Existen diferentes maneras la cual puedes crear un reporte en C# pero les explicare una de las formas la cual a mi se me ha facilitado mas.

Supongamos que ya tienes creado tu proyecto y tu formulario con todos tus controles, entonces es obvio que tendras un boton el cual lo deberas utilizar para crear el reporte, yo para resumir solo pondre un boton el cual nos servira al momento de darle clic que nos envie al reporte.

 

Al igual de la misma forma como la que ya deberas de tener creada una tabla dentro de SQL Server la cual es la que quieres para que se muestren en tu reporte.
 
 
 
Como ven en las imagenes tengo solamente 3 personas agregadas en mi tabla de la base datos, asi como pueden tener cientos de datos.
Nuestro siguiente paso sera agregar un DataSet (Conjunto de datos) el cual se agrega de la siguiente manera: Clic derecho a tu solucion donde esta tu proyecto que por lo general esta al lado derecho, agregar-> Agregar nuevo elemento -> Del lado izquierdo das clic a donde dice Datos y selecciona Conjunto de datos, y le pones a tu dataset el nombre que mas te convenga.
 
 

 Ahora dentro de tu Dataset da click derecho despues agregar -> Tabla de datos
 
 

 Puedes modificar el nombre de tu tabla de datos dandole clic a donde aparece el titulo de esta, entonces lo siguiente sera dandole clic derecho a la tabla de datos que creaste despues Agregar -> Columna


Mucho ojo aqui, las columnas que vamos a agregar deben de tener el mismo orden y el mismo nombre como lo tenemos en nuestra tabla de SQL


Ok entonces ya teniendo nuestro Dataset listo y nuestra tabla en SQL nuestro siguiente paso es agregar un nuevo elemento a nuestro proyecto de tipo Crystal Reports el cual esta en la pestaña de Reporting y le ponemos como nos convenga mas.
 
 
Este al momento de crearlo nos arrojara un wizard el cual servira para determinar de donde tomara los datos para mostrar y el diseño, en la primera opcion hay que tildar Usar asistente de informes y elige el Asistente Estandar y le das Aceptar y despues fijense bien en la imagen: Deben de irse a la pestaña de Datos del proyecto, expandir la que dice ADO.NET Datasets y expandir la conexion que nos sale de nuestro proyecto y ahi se encontrara nuestro dataset el cual deben de elegirlo y en la parte del medio sale una flechita apuntando para la derecha, le damos clic y se pasara nuestro dataset al lado de tablas seleccionadas.
 
 
Le damos clic a siguiente y seleccionamos los campos a mostrar dandole clic al boton de dos flechas juntas y le das finalizar.
 
 



Entonces te saldra ya el reporte con los campos de tu dataset que es donde se van a mostrar


Entonces ya teniendo nuestro archivo .rpt creado lo siguiente sera es crear un nuevo elemento de tipo windows form y dentro de este contenedor vamos a insertar un objeto de tipo CrystalReportViewer que esta en el cuadro de herramientas en la seccion de creacion de informes, le damos click y lo arrastramos a nuestro formulario.

 
Hay que poner nuestro objeto CrystalReportViewer como publico en los modificadores para que sea accesible desde la clase de donde lo vamos a mandar llamar.
 
 
Ok ahora ya teniendo eso, nos vamos al evento Clic de nuestro boton que anteriormente asignamos para que al momento de darle clic nos muestre nuestro reporte y vamos a pegar el siguiente codigo que aqui les dejo que va dentro de nuestro evento onclic:
 
 
CrystalReport1 objRpt;
objRpt = new CrystalReport1();
  

String ConnStr = @"Data Source=SQLSRV\TuServidor;Initial Catalog=TuBasedeDatos;Persist Security Info=True;User ID=Tuusuario;Password=Tupassword";

// LA DE ARRIBA ES NUESTRA CADENA DE CONEXION DEL SERVIDOR

SqlConnection myConnection = new SqlConnection(ConnStr); // TIENEN QUE UTILIZAR EN EL USING LA CLASE DE System.Data.SqlClient

String Query = "SELECT * FROM EjemploReportes"; // ESTE ES NUESTRO QUERY

SqlDataAdapter adapter = new SqlDataAdapter(Query, ConnStr);
 
Reportes Ds = new Reportes(); // ESTE ES EL NOMBRE DE NUESTRO DATASET
adapter.Fill(Ds, "Reportes"); // ESTE Reportes ES EL NOMBRE DE NUESTRA TABLA DE DATOS QUE ESTA DENTRO DE NUESTRO DATASET


objRpt.SetDataSource(Ds);    
frmReporte rpt = new frmReporte(); // ES EL FORM DONDE ESTA NUESTRO CRYSTAL REPORT VIEWER
rpt.crystalReportViewer1.ReportSource = objRpt; // ESTE ES NUESTRO REPORT VIEWER
rpt.ShowDialog(); // AQUI LO MUESTRA

 
 
 
OK, ese es nuestro codigo que va dentro, ahora compilamos nuestro proyecto y damos clic al boton y listo tenemos nuestro reporte basico sencillo.
 
 
 
Cualquier duda error o comentario es valido, espero les haya servido de algo.
 
Saludos.
 
Misael Ontiveros