Utilizar solo ciertos parámetros en un SP
Me llamo Jorge Gonzalez y tengo poco tiempo programando con BD de Sql Server.
Tengo en un proyecto de VB 6.0 varios catálogos y estoy preparando un formulario de búsqueda que pueda ser utilizado por todos estos
catálogos. Esta forma contiene varios combos que despliegan una lista de los campos de la tabla correspondiente y al lado de cada combo
un textbox en el que se captura el valor a buscar en el campo escogido en el combo. Puesto que el usuario solo va escoger ciertos campos
en su criterio de búsqueda, no se llegan a ocupar todos los parámetros que declare en el Stored Procedure de búsqueda para esta tabla, y si
por ejemplo el usuario no escogió el campo RFC en su criterio de búsqueda me envía un error que dice:
"El procedimiento 'SpCliente_XTodo' precisa el parámetro '@RFC' que no se ha especificado"
Este es el código de VB que inserta los datos de un solo combo en los parámetros de SQL
Dim qdfRes As New ADODB.Recordset
With deSioJorge.Commands("SPCliente_XTodo")
.Parameters("@" & cboBus1.Text).Value = txtBus1
Set qdfRes = .Execute
End With
Este es el Stored Procedure
CREATE PROC SpCliente_XTodo
@Cliente varchar(50),
@RFC varchar(20),
@Contactos varchar(100),
@Telefonos varchar(100),
@Faxs varchar(100),
@Emails varchar(100),
@Dir1 varchar(100),
@Dir2 varchar(100),
@Poblacion varchar(50),
@Estado varchar(50),
@Pais varchar(50),
@CP varchar(20)
AS
Begin
Select *
From Cliente
where Cliente=@Cliente
and RFC=@RFC
and Contactos=@Contactos
and Telefonos=@Telefonos
and Faxs=@Faxs
and Emails=@Emails
and Dir1=@Dir1
and Dir2=@Dir2
and Poblacion=@Poblacion
and Estado=@Estado
and Pais=@Pais
and CP=@CP
END
Go
Donde cboBus1 es el combo que escoge el campo en el que hay que buscar
txtBus1 es el textbox en el que se teclea el valor a buscar
y qdfRes es el recordset en donde voy a almacenar los resultados.
¿Cómo hago para usar solo ciertos parámetros de entre todos los que declare en el Stored Procedure? ¿Hay otra forma mejor de
resolver mi caso?
Tengo en un proyecto de VB 6.0 varios catálogos y estoy preparando un formulario de búsqueda que pueda ser utilizado por todos estos
catálogos. Esta forma contiene varios combos que despliegan una lista de los campos de la tabla correspondiente y al lado de cada combo
un textbox en el que se captura el valor a buscar en el campo escogido en el combo. Puesto que el usuario solo va escoger ciertos campos
en su criterio de búsqueda, no se llegan a ocupar todos los parámetros que declare en el Stored Procedure de búsqueda para esta tabla, y si
por ejemplo el usuario no escogió el campo RFC en su criterio de búsqueda me envía un error que dice:
"El procedimiento 'SpCliente_XTodo' precisa el parámetro '@RFC' que no se ha especificado"
Este es el código de VB que inserta los datos de un solo combo en los parámetros de SQL
Dim qdfRes As New ADODB.Recordset
With deSioJorge.Commands("SPCliente_XTodo")
.Parameters("@" & cboBus1.Text).Value = txtBus1
Set qdfRes = .Execute
End With
Este es el Stored Procedure
CREATE PROC SpCliente_XTodo
@Cliente varchar(50),
@RFC varchar(20),
@Contactos varchar(100),
@Telefonos varchar(100),
@Faxs varchar(100),
@Emails varchar(100),
@Dir1 varchar(100),
@Dir2 varchar(100),
@Poblacion varchar(50),
@Estado varchar(50),
@Pais varchar(50),
@CP varchar(20)
AS
Begin
Select *
From Cliente
where Cliente=@Cliente
and RFC=@RFC
and Contactos=@Contactos
and Telefonos=@Telefonos
and Faxs=@Faxs
and Emails=@Emails
and Dir1=@Dir1
and Dir2=@Dir2
and Poblacion=@Poblacion
and Estado=@Estado
and Pais=@Pais
and CP=@CP
END
Go
Donde cboBus1 es el combo que escoge el campo en el que hay que buscar
txtBus1 es el textbox en el que se teclea el valor a buscar
y qdfRes es el recordset en donde voy a almacenar los resultados.
¿Cómo hago para usar solo ciertos parámetros de entre todos los que declare en el Stored Procedure? ¿Hay otra forma mejor de
resolver mi caso?
1 Respuesta
Respuesta de dcanete
1