domingo, 25 de septiembre de 2016

Crud 4 Capas VB.NET y MYSQL

En esta ocasion elaboraremos un proyecto en VB.NET con el modelo 4 capas.
Deberán crear una solución, con 4 proyectos uno para cada capa(cliente,datos,entidad y negocio) y agregar las referencias correspondientes para poder utilizarlas.
Referencias:
Capa cliente->con capa negocio y entidad
Capa Negocio-> con Capa datos y entidad
Capa Datos-> con capa entidad
Capa Entidad-> Esta no necesita de referencias, pues es la respresentacion de los campos de la tabla.

Adicionalmente se creará una clase "coneccion" para hacer uso de  mysql.




Esta es la tabla a utlizar =)


A continuación, dejaré el código =) espero les sirva
Codigo del Formulario

Imports Capa_Entidad
Imports Capa_Negocio

Public Class Form1
    Private id_persona As Integer = 0
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        limpiar_todo()
    End Sub
    Private Sub carga_dgv()
        Try
            Dim dt As New DataTable
            Dim per As New NPersona
            dt = per.carga_listado_clientes()
            If dt.Rows.Count <> 0 Then
                Me.dgv_personas.DataSource = dt
                Me.dgv_personas.Columns(0).Visible = False
            Else
                MessageBox.Show("No hay datos en la bd", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        Catch ex As Exception
            MessageBox.Show("Error: " & ex.Message, "Información", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub
    Private Sub limpiar_todo()
        Me.dgv_personas.DataSource = ""
        Me.txt_apellidos.Text = ""
        Me.txt_nombres.Text = ""
        Me.txt_cedula.Text = ""
        Me.txt_celular.Text = ""
        Me.txt_email.Text = ""
        Me.cmb_sexo.Text = ""
        carga_dgv()
        Me.itemeditar.Enabled = False
        Me.itemeliminar.Enabled = False
        Me.itemguardar.Enabled = True
        id_persona = 0
    End Sub
    Private Sub dgv_personas_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgv_personas.CellMouseClick
        Dim fila As Integer = e.RowIndex
        If fila >= 0 Then
            id_persona = Me.dgv_personas.Rows(fila).Cells(0).Value
            Me.txt_cedula.Text = Me.dgv_personas.Rows(fila).Cells(1).Value
            Me.txt_nombres.Text = Me.dgv_personas.Rows(fila).Cells(2).Value
            Me.txt_apellidos.Text = Me.dgv_personas.Rows(fila).Cells(3).Value
            Me.txt_email.Text = Me.dgv_personas.Rows(fila).Cells(4).Value
            Me.txt_celular.Text = Me.dgv_personas.Rows(fila).Cells(5).Value
            Me.cmb_sexo.Text = Me.dgv_personas.Rows(fila).Cells(6).Value
            Me.itemguardar.Enabled = False
            Me.itemeditar.Enabled = True
            Me.itemeliminar.Enabled = True
        End If
    End Sub

    Private Sub itemlimpiar_Click(sender As Object, e As EventArgs) Handles itemlimpiar.Click
        limpiar_todo()
    End Sub

    Private Sub itemguardar_Click(sender As Object, e As EventArgs) Handles itemguardar.Click
        Try
            Dim per As New Persona
            per.Id = Nothing
            per.Apellido = Me.txt_apellidos.Text
            per.Nombre = Me.txt_nombres.Text
            per.Cedula = Me.txt_cedula.Text
            per.Celular = Me.txt_celular.Text
            per.Email = Me.txt_email.Text
            per.Sexo = Me.cmb_sexo.Text
            per.Estado = "A"
            'llamamos a guardar de Npersona-->capa negocio
            Dim nper As New NPersona
            nper.nguardar(per)
            MessageBox.Show("Persona almacenada correctamente", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information)
            limpiar_todo()
        Catch ex As Exception
            MessageBox.Show("Error: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

    Private Sub itemeditar_Click(sender As Object, e As EventArgs) Handles itemeditar.Click
        Try
            Dim per As New Persona
            per.Id = id_persona
            per.Apellido = Me.txt_apellidos.Text
            per.Nombre = Me.txt_nombres.Text
            per.Cedula = Me.txt_cedula.Text
            per.Celular = Me.txt_celular.Text
            per.Email = Me.txt_email.Text
            per.Sexo = Me.cmb_sexo.Text
            per.Estado = "A"
            Dim nper As New NPersona
            nper.nactualizar(per)
            MessageBox.Show("Persona actualizada correctamente", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information)
            limpiar_todo()
        Catch ex As Exception
            MessageBox.Show("Error: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

    Private Sub itemeliminar_Click(sender As Object, e As EventArgs) Handles itemeliminar.Click
        Try
            Dim nper As New NPersona
            nper.neliminar(id_persona)
            MessageBox.Show("Persona eliminada correctamente", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information)
            limpiar_todo()
        Catch ex As Exception
            MessageBox.Show("Error: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub
End Class
Capa Negocio
Imports Capa_Entidad
Imports Capa_Datos
Public Class NPersona
    Public Function carga_listado_clientes() As DataTable
        Try
            Dim dt As New DataTable
            Dim datosper As New DPersona
            datosper.listado_personas.Fill(dt)
            Return dt
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Function
    Public Sub nguardar(ByVal per As Persona)
        Try
            If (campos_completos(per)) Then
                Dim dper As New DPersona
                dper.guardar_personas(per)
            Else
                Throw New Exception("Todos los campos son requeridos")
            End If
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Sub
    Public Sub nactualizar(ByVal per As Persona)
        Try
            If (campos_completos(per)) Then
                Dim dper As New DPersona
                dper.actualizar_personas(per)
            Else
                Throw New Exception("Todos los campos son requeridos")
            End If
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Sub
    Public Sub neliminar(id_per)
        Try
            Dim dper As New DPersona
            dper.eliminar_personas(id_per)
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Sub
    Private Function campos_completos(ByVal per As Persona) As Boolean
        Dim resp As Boolean = True
        If per.Apellido = "" Or per.Nombre = "" Or per.Cedula = "" Or per.Celular = "" Or per.Email = "" Or per.Sexo = "" Then
            resp = False
        End If
        Return resp
    End Function
End Class
Capa Datos
Imports Capa_Entidad
Imports MySql.Data
Imports MySql.Data.Types
Imports MySql.Data.MySqlClient

Public Class DPersona
    Public cmd As MySqlCommand
    Public da As New MySqlDataAdapter
    Public Function listado_personas() As MySqlDataAdapter
        Try
            Dim con As New coneccion
            con.conectar_bd()
            Dim da As MySqlDataAdapter
            cmd = New MySqlCommand
            cmd.CommandText = "Select *  from persona where estado='A'"
            cmd.CommandType = CommandType.Text
            cmd.Connection = con._con
            da = New MySqlDataAdapter(cmd)
            con.cerrar_coneccion()
            Return da
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Function
    Public Sub guardar_personas(ByVal per As Persona)
        Try
            Dim con As New coneccion
            Dim query As String = "insert into persona values(?par0,?par1,?par2,?par3,?par4,?par5,?par6,?par7)"
            con.conectar_bd()
            cmd = New MySqlCommand
            cmd.CommandText = query
            cmd.CommandType = CommandType.Text
            cmd.Connection = con._con
            cmd.Parameters.AddWithValue("?par0", CInt(per.Id))
            cmd.Parameters.AddWithValue("?par1", per.Cedula)
            cmd.Parameters.AddWithValue("?par2", per.Nombre)
            cmd.Parameters.AddWithValue("?par3", per.Apellido)
            cmd.Parameters.AddWithValue("?par4", per.Email)
            cmd.Parameters.AddWithValue("?par5", per.Celular)
            cmd.Parameters.AddWithValue("?par6", per.Sexo)
            cmd.Parameters.AddWithValue("?par7", per.Estado)
            cmd.ExecuteNonQuery()
            con.cerrar_coneccion()
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Sub
    Public Sub actualizar_personas(ByVal per As Persona)
        Try
            Dim con As New coneccion
            Dim query As String = "update persona set cedula=?par1,nombre=?par2,apellido=?par3,email=?par4,celular=?par5,sexo=?par6,estado=?par7 Where id_persona=?par0"
            con.conectar_bd()
            cmd = New MySqlCommand
            cmd.CommandText = query
            cmd.CommandType = CommandType.Text
            cmd.Connection = con._con
            cmd.Parameters.AddWithValue("?par0", CInt(per.Id))
            cmd.Parameters.AddWithValue("?par1", per.Cedula)
            cmd.Parameters.AddWithValue("?par2", per.Nombre)
            cmd.Parameters.AddWithValue("?par3", per.Apellido)
            cmd.Parameters.AddWithValue("?par4", per.Email)
            cmd.Parameters.AddWithValue("?par5", per.Celular)
            cmd.Parameters.AddWithValue("?par6", per.Sexo)
            cmd.Parameters.AddWithValue("?par7", per.Estado)
            cmd.ExecuteNonQuery()
            con.cerrar_coneccion()
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Sub
    Public Sub eliminar_personas(ByVal id_per As Integer)
        Try
            Dim con As New coneccion
            Dim query As String = "update persona set estado=?par1 Where id_persona=?par0"
            con.conectar_bd()
            cmd = New MySqlCommand
            cmd.CommandText = query
            cmd.CommandType = CommandType.Text
            cmd.Connection = con._con
            cmd.Parameters.AddWithValue("?par0", id_per)
            cmd.Parameters.AddWithValue("?par1", "E")
            cmd.ExecuteNonQuery()
            con.cerrar_coneccion()
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Sub
End Class
Clase coneccion
Public Class coneccion
    Public _con As MySql.Data.MySqlClient.MySqlConnection
    Private _cadena As String
    Public Sub conectar_bd()
        Dim _estado As String = ""
        Try
            _cadena = ("server=localhost; database=bd_ejemplo_jpa; user id=root; password=")
            _con = New MySql.Data.MySqlClient.MySqlConnection(_cadena)
            _con.Open()
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Sub
    Public Sub cerrar_coneccion()
        _con.Close()
    End Sub
End Class
Capa Entidad
Public Class Persona
    Private _id_persona As Integer
    Private _cedula As String
    Private _nombre As String
    Private _apellido As String
    Private _email As String
    Private _celular As String
    Private _sexo As String
    Private _estado As String

    Public Property Id As Integer
        Get
            Return _id_persona
        End Get
        Set(value As Integer)
            _id_persona = value
        End Set
    End Property

    Public Property Cedula As String
        Get
            Return _cedula
        End Get
        Set(value As String)
            _cedula = value
        End Set
    End Property

    Public Property Nombre As String
        Get
            Return _nombre
        End Get
        Set(value As String)
            _nombre = value
        End Set
    End Property
    Public Property Apellido As String
        Get
            Return _apellido
        End Get
        Set(value As String)
            _apellido = value
        End Set
    End Property
    Public Property Email As String
        Get
            Return _email
        End Get
        Set(value As String)
            _email = value
        End Set
    End Property
    Public Property Celular As String
        Get
            Return _celular
        End Get
        Set(value As String)
            _celular = value
        End Set
    End Property
    Public Property Sexo As String
        Get
            Return _sexo
        End Get
        Set(value As String)
            _sexo = value
        End Set
    End Property
    Public Property Estado As String
        Get
            Return _estado
        End Get
        Set(value As String)
            _estado = value
        End Set
    End Property
End Class

miércoles, 7 de septiembre de 2016

Crud zk , JPA , Java con Mysql

En esta entrada proporcionaré un ejemplo básico de como realizar el registro, actualizar y eliminar datos desde una aplicación con BD Mysql.
Utilizamos:
  • ZK
  • Java
  • Myqsl
  • JPA

Partiremos suponiendo que ya tienen el entorno listo para elaborar el ejemplo.

Trabajaremos en una tabla con los siguientes campos

Nuestro ejemplo tendrá lista en la parte inferior donde se ira actualizando conforme se elimine, edite o agregue una nueva persona.






 
  
   

Ahora, la parte del controlador
package controlador;


import java.util.List;


import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Button;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;

import org.zkoss.zul.Textbox;

import datos.Dpersona;
import entidad.Persona;

public class PersonaControlador extends GenericForwardComposer{
private static final long serialVersionUID = 1L;
 
 //-----
 @Wire
 Textbox txt_IdPersona, txt_PrimerNombre, txt_Cedula, txt_Apellido, txt_Celular, txt_Email;
 Combobox cmb_Sexo;
 Button btn_Guardar, btn_Nuevo,btn_Editar,btn_Borrar;
 Listbox list_Persona;

 
 Persona datos = new Persona();
 
 public void doAfterCompose(Component comp) throws Exception {
  // TODO Auto-generated method stub
  
  super.doAfterCompose(comp);
  cargalist();
  refrescar_formulario();
 }
 
 public void refrescar_formulario(){
  txt_PrimerNombre.setValue("");
  txt_Apellido.setValue("");
  txt_Cedula.setValue("");
  txt_Celular.setValue("");
  txt_Email.setValue("");
  list_Persona.clearSelection();
  btn_Guardar.setDisabled(false);
  btn_Editar.setDisabled(true);
  btn_Borrar.setDisabled(true);
  cmb_Sexo.setValue("");
 }
 public void cargalist(){
  Dpersona per= new Dpersona();
  List lista=per.listapersonas();
  ListModelList listamodelo = new ListModelList(lista);
   list_Persona.setModel(listamodelo);
   list_Persona.renderAll();
 }
 
 public void onSelect$list_Persona(){
  Persona per=list_Persona.getSelectedItem().getValue();
  txt_IdPersona.setValue(Integer.toString(per.getIdPersona()));
  txt_PrimerNombre.setValue(per.getNombre());
  txt_Apellido.setValue(per.getApellido());
  txt_Cedula.setValue(per.getCedula());
  txt_Email.setValue(per.getEmail());
  txt_Celular.setValue(per.getCelular());
  cmb_Sexo.setValue(per.getSexo());
  btn_Guardar.setDisabled(true);
  btn_Editar.setDisabled(false);
  btn_Borrar.setDisabled(false);
 }
 public void onClick$btn_Nuevo(){
  cargalist();
  refrescar_formulario();
 }
 
 public void onClick$btn_Guardar(){
  try {
   String nombre=txt_PrimerNombre.getValue();
   String apellido= txt_Apellido.getValue();
   String cedula= txt_Cedula.getValue();
   String celular= txt_Celular.getValue();
   String email= txt_Email.getValue();
   String sexo= cmb_Sexo.getValue();
   if(nombre.isEmpty()||apellido.isEmpty()||cedula.isEmpty()||celular.isEmpty()||email.isEmpty()){
    alert("Todos los campos son obligatorios");
   }else{
    Persona per= new Persona();
    per.setNombre(nombre);
    per.setApellido(apellido);
    per.setCedula(cedula);
    per.setCelular(celular);
    per.setEmail(email);
    per.setSexo(sexo);
    per.setEstado("A");
    Dpersona.CrearPersona(per);
    alert("Persona creada correctamente...!");
    cargalist();
    refrescar_formulario();
   }
  } catch (Exception e) {
   alert("Error: " + e.getMessage());
  }
 }
 public void onClick$btn_Editar() {
  try {
 
  if (txt_PrimerNombre.getText().isEmpty() || txt_IdPersona.getText().isEmpty() || txt_Apellido.getText().isEmpty()
    || txt_Email.getText().isEmpty() || cmb_Sexo.getValue() == "" || txt_Cedula.getText().isEmpty()) {
   alert("Todos los campos con (*) son obligatorios");

  } else {

   Dpersona mper = new Dpersona();
   Persona per = new Persona();

   per.setIdPersona(Integer.parseInt(txt_IdPersona.getText()));
   per.setNombre(txt_PrimerNombre.getText().toUpperCase());
   per.setApellido(txt_Apellido.getText().toUpperCase());
   per.setCedula(txt_Cedula.getText());
   per.setCelular(txt_Celular.getText());
   per.setEmail(txt_Email.getText());
   per.setSexo(cmb_Sexo.getValue());
   per.setEstado("A");

   mper.Editarpersona(per);
   alert("Datos actualizados con exito");
   cargalist();
   refrescar_formulario();
   
   }
   } catch (Exception e) {// TODO Auto-generated catch block
    alert(e.getMessage());
   }
  
 }

 public void onClick$btn_Borrar() {
  try {
   Dpersona mper = new Dpersona();
   Persona per = new Persona();
   per.setIdPersona(Integer.parseInt(txt_IdPersona.getText()));
   per.setEstado("E");
   mper.Eliminarpersona(per);
   alert("Datos eliminados con exito");
   cargalist();
   refrescar_formulario();
   } catch (Exception e) {
      // TODO Auto-generated catch block
    alert(e.getMessage());
   }
  }

}

La capa de datos
package datos;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;


import entidad.Persona;
public class Dpersona {
 
 public static void CrearPersona(Persona per) throws Exception{
   EntityManagerFactory emf = Persistence.createEntityManagerFactory("srlab");
     EntityManager entitymanager = emf.createEntityManager( );
     try{
      entitymanager.getTransaction().begin();
      entitymanager.persist(per);
      entitymanager.getTransaction().commit();
     } catch (Exception e) {
      entitymanager.getTransaction().rollback();
      throw new Exception("Error al registrar la Persona..!");

     }finally {
      entitymanager.close();
      emf.close();
     }
  
 }
 public void Editarpersona(Persona per) throws Exception {
 Persona per_aux = new Persona();
 EntityManagerFactory emf = Persistence.createEntityManagerFactory("srlab");
    EntityManager entitymanager = emf.createEntityManager( );
  try {
   entitymanager.getTransaction().begin();
   per_aux = entitymanager.find(Persona.class, per.getIdPersona());
   entitymanager.flush();
   per_aux.setNombre(per.getNombre());
   per_aux.setApellido(per.getApellido());
   per_aux.setCedula(per.getCedula());
   per_aux.setCelular(per.getCelular());
   per_aux.setEmail(per.getEmail());
   per_aux.setSexo(per.getSexo());
   per_aux.setEstado(per.getEstado());
   entitymanager.merge(per_aux);
   entitymanager.getTransaction().commit();

  } catch (Exception e) {
   // TODO: handle exception
   //e.printStackTrace();
   entitymanager.getTransaction().rollback();
      throw new Exception("Error al actualizar..!");
  } finally {
   entitymanager.close();
   emf.close();
  }
 }

 public void Eliminarpersona(Persona per) throws Exception {
  Persona per_aux = new Persona();
  EntityManagerFactory emf = Persistence.createEntityManagerFactory("srlab");
     EntityManager entitymanager = emf.createEntityManager( );
  try {
   entitymanager.getTransaction().begin();
   per_aux =entitymanager.find(Persona.class, per.getIdPersona());
   entitymanager.flush();
   per_aux.setIdPersona(per.getIdPersona());
   per_aux.setEstado(per.getEstado());
   entitymanager.merge(per_aux);//si quieres eliminar  aplica remove
   entitymanager.getTransaction().commit();
  } catch (Exception e) {
      throw new Exception("Error al eliminar..!");
  } finally {
   entitymanager.close();
   emf.close();
  }
 }
 @SuppressWarnings({ "unchecked", "finally" })
 public List listapersonas(){
   EntityManagerFactory emf=Persistence.createEntityManagerFactory("srlab");
   EntityManager entitymanager = emf.createEntityManager();
   List lista = null;
   try {
    entitymanager.getTransaction().begin();
    Query query = entitymanager.createNamedQuery("Persona.findAll",Persona.class);
    lista = query.getResultList();
   
   entitymanager.getTransaction().commit();
   } catch (Exception e) {
   // TODO: handle exception
    //e.printStackTrace(); 
   entitymanager.getTransaction().rollback();
   throw new Exception("no pode vose");
  
  }finally {
   entitymanager.close();
   emf.close();
   return lista;
   }
 
 }

}

La entidad que tendrán que generarla con JPA, pero bueno igual se las dejo =)
package entidad;

import java.io.Serializable;
import javax.persistence.*;


/**
 * The persistent class for the persona database table.
 * 
 */
@Entity
@NamedQuery(name="Persona.findAll", query="SELECT p FROM Persona p where p.estado ='A'")
public class Persona implements Serializable {
 private static final long serialVersionUID = 1L;

 @Id
 @Column(name="id_persona")
 private int idPersona;

 private String apellido;

 private String cedula;

 private String celular;

 private String email;

 private String estado;

 private String nombre;

 private String sexo;

 public Persona() {
 }

 public int getIdPersona() {
  return this.idPersona;
 }

 public void setIdPersona(int idPersona) {
  this.idPersona = idPersona;
 }

 public String getApellido() {
  return this.apellido;
 }

 public void setApellido(String apellido) {
  this.apellido = apellido;
 }

 public String getCedula() {
  return this.cedula;
 }

 public void setCedula(String cedula) {
  this.cedula = cedula;
 }

 public String getCelular() {
  return this.celular;
 }

 public void setCelular(String celular) {
  this.celular = celular;
 }

 public String getEmail() {
  return this.email;
 }

 public void setEmail(String email) {
  this.email = email;
 }

 public String getEstado() {
  return this.estado;
 }

 public void setEstado(String estado) {
  this.estado = estado;
 }

 public String getNombre() {
  return this.nombre;
 }

 public void setNombre(String nombre) {
  this.nombre = nombre;
 }

 public String getSexo() {
  return this.sexo;
 }

 public void setSexo(String sexo) {
  this.sexo = sexo;
 }

}
 
Igual aqui les dejo el archivo del projecto para que lo puedan descargar y una pagina donde podrán aprender más sobre JPA.
Archivo: Srlab
Pagina: JPA

Dudas o preguntas, comenten =) 

Leer, escribir y vaciar archivo de texto Vb.net


Vamos a usar un ejemplo con 3 cajas de texto. Simulando un número de factura, que al dar click en aumentar se incrementará en 1 el  número de la tercer caja de texto.




 
Hay funciones para verificar si la carpeta y archivo de texto existen, para crearlos en caso de que no, para borrar el contenido del archivo y volver a escribir, cabe recalcar que se trabajará con la primer linea del archivo.
Dudas o preguntas, comenten =) 

A continuación, el código.


 Private Sub btn_guardar_Click(sender As Object, e As EventArgs) Handles btn_guardar.Click
        If (Me.txt_serie1.Text = "" Or Me.txt_serie2.Text = "" Or Me.txt_numero_serie.Text = "") Then
            MsgBox("Faltan algunos campos")
        Else
            If verifica_existe_carpeta() Then
                If verifica_existe_archivo() Then
                    '   MsgBox("Archivo existe")
                    borra_info_fac()
                    escribir_numero_de_factura(Me.txt_serie1.Text, Me.txt_serie2.Text, Me.txt_numero_serie.Text)
                Else
                    '   MsgBox("Archivo no existe")
                    crear_archivo()
                    escribir_numero_de_factura(Me.txt_serie1.Text, Me.txt_serie2.Text, Me.txt_numero_serie.Text)
                End If
            Else
                ' MsgBox("Carpeta no existe")
                crear_carpeta()
                crear_archivo()
                escribir_numero_de_factura(Me.txt_serie1.Text, Me.txt_serie2.Text, Me.txt_numero_serie.Text)
            End If
            cargar_numero_fac()
        End If
    End Sub
    Private Function verifica_existe_carpeta() As Boolean 'verifica si existe el archivo
        Dim resp As Boolean = False
        Dim ruta As String = "C:\iconos"
        If Directory.Exists(ruta) = True Then
            resp = True
        End If
        Return resp
    End Function
    Private Function verifica_existe_archivo() As Boolean 'verifica si existe el archivo
        Dim resp As Boolean = False
        Dim ruta As String = "C:\iconos\num_serie.txt"
        If File.Exists(ruta) = True Then
            resp = True
        End If
        Return resp
    End Function
    Private Sub cargar_numero_fac() 'carga el numero de la factura
        If verifica_existe_carpeta() And verifica_existe_archivo() Then
            Dim objStreamReader As StreamReader
            Dim strLine As String
            objStreamReader = New StreamReader("C:\iconos\num_serie.txt")
            'extraemos la primer linea de texto
            strLine = objStreamReader.ReadLine
            objStreamReader.Close()
            If strLine = "" Then
                Me.txt_serie1.Text = "000"
                Me.txt_serie2.Text = "000"
                Me.txt_numero_serie.Text = "000000000"
            Else
                Dim Arreglo As String() = strLine.Split("-")
                Me.txt_serie1.Text = Arreglo(0)
                Me.txt_serie2.Text = Arreglo(1)
                Me.txt_numero_serie.Text = Arreglo(2)
            End If
        Else
            ' MsgBox("Carpeta y/o archivo no existe")
            Me.txt_serie1.Text = "000"
            Me.txt_serie2.Text = "000"
            Me.txt_numero_serie.Text = "000000000"
        End If
    End Sub
    Private Sub crear_carpeta()
        Dim ruta As String = "C:\"
        My.Computer.FileSystem.CreateDirectory(ruta & "\iconos")
    End Sub
    Private Sub crear_archivo()
        Dim ruta As String = "C:\iconos\num_serie.txt"
        Dim fi As FileInfo = New FileInfo(ruta)
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        cargar_numero_fac()
    End Sub
    Private Sub escribir_numero_de_factura(ByVal serie1 As String, ByVal serie2 As String, ByVal num_serie As String)
        Dim ruta As String = "C:\iconos\num_serie.txt"
        Dim sw As StreamWriter
           sw = File.CreateText(ruta)
        sw.WriteLine(serie1 & "-" & serie2 & "-" & num_serie)
        sw.Flush()
        sw.Close()
    End Sub
    Private Sub borra_info_fac()
        Using file As New IO.StreamWriter("C:\iconos\num_serie.txt")
            file.Flush()
        End Using
    End Sub
    Private Sub incrementa_num_fac()
        ' extraemos contenido
        Dim objStreamReader As StreamReader
        Dim strLine As String
        objStreamReader = New StreamReader("C:\iconos\num_serie.txt")
        'Leemos la primer linea de texto
        strLine = objStreamReader.ReadLine
        'cerramos el archivo.
        objStreamReader.Close()
        Dim Arreglo As String() = strLine.Split("-")' separamos la cadena 
        Dim s1 As String = Arreglo(0)
        Dim s2 As String = Arreglo(1)
        Dim s3 As String = CStr(CInt(Arreglo(2)) + 1)'sumamos en 1
        '-------------borramos contenido
        borra_info_fac()
        '---------------actualiza
        escribir_numero_de_factura(s1, s2, s3)
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        incrementa_num_fac()
        cargar_numero_fac()
    End Sub


sábado, 13 de agosto de 2016

Crear informe vb.net conexion nativa Mysql

Bueno en esta ocasion utilizaré una tabla con la que estoy trabajando actualmente =)
 
Ahora crearemos un dataset y dentro de este crearemos una tabla 


Sencillo verdad? en este caso lo cree con solo 3 campos pues en la seleccion que hare en visual solo traere los 3 campos, agrupandolos por descripcion y contando, para saber el numero de pacientes por consulta. 
Ahora deben crear un informe .rdlc  y en "Datos de Informe" deben agragar el dataset y escoger la tabla que creamos anteriormente.


 Bueno luego de eso solo debes arrastrar de Dataset1 en Conjunto de datos o crear una tabla dependiendo de como quieran presentar sus datos
 Me ha quedado de esta manera y tambien agregue unos parametros que voy a enviar desde mi formulario =)


Luego crearemos un nuevo formulario donde se visualizara nuestro informe
 


 Agregan un Reportviewer y eligen el rdlc que creamos en el paso anterior.
 
Ahora desde mi formulario enviare 4 parametros, los de las 3 cajas de texto de abajoo y la fecha actual


A continuacion el codigo del boton Imprimir
 Private Sub btn_imprimir_Click(sender As Object, e As EventArgs) Handles btn_imprimir.Click
        Dim fecha_reporte, tot_reg, tot_ate, tot_din As String
        fecha_reporte = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")
        tot_reg = Me.txt_num_reg.Text
        tot_ate = Me.txt_total_atendidos.Text
        tot_din = Me.txt_dinero_atendidos.Text

        Dim fecha_desde, fecha_hasta As String
        fecha_desde = Me.dt_fecha_desde.Value.ToString("yyyy-MM-dd")
        fecha_hasta = Me.dt_fecha_hasta.Value.ToString("yyyy-MM-dd")

        Dim querycab As String
        conexion_global()
        querycab = "select  Descripcion,count(*) numero, sum(total) total from det_fac_con where Dia_Turno>='" & fecha_desde & "' and Dia_Turno<'" & fecha_hasta & "' Group by Descripcion"
        da = ejecuta_consulta_DataAdapter(querycab)
        Dim table As New DS_general_estadisticas.tabla_general_estDataTable
        da.Fill(table)

        ver_pacientes_atendidos.DS_general_estadisticas.tabla_general_est.Merge(table)
        'Parametros 

        Dim parameters As ReportParameter() = New ReportParameter(3) {}
        parameters(0) = New ReportParameter("fecha_reporte", fecha_reporte)
        parameters(1) = New ReportParameter("num_reg", tot_reg)
        parameters(2) = New ReportParameter("tot_ate", tot_ate)
        parameters(3) = New ReportParameter("tot_din", tot_din)


        ver_pacientes_atendidos.ReportViewer1.LocalReport.SetParameters(parameters)
        ver_pacientes_atendidos.ReportViewer1.RefreshReport()

        ver_pacientes_atendidos.ShowDialog()
        cerrar()
    End Sub
Ahora el codigo en el Modulo "Conexion" =)

Imports MySql.Data
Imports MySql.Data.Types
Imports MySql.Data.MySqlClient

Module Conexion
    Public _cadena As String
    Public _conexion As MySqlConnection
    Public cmd As MySqlCommand
    Public da As New MySqlDataAdapter
    Public ultimo_id As Integer
    Public Function conexion_global() As Boolean
        Dim _estado As Boolean = True
        Try
            _cadena = ("server=localhost; database=primeroagosto; user id=root; password=")
            _conexion = New MySqlConnection(_cadena)
            _conexion.Open()

        Catch ex As Exception
            MessageBox.Show(ex.Message)
            _estado = False
        End Try
        Return _estado
    End Function
    Public Sub cerrar()
        _conexion.Close()
    End Sub
End Module

domingo, 7 de agosto de 2016

Código para enviar correo con Java

Antes de implementar el código de abajo tienen que generar una contraseña de aplicación de una cuenta de google

import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
 

 
public class correo {
 static String remitente = "correo@gmail.com";
 static String claveCorreo = "";
 static Properties mailServerProperties;
 static Session getMailSession;
 static MimeMessage generateMailMessage;
 
 public static void main(String args[]) throws AddressException, MessagingException {
  enviarcorreo();
  
 }
 
 public static void enviarcorreo() throws AddressException, MessagingException {
 
  mailServerProperties = System.getProperties();
  mailServerProperties.put("mail.smtp.host", "smtp.gmail.com");
  mailServerProperties.put("mail.smtp.port", "587");
  mailServerProperties.put("mail.smtp.auth", "true");
  mailServerProperties.put("mail.smtp.starttls.enable", "true");


  getMailSession = Session.getDefaultInstance(mailServerProperties, null);
  generateMailMessage = new MimeMessage(getMailSession);
  generateMailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress("destinatario1"));
  generateMailMessage.addRecipient(Message.RecipientType.CC, new InternetAddress("destinatario2"));
  generateMailMessage.setSubject("PRUEBAAA...!");
  String mensaje= "Correo de prueba. " + "Oh";
  generateMailMessage.setContent(mensaje, "text/html");
  
  Transport transport = getMailSession.getTransport("smtp");
 
  transport.connect("smtp.gmail.com",remitente,claveCorreo);
  transport.sendMessage(generateMailMessage, generateMailMessage.getAllRecipients());
  transport.close();
 }
}