Pasos para crear un reporte
1. Proyecto, Agregar nuevo elemento.
2. Reporting, Crystal Report
3. Seleccionar La base de datos y la tabla o consulta que desea hacer el reporte
4. Agregar un nuevo formulario
5. De la barra de herramientas agregar CrystalReportViewer
6. Elegir el reporte que se desea anexar al formulario
Clase Reporte
En Proyecto, Agregar Clase
Usar los siguientes espacios de nombres
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
Seleccionar un nombre a la clase, luego el código siguiente
class Clase_crystal
{
public void set_conexion(ReportDocument Reporte)
{
ConnectionInfo MiConexion = new ConnectionInfo();
Tables MisTablas = [Link];
//nombre de servidor
C_SQL_SERVER ObjSQL = new C_SQL_SERVER();
string ServidorName = [Link];
ServidorName = [Link]("Data Source=", "");
ServidorName = [Link](";Initial
Catalog=PRACTICA;Persist Security Info=True;User ID=Servidor;Password=123", "");
[Link] = ServidorName;
//nombre de base de datos...
[Link] = "PRACTICA";
//nombre de usuario
[Link] = "Servidor";
//contraseña
[Link] = "123";
//recorremos las tablas...
foreach (Table Tabla in MisTablas)
{
TableLogOnInfo myTableLogonInfo = [Link];
[Link] = MiConexion;
[Link](myTableLogonInfo);
}
//ObjSQL = null;
MiConexion = null;
}
}
Es para establecer la conexión y no pregunte cada vez por su conexión.
El código para generar el reporte:
Reporte_ejercicio1 reporte = new Reporte_ejercicio1();
Clase_crystal CLASE_C = new Clase_crystal();
CLASE_C.set_conexion(reporte.CrystalReport11);
[Link]();
[Link]();
Cursor
para que el cursos aparezca ocupado mientras se realiza una operación se debe
especificar el sig, código.
Cursor = [Link];
f_fin = [Link]("{0:d}", [Link]);
[Link] = false;
dtresultado = mostrar.QSP_Query_fecha("EJERCICIO3.1",
[Link](f_inicio), [Link](f_fin));
[Link] = dtresultado;
[Link]();
Cursor = [Link];
Programando el CrystalReport.
Si se desea poner un condicional en algún campo de la tabla
1. En la opción Campo de fórmula, clip derecho nuevo y poner un nombre del campo a
condicionar
2. Seleccionar el campo que se desea dar formato
3. Una vez hecho la condición, se debe arrastrar el campo condicionado hacia el reporte
El campo que estaba antes de él, se oculta dando clip derecho sobre el campo, Dar formato al
objeto, suprimir
Cargar datos de una tabla a un ComboBox
dtresultado = mostrar.QSP_Query_conection("CLIENTE");
cb_combo.DataSource = dtresultado;
cb_combo.DisplayMember = "NOMBRES";
cb_combo.ValueMember = "ID";
Donde DisplayMember tiene el campo que será visible al cargar el formulario
y ValueMember representa un dato interno que almacenará para un uso posterior
Cargar datos de una tabla a una Grilla
dtdetalle = mostrar.QSP_Query_maestro("DETALLE_NOMBRE_CLIENTE",
[Link](txt_codigo.Text), "");
[Link] = dtdetalle;
clase C_sql
class C_SQL_SERVER
{
public string cadenadeconexion = "Data Source=BEATRIZ_PC;Initial
Catalog=PRACTICA;Persist Security Info=True;User ID=Servidor;Password=123";
private DataTable dtResultado;
private SqlConnection Conexion;
private SqlCommand ObjCommand;
private SqlDataAdapter Adaptador;
public string AbrirConexion()
{
try
{
Conexion = new SqlConnection(cadenadeconexion);
[Link]();
return "";
}
catch (Exception)
{
return "No se puede conectar a la Base de Datos...";
}
Otras consultas en la clase C_sql
public DataTable QSP_Query_conection(string Tipo)
{
//objeto a retornar
dtResultado = new DataTable();
//objeto de conexion...
using (Conexion = new SqlConnection(cadenadeconexion))
{
//abrimos la conexion...
[Link]();
//creamos el ojbeto command de ejecucion
ObjCommand = [Link]();
//le pasamos el nombre del procedimiento almacenado... y su tipo
[Link] = "QSP_conection";
[Link] = [Link];
//le pasamos los parametros...
[Link]("@Tipo", [Link]).Value =
Tipo;
//declaramos un data adapter a partir del sqlcommand para
almacenar los datos...
Adaptador = new SqlDataAdapter(ObjCommand);
[Link](dtResultado);
}
//retornamos el resultado
return dtResultado;
}
public DataTable QSP_Query_fecha(string Tipo, DateTime f_inicio, DateTime f_fin)
{
//objeto a retornar
dtResultado = new DataTable();
//objeto de conexion...
using (Conexion = new SqlConnection(cadenadeconexion))
{
//abrimos la conexion...
[Link]();
//creamos el ojbeto command de ejecucion
ObjCommand = [Link]();
//le pasamos el nombre del procedimiento almacenado... y su tipo
[Link] = "QSP_resumen";
[Link] = [Link];
//le pasamos los parametros...
[Link]("@Tipo", [Link]).Value =
Tipo;
[Link]("@f_inicio", [Link]).Value =
f_inicio;
[Link]("@f_fin", [Link]).Value =
f_fin;
//declaramos un data adapter a partir del sqlcommand para
almacenar los datos...
Adaptador = new SqlDataAdapter(ObjCommand);
[Link](dtResultado);
}
//retornamos el resultado
return dtResultado;
}
Cargar grilla del DevExpress
gc_control.Visible = true;
gc_control.DataSource=null;
dtdinero = mostrar.QSP_Query("HISTORICO");
gc_control.DataSource = dtdinero;
gv_control.Columns[1].[Link] =
[Link];
gv_control.Columns[0].[Link] =
[Link];
CLONAR FORMULARIO
[Link]
Mostrar Registros de una tabla y el botón siguiente
private void Frm_clientes_Load(object sender, EventArgs e)
{
dtresultado = mostrar.QSP_Query("SELECCIONAR");
txt_id.Text = [Link][i]["id"].ToString();
txt_nombre.Text = [Link][i]["nombre"].ToString();
txt_direccion.Text = [Link][i]["direccion"].ToString();
txt_telefono.Text = [Link][i]["telefono"].ToString();
Total = [Link];
}
private void Bt_siguiente_Click(object sender, EventArgs e)
{
i++;
if (i <= Total - 1)
{
txt_id.Text = [Link][i]["id"].ToString();
txt_nombre.Text = [Link][i]["nombre"].ToString();
txt_direccion.Text = [Link][i]["direccion"].ToString();
txt_telefono.Text = [Link][i]["telefono"].ToString();
}
}
Envío de correos desde C#
private void Bt_enviar_correo_Click(object sender, EventArgs e)
{
[Link] = [Link];
[Link] mssg = new [Link]();
[Link]("carlos_almanza@[Link]");
[Link] = "Primer mensaje desde C#";
[Link] = [Link].UTF8;
//[Link]("leontebenitopaiz@[Link]");
[Link] = "Se busca, vivo o muerto";
// Agregando un adjunto***********
[Link] attachment;
attachment = new [Link]("D:\\Respaldo\\
RespaldoBEATRIZPC\\ALMANZA\\Imagen_1.jpg");
[Link](attachment);
//********************************
[Link] = [Link].UTF8;
[Link] = true;
[Link] = new
[Link]("carlos.almanza12@[Link]");
[Link] cliente = new
[Link]();
//Configurar Credencial de envío
[Link] = new
[Link]("carlos.almanza12@[Link]", "[Link]");
[Link] = 587;
[Link] = true;
[Link] = "[Link]";
try
{
[Link](mssg);
}
catch (Exception)
{
[Link]("error al enviar el mensaje");
}
[Link] = [Link];
Nota: se debe tener una cuenta con poca seguridad para poder enviar los
correos, [Link]
Crear Librerías en C#
Para crear una librería hay que hacer los sig:
1. Clip derecho en la solución, Agregar, Nuevo Proyecto.
2. Seleccionar Biblioteca de clases
3. Una vez establecido un nombre se debe escribir el contenido de la DLL
4. Clip derecho a la Dll creada y compilar
5. Del proyecto donde queremos ver la Dll nos vamos a referencia y Agregar
referencia, se selecciona la Dll que creamos
6. Se llama a la Dll para su uso.
namespace correos_gmail
{
public class Class1
{
public static void Correo(string origen, string destino, string
titulo, string copia, string body, string attach)
{
[Link] mssg = new
[Link]();
[Link](destino);
[Link] = titulo;
[Link] = [Link].UTF8;
//[Link]("leontebenitopaiz@[Link]");
[Link] = body;
if (attach != "")
{// Agregando un adjunto***********
[Link] attachment;
attachment = new [Link](attach);
[Link](attachment);
}
//********************************
[Link] = [Link].UTF8;
[Link] = true;
[Link] = new [Link](origen);
[Link] cliente = new
[Link]();
//Configurar Credencial de envío
[Link] = new [Link](origen,
"[Link]");
[Link] = 587;
[Link] = true;
[Link] = "[Link]";
try
{
[Link](mssg);
}
catch (Exception)
{
[Link]("Error al enviar el correo");
}
}
Para llamar a la Dll, es de la siguiente manera
Nombre_dll.Class1.nombre_f(x)(parámetros)
Ejemplo
correos_gmail.[Link]("carlos.almanza12@[Link]",
"carlos_almanza@[Link]", "Probando de nuevo", "", "esta es una segunda
prueba", "");
Para llamar a la Dll de otro proyecto
Clip derecho en referencia,Agregar referencia, Examinar y buscar la ruta donde se
creó la DLL
Video: [Link]
Guardar Imágenes o archivos varios en un textbox
Se necesita insertar del cuadro de herramientas un openFileDialog,
Y el código del botón es el siguiente:
private void SimpleButton1_Click(object sender, EventArgs e)
{
if ([Link]() == [Link])
{
txt_ruta.Text = [Link];
}
}
Editar el GridView de DevExpress
Esto es para que la grilla sea solo lectura.
Para que aparezca un filtro en la grilla
Color al GridControl
Formato de Label para hacerlo un botón de comando
Teniendo un TexBox, para que al pasar sobre él aparezca la mano del mouse, la
propiedad es
Password en Cajas de texto
Establecer propiedad PasswordChar con *
Validando la conexión antes de entrar al login
static class Program
{
/// <summary>
/// Punto de entrada principal para la aplicación.
/// </summary>
[STAThread]
static void Main()
{
string Msj;
//validamos la conexion...
C_sql ObjSQL = new C_sql();
Msj = [Link]();
if (Msj != "")
{
[Link](Msj, "Error...", [Link],
[Link]);
//abrimos para establecer el servidor...
frm_baseD Establecer = new frm_baseD();
[Link]();
//verificamos si se pudo...sino... abortamos
ObjSQL = new C_sql();
Msj = [Link]();
if (Msj != "")
{
[Link](Msj, "Error...", [Link],
[Link]);
[Link]();
return;
}
}
[Link]();
[Link](false);
[Link](new frm_main());
}
}
La clase C_sql utilizando el registro para almacenar la
ruta de conexión
class C_sql
{
private string cadenadeconexion = "Data Source=" +
(string)[Link]("HKEY_CURRENT_USER", "SOFTWARE\\PLANILLA",
"DESCONOCIDO") + ";Initial Catalog=PLANILLA_LEONELA;Persist Security
Info=True;User ID=Servidor;Password=123";
//public string cadenadeconexion = "Data Source=BEATRIZ_PC;Initial
Catalog=PLANILLA_LEONELA;Persist Security Info=True;User
ID=Servidor;Password=123";
private DataTable dtResultado;
private SqlConnection Conexion;
private SqlCommand ObjCommand;
private SqlDataAdapter Adaptador;
public string AbrirConexion()
{
try
{
Conexion = new SqlConnection(cadenadeconexion);
[Link]();
return "";
}
catch (Exception)
{
return "No se puede conectar a la Base de Datos...";
}
}
CREAR UN PROYECTO EN TRES CAPAS
Lo primero que se debe hacer es crear una solución vacía, en el cuadro de búsqueda
escribir “otros”, seleccionar solución en blanco.
Una vez elegida la solución dentro del proyecto se debe seleccionar las capas de cada
solución, para eso se agregan 2 bibliotecas .NetFreanword.
Escribimos biblioteca de clases:
Una vez creada la capa de datos y negocio, toca crear un nuevo proyecto para la capa
de presentación.
Luego de la creación de los elementos del proyecto hay que referenciar cada proyecto,
es decir unir la capa de negocio con la de datos y la de presentación con la de negocio
CREAR PROYECYO WEB CON
MVC
Lo primero es seleccionar un proyecto web
Una vez seleccionado, dar clic a siguiente, asignar un nombre al proyecto y crear
Una vez al crear, elegir el tipo de aplicación mvc. Dejar todo por defecto.
CREAR EL MAPEO(El mapeo de datos es el proceso por el que se establecen
correspondencias entre campos de una base de datos a otra. Es el primer paso para
facilitar la migración, integración y otras tareas de gestión de datos.)
COMENCEMOS:
NOS UBICAMOS EN LA CARPETA MODELS, CLIP DERECHO, AGREGAR, NUEVO
ELEMENTO, ELEGIMOS LA OPCION DATOS.
Elegir [Link] Entity Data Model, elegir nombre, como en mi caso es una tabla que se
llama persona, le especifico como nombre Modelpersona.
Segundo paso
Tercer paso:
Establecer la conexión con el servidor. (Basta con poner un punto (.) para especificar la
ruta local)
Cuarto paso:
Elegir la base de datos
Esta el punto
Un punto importante es saber con qué nombre se crea el modelado de datos ya que al
crear las vistas se usa ese nombre.
Listo, se ha mapeado la BdeDatos
Al compilar queda de la siguiente manera
El siguiente paso es crear un nuevo elemento de menú el cual posee hasta el momento
(Inicio, A cerca de, Contacto)