Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / MVC / Proyectos / Sistema de gestión de stock – El Controlador (Parte 5)

Sistema de gestión de stock – El Controlador (Parte 5)

Autor jc mouse martes, septiembre 4, 2012

Para terminar el tutorial, debemos unir tanto la VISTA como el MODELO y para eso esta el CONTROLADOR. o.O

El controlador. Responde a los eventos que el usuario realiza a través de la VISTA y en algunos casos directamente en el MODELO. El controlador como su  nombre indica 🙂 , controla los eventos generados por el usuario pasando estos hacia el modelo esperando una respuesta de este para después devolver el resultado en la VISTA que corresponda.

esquema mvc

El paquete correspondiente al controlador en nuestra aplicación, consta de dos clases, la clase controlador.java y el Main.java

troll face

La clase controlador es la siguiente:

package controlador;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Date;
import java.util.Map;
import java.util.HashMap;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
//Logica de aplicación -> MODELO
import modelo.carrito;
import modelo.modelo;
import modelo.producto;
//interfaz de usuario -> VISTA
import vista.frmConsulta;
import vista.frmPrincipal;
import vista.frmProducto;
import vista.frmVenta;
/**
 * @web https://www.jc-mouse.net
 * @author Mouse 
 */
public class jcontrolador implements ActionListener,MouseListener{

    //vista
    private frmPrincipal frmprincipal ;
    private frmProducto frmproducto = new frmProducto();
    private frmVenta frmventa = new frmVenta();
    private frmConsulta frmconsulta = new frmConsulta();
    //modelo
    private modelo mimodelo = new modelo();

    //variable para almacenar los productos de una venta
    private Map carrito_compra = new HashMap();

     //acciones que se ejecuta por los controles de cada VISTA
    public enum Accion
    {
        __VER_PRODUCTOS, //-> Abre VISTA productos
        __VER_NUEVA_VENTA, //abre VISTA nueva venta
        __VER_NUEVA_COMPRA, //abre VISTA nueva compra
        __CONSULTAS, //-> Abre VISTA para realizar consultas

        __AGREGAR_PRODUCTO,//-> Ejecuta consulta
        __ACTUALIZAR_PRODUCTO,//-> Ejecuta consulta

        __NUEVA_VENTA,//-> genera un codigo al azar y limpia controles
        __lista_productos,//->se ejecuta cuando se hace clic en el jcombobox de productos de VISTA frmVenta
        __AGREGAR_A_LISTA,//->asigna un producto al carrito de compras
        __REMOVER_PRODUCTO,//-> remueve un producto del carrito de compras
        __REGISTRAR_VENTA,//-> registra una venta en la base de datos

        __PROCESAR_CONSULTA, //-> Ejecuta consulta -> busqueda de venta por ID
        __PROCESAR_CONSULTA2//-> Ejecuta consulta -> busqueda de venta por rango de fechas 

    }

    /** Constructor de clase */
    public jcontrolador( JFrame padre )
    {
        this.frmprincipal = (frmPrincipal) padre;
    }

    //EVENTOS DEL RATON SOBRE LOS COMPONENTES
    public void mouseClicked(MouseEvent e) {
        if( e.getButton()== 1)//boton izquierdo
        {
             int fila = this.frmproducto.__TABLA_PRODUCTO.rowAtPoint(e.getPoint());
             if (fila > -1){
                this.frmproducto.__id.setText( String.valueOf( this.frmproducto.__TABLA_PRODUCTO.getValueAt(fila, 0) ));
                this.frmproducto.__nombre.setText( String.valueOf( this.frmproducto.__TABLA_PRODUCTO.getValueAt(fila, 1) ));
                this.frmproducto.__precio.setText( String.valueOf( this.frmproducto.__TABLA_PRODUCTO.getValueAt(fila, 2) ));
                this.frmproducto.__cantidad.setText( String.valueOf( this.frmproducto.__TABLA_PRODUCTO.getValueAt(fila, 3) ));
                this.frmproducto.__lista_categorias.setSelectedItem(  String.valueOf( this.frmproducto.__TABLA_PRODUCTO.getValueAt(fila, 4) ) );                
             }
        }
    }

    public void mousePressed(MouseEvent e){/** nada por aqui */}

    public void mouseReleased(MouseEvent e){/** nada por aqui */}

    public void mouseEntered(MouseEvent e){/** nada por aqui */}

    public void mouseExited(MouseEvent e){/** nada por aqui */}

    /** Inicia todos las acciones y listener de la vista */
    public void iniciar()
    {
        //frmprincipal.setVisible(true); //si no se utiliza SKIN
         // Skin tipo WINDOWS
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
            SwingUtilities.updateComponentTreeUI(frmprincipal);
            SwingUtilities.updateComponentTreeUI( this.frmproducto );
            SwingUtilities.updateComponentTreeUI( this.frmventa );
            SwingUtilities.updateComponentTreeUI( this.frmconsulta );
            this.frmprincipal.setLocationRelativeTo(null);
            this.frmprincipal.setTitle("Control de Inventario - https://www.jc-mouse.net/");
            this.frmprincipal.setVisible(true);
        } catch (UnsupportedLookAndFeelException ex) {}
          catch (ClassNotFoundException ex) {}
          catch (InstantiationException ex) {}
          catch (IllegalAccessException ex) {}

        //boton
        this.frmprincipal.__VER_PRODUCTOS.setActionCommand( "__VER_PRODUCTOS" );
        this.frmprincipal.__VER_PRODUCTOS.addActionListener(this);
        //boton
        this.frmprincipal.__VER_NUEVA_VENTA.setActionCommand( "__VER_NUEVA_VENTA" );
        this.frmprincipal.__VER_NUEVA_VENTA.addActionListener(this);
        //boton
        this.frmprincipal.__VER_NUEVA_COMPRA.setActionCommand( "__VER_NUEVA_COMPRA" );
        this.frmprincipal.__VER_NUEVA_COMPRA.addActionListener(this);
        //boton
        this.frmprincipal.__CONSULTAS.setActionCommand("__CONSULTAS");
        this.frmprincipal.__CONSULTAS.addActionListener(this);

         //escucha eventos del raton sobre la tabla
        this.frmproducto.__TABLA_PRODUCTO.addMouseListener(this);
        //comando y listener para boton agregar producto
        this.frmproducto.__AGREGAR_PRODUCTO.setActionCommand("__AGREGAR_PRODUCTO");
        this.frmproducto.__AGREGAR_PRODUCTO.addActionListener(this);
        //comando y listener para boton actualizar producto
        this.frmproducto.__ACTUALIZAR_PRODUCTO.setActionCommand("__ACTUALIZAR_PRODUCTO");
        this.frmproducto.__ACTUALIZAR_PRODUCTO.addActionListener(this);

        //boton VISTA frmVenta
        this.frmventa.__NUEVA_VENTA.setActionCommand("__NUEVA_VENTA");
        this.frmventa.__NUEVA_VENTA.addActionListener(this);
        //jcombobox frmVenta
        this.frmventa.__lista_productos.setActionCommand("__lista_productos");
        this.frmventa.__lista_productos.addActionListener(this);
        //boton frmVenta
        this.frmventa.__AGREGAR_A_LISTA.setActionCommand("__AGREGAR_A_LISTA");
        this.frmventa.__AGREGAR_A_LISTA.addActionListener(this);
        //boton frmVenta
        this.frmventa.__REMOVER_PRODUCTO.setActionCommand("__REMOVER_PRODUCTO");
        this.frmventa.__REMOVER_PRODUCTO.addActionListener(this);
        //botn frmVenta
        this.frmventa.__REGISTRAR_VENTA.setActionCommand("__REGISTRAR_VENTA");
        this.frmventa.__REGISTRAR_VENTA.addActionListener(this);

        //boton frmConsulta
        this.frmconsulta.__PROCESAR_CONSULTA.setActionCommand("__PROCESAR_CONSULTA");
        this.frmconsulta.__PROCESAR_CONSULTA.addActionListener(this);
        //boton frmConsulta
        this.frmconsulta.__PROCESAR_CONSULTA2.setActionCommand("__PROCESAR_CONSULTA2");
        this.frmconsulta.__PROCESAR_CONSULTA2.addActionListener(this);
    }

    /** Gestion de accciones */
    public void actionPerformed(ActionEvent e) {

        switch ( Accion.valueOf( e.getActionCommand() ) )
        {
            case __VER_PRODUCTOS:
                this.frmproducto.setLocationRelativeTo(null);
                this.frmproducto.setTitle("PRODUCTOS - https://www.jc-mouse.net/");
                this.frmproducto.setVisible(true);
                this.frmproducto.__TABLA_PRODUCTO.setModel( this.mimodelo.getTablaProducto() );
                this.frmproducto.__lista_categorias.setModel( this.mimodelo.getListaCategorias() );
                break;
            case __VER_NUEVA_VENTA:
                this.frmventa.setLocationRelativeTo(null);
                this.frmventa.setTitle("VENTA DE PRODUCTOS - https://www.jc-mouse.net/");
                this.frmventa.__id_venta.setText( this.mimodelo.getRandomCode() );
                this.frmventa.__fecha_venta.setText( this.mimodelo.getFecha() );
                this.frmventa.__lista_productos.setModel( this.mimodelo.getListaProductos() );
                this.frmventa.__lista_clientes.setModel( this.mimodelo.getListaClientes() );
                this.carrito_compra.clear();
                this.frmventa.__detalle_productos.setModel(new DefaultComboBoxModel());
                this.frmventa.setVisible(true);
                break;
            case __VER_NUEVA_COMPRA:
                JOptionPane.showMessageDialog(null,"you can do it");
                break;
            case __CONSULTAS:
                this.frmconsulta.setLocationRelativeTo(null);
                this.frmconsulta.setTitle("Consultas - https://www.jc-mouse.net/");
                this.frmconsulta.__fecha1.setDateFormatString("yyyy-MM-dd");
                this.frmconsulta.__fecha2.setDateFormatString("yyyy-MM-dd");
                this.frmconsulta.__fecha1.setDate( new Date() );
                this.frmconsulta.__fecha2.setDate( new Date() );
                this.frmconsulta.setVisible(true);
                break;
//----------------------------------------------------------------- Soy una barra separadora pobre 🙂
            case __AGREGAR_PRODUCTO:
                //obtiene ID de producto
                String cat[] = this.frmproducto.__lista_categorias.getSelectedItem().toString().split("-");
                if ( this.mimodelo.NuevoProducto(
                        this.frmproducto.__id.getText(),
                        this.frmproducto.__nombre.getText() ,
                        this.frmproducto.__precio.getText(),
                        this.frmproducto.__cantidad.getText() ,
                        cat[0].trim()
                      ) )
                {
                    this.frmproducto.__TABLA_PRODUCTO.setModel( this.mimodelo.getTablaProducto() ); //actualiza JTable
                    JOptionPane.showMessageDialog(null,"Nuevo producto agregado");
                }
                else
                    JOptionPane.showMessageDialog(null,"Error: Verifique los datos del nuevo producto");
                break;
            case __ACTUALIZAR_PRODUCTO:
                String cat2[] = this.frmproducto.__lista_categorias.getSelectedItem().toString().split("-");
                if( this.mimodelo.ActualizarProducto(
                        this.frmproducto.__id.getText(),
                        this.frmproducto.__nombre.getText() ,
                        this.frmproducto.__precio.getText(),
                        this.frmproducto.__cantidad.getText() ,
                        cat2[0].trim()
                        ))
                {
                    this.frmproducto.__TABLA_PRODUCTO.setModel( this.mimodelo.getTablaProducto() ); //actualiza JTable
                    JOptionPane.showMessageDialog(null,"Registro actualizado");
                }
                break;
//----------------------------------------------------------------- Soy una barra separadora pobre 🙂
            case __NUEVA_VENTA:
                //asigna un nuevo codigo aleatorio al control
                this.frmventa.__id_venta.setText( this.mimodelo.getRandomCode() );
                //muestra la fecha actual en el control
                this.frmventa.__fecha_venta.setText( this.mimodelo.getFecha() );
                //limpia carrito MAP, jcombobox y demas controles
                this.carrito_compra.clear();
                this.frmventa.__detalle_productos.setModel(new DefaultComboBoxModel());
                this.frmventa.__cantidad.setText("0");
                this.frmventa.__idp.setText("");
                this.frmventa.__stock.setText("0");
                this.frmventa.__precio_unidad.setText("0");
                this.frmventa.__total.setText("0" );
                this.frmventa.__detalle.setText("");
                this.frmventa.__REGISTRAR_VENTA.setEnabled(true);
                break;
            case __lista_productos://cuando se hace clic en algun producto del form VENTA
                //obtiene datos de producto
                producto tmp = this.mimodelo.getProducto( this.frmventa.__lista_productos.getSelectedItem().toString() );
                //coloca los datos en los controles
                this.frmventa.__idp.setText( String.valueOf( tmp.getId() ) );
                this.frmventa.__stock.setText( String.valueOf( tmp.getStock()) );
                this.frmventa.__precio_unidad.setText( String.valueOf( tmp.getPrecio() ) );
                break;
            case __AGREGAR_A_LISTA:
                //controla que se halla seleccionado un producto y
                if( !this.frmventa.__idp.getText().equals("") && !this.frmventa.__cantidad.getText().equals("0"))
                {
                    //controla stock de producto
                    if( Integer.valueOf(this.frmventa.__stock.getText()) > Integer.valueOf(this.frmventa.__cantidad.getText()) )
                    {
                        //nueva instancia a carrito de compras, se cargan datos en la clase
                        carrito tmp_carrito = new carrito();
                        tmp_carrito.setIdproducto( this.frmventa.__idp.getText() );
                        tmp_carrito.setDescripcion( this.frmventa.__lista_productos.getSelectedItem().toString() );
                        tmp_carrito.setPrecio( this.frmventa.__precio_unidad.getText() );
                        tmp_carrito.setCantidad( this.frmventa.__cantidad.getText() );
                        //se añade clase a MAP
                        this.carrito_compra.put( this.frmventa.__idp.getText() , tmp_carrito);
                        //segun el MAP se actualiza la vista del jcombobox
                        this.frmventa.__detalle_productos.setModel( this.mimodelo.ListaProductos(carrito_compra) );
                        //asigna el total de la venta en control
                        this.frmventa.__total.setText( "" + this.mimodelo.getTotalVenta(carrito_compra) );
                    }
                    else JOptionPane.showMessageDialog(null,"Error: No existe stock suficiente para este producto.");
                }
                else JOptionPane.showMessageDialog(null,"Error: Verifique sus datos");
                break;
            case __REMOVER_PRODUCTO:
                JOptionPane.showMessageDialog(null,"you can do it");
                break;
            case __REGISTRAR_VENTA:
                //comprueba que existan productos en el carrito
                if( !this.carrito_compra.isEmpty())
                {
                    //obtiene ID del cliente
                    String idcliente[] = this.frmventa.__lista_clientes.getSelectedItem().toString().split("-");
                    if ( this.mimodelo.RegistrarVenta(this.frmventa.__id_venta.getText(),
                                             carrito_compra,
                                             this.frmventa.__total.getText(),
                                             this.frmventa.__detalle.getText(),
                                             idcliente[1].trim()
                                             ))
                    {
                        JOptionPane.showMessageDialog(null,"Nueva Venta registrada");
                        this.frmventa.__REGISTRAR_VENTA.setEnabled(false);
                    }
                }
                else JOptionPane.showMessageDialog(null,"Error: Sin productos.");
                break;
//----------------------------------------------------------------- Soy una barra separadora pobre 🙂
            case __PROCESAR_CONSULTA:
                String r = this.mimodelo.getDatosVenta(this.frmconsulta.__idventa.getText());
                if( !r.equals("") )
                {
                    this.frmconsulta.__resultadoTabla.setModel( this.mimodelo.getTablaVenta( this.frmconsulta.__idventa.getText() ) );
                    this.frmconsulta.__resultadoTexto.setText( r );
                }
                else
                {
                    this.frmconsulta.__resultadoTabla.setModel( new DefaultTableModel() );
                    this.frmconsulta.__resultadoTexto.setText( "" );
                    JOptionPane.showMessageDialog(null,"No existen registros");
                }
                break;
            case __PROCESAR_CONSULTA2:
                this.frmconsulta.__resultadoTabla.setModel(
                        this.mimodelo.getDatosVentaxFechas( this.frmconsulta.__fecha1.getDate(), this.frmconsulta.__fecha2.getDate() ) );
                this.frmconsulta.__resultadoTexto.setText("");
                break;
        }//-> fin case

    }

}

Y finalmente la clase Main.java que lanza toda la aplicación.

package controlador;
/**
* @web https://www.jc-mouse.net/
 * @author Mouse
 */
import vista.frmPrincipal;
public class Main {

    public static void main(String[] args) {
        //se ejecuta controlador
        new jcontrolador( new frmPrincipal() ).iniciar();
    }

}

Solo nos queda ejecutar el proyecto y ver si tenemos algún error.

gestion de stock java

Todas las clases están comentadas y espero que todo lo explicado en estos 5 post pueda ser entendido sin problemas para que puedan desarrollar el proyecto, sino 🙂 espero que se diviertan averiguando como funciona la aplicación 🙂

El código del proyecto AQUI 🙂

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Trabajando con varios Activitys

Trabajando con varios Activitys

Hasta este momento utilizamos un solo Activity para desarrollar nuestras aplicaciones, sin embargo es común que las apli...

Utiliza 2 bases de datos diferentes en una aplicación parte I

Utiliza 2 bases de datos diferentes en una aplicación parte I

Cuando se desarrolla una aplicación, puede ser un requisito que este tenga soporte para varias tipos de base de datos, s...

Recortar imagen

Recortar imagen

En esta oportunidad dejo a considerancion un codigo realizado en Java/Netbeans para recortar una imagen visualmente Vide...

Introducción a Scene Builder y MVC (Parte I)

Introducción a Scene Builder y MVC (Parte I)

En este tutorial realizaremos una introducción al diseño de interfaces gráficas en JavaFX y Scene Builder, así también v...

JCheckBox dentro JTable con Netbeans

JCheckBox dentro JTable con Netbeans

Para colocar un JCheckBox dentro una celda de un JTable debemos sobre escribir algunas clases para que el componente pue...

Primeros pasos con Vue CLI: Crea tu Entorno de Trabajo

Primeros pasos con Vue CLI: Crea tu Entorno de Trabajo

En un post anterior [Introducción a VueJS framework para el desarrollo FrontEnd] realizamos una breve introducción a Vue...

44 comentarios en “Sistema de gestión de stock – El Controlador (Parte 5)”

  1. diana dice:

    aprendi varias cosas q no tenia idea se podian hacer, super gracias ok!

  2. Reynaldo dice:

    Eres un capo JC-Mouse saludos un compatriota BOliviano sigue adelante..

  3. Nery morel dice:

    IMPRESIONANTE..!!! estos 5 post en verdad capacitas a muchas personas con tu blog.. gracias
    exelente

  4. dag dice:

    hey gracias por tus aportes…sos una maquina…ojala en Bolivia se pueda tener mas gente como tu… saludos desd Tarija…

  5. Felipe dice:

    Excelente Tutorial, eres un Maestro!

    1. Mouse dice:

      🙂 gracias

  6. Jahir dice:

    Gracias por el aporte!

  7. malbertosolis dice:

    hola amigo serias tan amable de subir de nuevo el proyecto completo intente bajarlo pero decia que el proyecto ha sido movido o eliminado… se que deberia ir siguiend el tutorial pero me marca errores en algunas cosas y dice que no es compatible en otras o que no se encuentra… ojala puedas resubirlo estare al pendiente amigo.. gracias y hasta pronto

    1. Mouse dice:

      el enlace esta activo 🙂

  8. Roberto dice:

    Hola jc, desarrolle paso a paso, tu tutorial, primero debo felicitarte por que realmente esta bien estructura, paso a paso, respecto de como usar el modelo mvc en Java, creo que es un trabajo digno de un buen elogio, no te mueras nunca…

  9. vianey dice:

    suoper chulo banisimo desde COLOMBIA TE AGRAQDECEMIOS

  10. Maria dice:

    Tratare de mejorarlo… Unos gráficos con FreeChart y reportes con IReport

  11. Erick dice:

    Muchisimas Gracias! Aprendí Mucho!!!

  12. Esther dice:

    Hola Mouse, me encanta el proyecto e aprendido muchísimas cosas mirando el código, te quería hacer una pregunta, me e descargado tu código, pero a la hora de ejecutarlo el netbeens se me queda pensando sabes a que puede ser debido?, muchas gracias de antemano,

    1. Mouse dice:

      o.O ni idea

  13. Fagu19 dice:

    Excelente tu aporte compadre!

  14. alocoboy dice:

    Hola, me he descargado el código y me surgen dos problemas:
    1- Cuando le doy a nueva venta no me ocurre nada y
    2- No se como conectar la base de datos con el netbeans
    Espero que me ayudeis porque lo necesito

    1. Mouse dice:

      ok :/
      1. ¿colocaste los actioncomand a los controles? recuerda que espacios y mayusculas/minusculas son diferentes en java

      2. para la conexión a la base de datos, en este caso mysql, necesitas el JDBC que lo puedes bajar gratis de la pagina de oracle, necesitas in servidor y la base de datos creada , en la clase que corresponde «database.java» debes especificar tanto el nombre de usuario y password del servidor mysql, así también el nombre de la base de datos.

  15. Miguel Angel dice:

    Me sorprende ver tu trabajos tan bien estructurados. Soy de Chile y estudio ingeniería en informática y en este momento estoy tratando de entender el código de este proyecto.

    Ganarías plata haciendo cursos online viejo y varios lo agradeceríamos. 🙂

    Una consulta que función tienen los implements ??

    linea : public class jcontrolador implements ActionListener,MouseListener{

    Muchas gracias 🙂

    1. Mouse dice:

      «implements es para implementar clases abstractas, las clases abstractas tienen declaracion de funciones sin ser implementados por esa razón cuando usas implements tienes que sobrescribir todas las funciones de la clase abstracta» (fuente yahoo)
      pd: no soy bueno explicando

  16. VIANEY VARGAS dice:

    Amigo mouse necesito ayuda por favor para consultar a la base de datos access:
    pues consultando por numero me trae los datos pero cuando cambio la base de datos a texto para consultar por ejemplo Pt1020 me dice que pocos parametros se esperaba 1 este error me sale cuando consulto String porfavor ayudeme…
    te agradezco por su colaboracion: vvvvianey@gmail.com

    if (evt.getKeyCode() == evt.VK_ENTER == true) {
    try {
    Connection conectar = ConexionPrueba.obtenerConexion();
    String sentencia = «select ControlPC.COD,ControlPC.SERIAL,ControlPC.FECHA,ControlPC.TIPO,ControlPC.MARCA,ControlPC.MODELO,ControlPC.MAC,ControlPC.USUARIO,ControlPC.AREA,USUARIOS.NOMBRE,ControlPC.ESPECIFICACIONES, TIPO.NOMBRE AS NOMT, TIPO.COD from ControlPC,USUARIOS,TIPO,MANTENIMIENTO where (ControlPC.TIPO=TIPO.COD) and (ControlPC.USUARIO=USUARIOS.COD) and (ControlPC.COD=» + cajaConsulte.getText() + «)»;
    Statement estado = conectar.createStatement();
    ResultSet resultado = estado.executeQuery(sentencia);
    if (resultado.next()) {

    labelSerial.setText(resultado.getString(«SERIAL»));
    labelFecha.setText(resultado.getString(«FECHA»));
    labelTipo.setText(resultado.getString(«NOMT»));
    labelMarca.setText(resultado.getString(«MARCA»));
    labelModelo.setText(resultado.getString(«MODELO»));
    labelMac.setText(resultado.getString(«MAC»));
    labelUsuario.setText(resultado.getString(«NOMBRE»));
    labelArea.setText(resultado.getString(«AREA»));
    cajaAreaEspecificacion.setText(resultado.getString(«ESPECIFICACIONES»));
    //cajaAreaEspecificacion.setLineWrap(true);
    labelNoExiste.setText(«»);
    cajaConsulte.selectAll();
    btnVerMantenimiento.setVisible(true);
    } else {
    labelNoExiste.setText(«NO EXISTE UN ARTICULO CON DICHO CODIGO…»);
    labelSerial.setText(«»);
    labelFecha.setText(«»);
    labelTipo.setText(«»);
    labelMarca.setText(«»);
    labelModelo.setText(«»);
    labelMac.setText(«»);
    labelUsuario.setText(«»);
    labelArea.setText(«»);
    cajaAreaEspecificacion.setText(«»);
    cajaConsulte.selectAll();
    btnVerMantenimiento.setVisible(false);
    }
    } catch (Exception ex) {
    JOptionPane.showMessageDialog(null, «¡Error al leer Datos! : » + ex.getMessage());
    ex.printStackTrace();
    }
    }

    1. Mouse dice:

      es error de SQL, verifica tu consulta, creo que le faltan unas comillas en la condicion de busqueda
      ControlPC.COD=” + cajaConsulte.getText() + “)”;

  17. juancupa dice:

    Buenas como vamos exelente sus aportes
    tengo una pregunta o me genera un error en AGREGAR_PRODUCTO me genera el error a la hora de enviarlo a la JTabla (this.frmproducto._TABLA_PRODUCTO.setModel)

    es decir no me toma el setModel

    Gracias de antemano

    1. Mouse dice:

      ¿cual es el error? no pegues todo, con las 3 o 4 primeras lineas es mas que suficientes 🙂

      1. juancupa dice:

        Buenas como vamos estoy crendo desde ceros el proyecto y
        pues el error como le desia es que cuando estoy creando nuevo producto para pasar a
        al modelo o a la tabla (JTabla (this.frmproducto._TABLA_PRODUCTO.setModel))
        cierto entonces, cunado le doy la opcion de TABLA_PRODUCTO.(punto) no sale la opcion de enviarle al modelo de (setModel).

        no se si me hice entender

        gracias

  18. Noetel dice:

    Una consulta, como pruebo el demo?

    1. Mouse dice:

      dentro el RAR están todas las instrucciones 🙂

  19. juan dice:

    Buenas como vamos
    excelentes tus proyectos me han facilitado el aprendizaje
    tengo un problema estoy creando Agregar producto
    case __AGREGAR_PRODUCTO:
    //obtiene ID de producto
    String cat[] = this.frmproducto.__lista_categorias.getSelectedItem().toString().split(«-«);
    if ( this.mimodelo.NuevoProducto(
    this.frmproducto.__id.getText(),
    this.frmproducto.__nombre.getText() ,
    this.frmproducto.__precio.getText(),
    this.frmproducto.__cantidad.getText() ,
    cat[0].trim()
    ) )
    {
    this.frmproducto.__TABLA_PRODUCTO.setModel( this.mimodelo.getTablaProducto() ); //actualiza JTable
    JOptionPane.showMessageDialog(null,»Nuevo producto agregado»);
    }
    else
    JOptionPane.showMessageDialog(null,»Error: Verifique los datos del nuevo producto»);
    break;

    pero me genera error o no me toma El Model cuando envio los datos a la Tabla Productos this.frmproducto.__TABLA_PRODUCTO.setModel( this.mimodelo.getTablaProducto() ); //actualiza JTable

    cuando _TABLA_PRODUCTO.setModel no me la toma

    gracias de antemano

    1. Mouse dice:

      ¿cual el error que te sale?, estas comprobando que en verdad estas enviando valores correctos y no algún NULL, para verificar porque no usas SYSTEM.OUT.PRINTLN() para ver que datos le estas pasando a MIMODELO.NUEVOPRODUCTO()

      1. juancupa dice:

        como vamos
        no en realidad estoy enviando los datos al modelo puesto que los datos si me los toma, pero el problema es que no me toma el setModel cuando le don la opcion TABLA_PRODUCTOS.(punto ) y tomar la opcion setModel

        gracias

        1. Mouse dice:

          :/ no entiendo, si TABLA_PRODUCTOS esta declarado como public, son accesibles todos su métodos públicos, pero OJO, si te refieres a que en el IDE no aparece, es porque cuando cambias la propiedad de Private a Public pasan unos segundos en el que el IDE escanea el objeto y te muestra sus métodos y propiedades, tal ves te esta falta un SAVE project para actualizar el proyecto java 🙂

  20. VIANEY VARGAS dice:

    bien si fue eso muchas gracias men te lo agradezco solo por esas comillas jejeje

  21. ander dice:

    Una consulta..en la clase controlador..en el case__consulta
    …no me reconoce el metodo setDateFormatString..xq sera..xfa!!

    1. Mouse dice:

      setDateFormatString es método de jcalendar para acceder a el debes utilizar ese componente, debes cambiar el swing a PUBLIC para poder llamarlo desde el controlador

  22. leticia dice:

    y si quisiera que esa lista de compra, se pudiera imprimir, es decir hacer un ticket de compra, como podría ser?

    1. Mouse dice:

      pues utilizas reportes, es mas sencillo desde ahi

  23. wilmer dice:

    No es broma, voy probando tu proyecto, pero al ejecutarlo, se conecta a la base de datos con el mensaje
    run:
    OK base de datos bdtest listo
    y ahi se queda, cambie de driver de jdbc a una version inferior 5.1.6 pero nada.

    La prueba lo realice en Netbeans 8 y eclipse, en ambos es el mismo problema

  24. wilmer dice:

    Que es lo que hace esta parte:

    public jcontrolador( JFrame padre )
    {
    this.frmprincipal = (frmPrincipal) padre;
    }

    Por favor si no es mucha molestia para aquellos ignorantes que inician en Java

  25. wilmer dice:

    Para quienes llegaron aqui y no obtuvieron respuestas, lo que hice fue, en el método public void iniciar() del jcontrolador.java le agregué al final este código:

    frmprincipal.setVisible(true);

    lo que hace es visualizar el form principal.

    Saludos

  26. Rolanpcd97 dice:

    Hola, soy nuevo en esta web, estaba leyendo el desarrollo del proyecto esta genial. Es una excelente pagina. mi consulta es si la base de datos utilizada para el proyecto aguantará para almacenar 2000 articulos?

    1. Mouse dice:

      una base de datos aguanta miles de registros sin problemas

  27. Eduardo Henrández dice:

    Hola, muchas gracias por el aporto, solo una observación, cuando trato de modificar el id del producto ya en existencia no se actualiza, es decir, me manda el JOptionPane diciendo que si se realizaron los cambios, pero el id no cambia, es decir, puede cambiar toda la información del producto, pero el id no. Alguna idea? Ya verifiqué y no me falta nada de lo que pusiste. Que sugieren?

    1. Mouse dice:

      bueno el SQL esta hecho para modificar los valores de un producto dado su ID, el ID es quien desencadena la acción, para cambie el ID mismo, tendrías que crearte una nueva función o modificar la existente

  28. Hernan Figueroa dice:

    Muchas gracias aprendi mucho con los codigos de control en varios lenguajes.
    Saludos.

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...

Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...

Google Bard la inteligencia artificial de Google se actualiza con una mejora que entra a competir con el resto de IAs y...

Herramientas

Generador de Enlaces a Whatsapp