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 varchar(50)=null,
@cuenta nvarchar(50)=null,
@empresa numeric(9)=null,
@banco varchar(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 PELICULAS
--varchar
WHERE ck like isnull(@ck + '%', ck) and
cod_cuenta like isnull(@cuenta + '%', cuenta) and
--num
cod_empresa like isnull(Cast(@empresa As Varchar) + '%', Cast(cod_empresa As Varchar)) AND
--varchar
cod_banco like isnull (@banco + '%', banco) and
cod_tipomov like isnull(Cast(@tipo As Varchar) + '%', Cast(cod_tipomov As Varchar)) AND
concepto like isnull (@con + '%', con) 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();
if (ck.isEmpty())
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);
int rpta=cst.executeUpdate();
int contador =0;
while (rs.next())
{
contador++;
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);
if (0==contador)
{
JOptionPane.showMessageDialog(null, "No se encontró ningún registro");
}
else
{
JOptionPane.showMessageDialog(null, "La cantidad de registros encontrados son: "+contador);
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null, e);
}
Este es el procedimiento almacenado que desarrollé
CREATE procedure pro_consulta
@ck varchar(50)=null,
@cuenta nvarchar(50)=null,
@empresa numeric(9)=null,
@banco varchar(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 PELICULAS
--varchar
WHERE ck like isnull(@ck + '%', ck) and
cod_cuenta like isnull(@cuenta + '%', cuenta) and
--num
cod_empresa like isnull(Cast(@empresa As Varchar) + '%', Cast(cod_empresa As Varchar)) AND
--varchar
cod_banco like isnull (@banco + '%', banco) and
cod_tipomov like isnull(Cast(@tipo As Varchar) + '%', Cast(cod_tipomov As Varchar)) AND
concepto like isnull (@con + '%', con) 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();
if (ck.isEmpty())
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);
int rpta=cst.executeUpdate();
int contador =0;
while (rs.next())
{
contador++;
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);
if (0==contador)
{
JOptionPane.showMessageDialog(null, "No se encontró ningún registro");
}
else
{
JOptionPane.showMessageDialog(null, "La cantidad de registros encontrados son: "+contador);
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null, e);
}