Foro de elhacker.net

Programación => Java => Mensaje iniciado por: marc85 en 20 Marzo 2014, 18:24 pm



Título: Búsqueda con diferentes parámetros
Publicado por: marc85 en 20 Marzo 2014, 18:24 pm
Hola, tengo una consulta que hacer, tengo un formulario de consulta donde existen distintos parámetros, el usuario debe especificar esos parámetros pero no necesariamente todos posiblemente algunos queden vacíos, mi pregunta es como debo hacer para mostrar los resultados de acuerdo a los parámetros especificados

Este es el procedimiento almacenado que desarrollé

CREATE procedure pro_consulta

@ck nvarchar(50)=null,
@cuenta nvarchar(50)=null,
@empresa numeric(9)=null,
@banco nvarchar(10)=null,
@tipo numeric(9)=null,
@con nvarchar(80)=null,
@beneficiario nvarchar(50)=null,
@fechai nvarchar(15)=null,
@fechaf nvarchar(15)=null

as

begin
   SELECT * FROM pre_movimientos
         --varchar
   WHERE    ck like isnull(@ck + '%', ck) and
         cod_cuenta like isnull(@cuenta + '%', cod_cuenta) and
         --num
         cod_empresa like isnull(Cast(@empresa As Varchar) + '%', Cast(cod_empresa As Varchar)) AND
         --varchar
         cod_banco like isnull (@banco + '%', cod_banco) and
         cod_tipomov like isnull(Cast(@tipo As Varchar) + '%', Cast(cod_tipomov As Varchar)) AND
         concepto like isnull (@con + '%', concepto) and
         beneficiario like isnull (@beneficiario + '%', beneficiario) and
         fecha  >@fechai and
         fecha <@fechaf
end
GO

y este es el código del botón ejecutar

//Declaración de variables
        String ck = txtNumCK.getText();
        codcuenta(cboCuenta);
        String cuenta = txtCuenta.getText();
        int empresa = cboEmpresa.getSelectedIndex();        
        codbanco(cboBanco);
        String banco = txtBanco.getText();
        int tipo = cboTipoMov.getSelectedIndex();        
        String concepto = txtConcepto.getText();        
        String beneficiario = txtBeneficiario.getText();
        ModeloFecha f=new ModeloFecha(dateInicio.getDate());
        String fechai=f.getFecha();
        ModeloFecha f1=new ModeloFecha(dateFinal.getDate());
        String fechaf=f1.getFecha();
        try
        {
            cst=con.prepareCall("{call pro_consulta(?,?,?,?,?,?,?,?,?)}");
            cst.setString(1, ck);
            cst.setString(2, cuenta);
            cst.setInt(3, empresa);
            cst.setString(4, banco);
            cst.setInt(5, tipo);
            cst.setString(6, concepto);
            cst.setString(7, beneficiario);
            cst.setString(8, fechai);
            cst.setString(9, fechaf);
            rs=cst.executeQuery();
            while (rs.next())
            {
                Object dato[]=new Object[12];
                for(int i=0;i<12;i++)
                {
                    dato=rs.getString(i+1);
                }
                consulta.addRow(dato);
            }
            this.tbConsulta.setModel(consulta);
            //Bloqueando celdas de la tabla
            consulta.isCellEditable(1, 12);
        }
        catch(Exception e)
        {
            JOptionPane.showMessageDialog(null, e);
        }