Seleccionar un empleado o todos desde un combo

27/07/2005 - 19:03 por nelva | Informe spam
Antes en Access yo Podia poner en el criterio de la consulta la instruccion
siguiente. lo que me permitiria seleccionar un empleado o todos los
empleados desde un formulario que tiene un combo con dichos datos.

SiInm([Forms]![formulario a nombre
deL]![empleado]=0,[tblequipoInventario].[idempleado],[Forms]![formulario a
nombre deL]![empleado])

Ahora desde SQL SErver para poner estos criterio yo debo usar PAlmacenado.
a traves de declarar una variable.. eso lo entiendo. lo que no he podido
hacer es como logro desde una misma intruccion poder seleccionar todos lo
empleado o solo uno en particular.

Yo en el PAlmacenado yo pongo:

Where emp_id=@empleado ' eso me permite seleccionar un empleado. pero en el
caso de querer seleccionarlos todos que hago?

Cualquier ayuda sera de provecho.

Preguntas similare

Leer las respuestas

#6 Maxi
27/07/2005 - 19:15 | Informe spam
Probaste el ejemplo que te mande? donde la clave es nchar?


Salu2
Maxi


"Jose S.G." escribió en el mensaje
news:uF$
Pues no le veo donde esta el fallo. Yo lo uso para claves int y me va
perfectamente.

Saludos


"Maxi" escribió en el mensaje
news:
mm, esto no es para nada eficiente y ademas me parece que no responde la
pregunta :( mira este ejemplo:

CREATE PROCEDURE pEmpleados
@customerid nvarchar(10)=NULL
AS
SELECT * FROM customers WHERE (@customerID=NULL OR
customerID=@customerID)
GO

exec pEmpleados null
exec pEmpleados

Fijate que resultado te da ;)



Salu2
Maxi


"Jose S.G." escribió en el mensaje
news:
Podrias hacer un Procedimiento por ejemplo asi :

CREATE PROCEDURE pEmpleados
@EmpleadoID int=NULL
AS
SELECT * FROM Empleados WHERE (@EmpleadoID=NULL OR
EmpleadoID=@EmpleadoID)
GO

Si le pasas un parametro con el ID del empleado te selecciona ese
registro, si no se lo pasas te los trae todos.

Saludos


"nelva" escribió en el mensaje
news:
Antes en Access yo Podia poner en el criterio de la consulta la
instruccion
siguiente. lo que me permitiria seleccionar un empleado o todos los
empleados desde un formulario que tiene un combo con dichos datos.

SiInm([Forms]![formulario a nombre
deL]![empleado]=0,[tblequipoInventario].[idempleado],[Forms]![formulario
a
nombre deL]![empleado])

Ahora desde SQL SErver para poner estos criterio yo debo usar
PAlmacenado.
a traves de declarar una variable.. eso lo entiendo. lo que no he
podido
hacer es como logro desde una misma intruccion poder seleccionar todos
lo
empleado o solo uno en particular.

Yo en el PAlmacenado yo pongo:

Where emp_id=@empleado ' eso me permite seleccionar un empleado. pero
en el
caso de querer seleccionarlos todos que hago?

Cualquier ayuda sera de provecho.















Respuesta Responder a este mensaje
#7 Maxi
27/07/2005 - 20:41 | Informe spam
Hola, ojo con eso, porque estas poniendo 2 instrucciones dentro del sp si un
dia necesitas cambiar algo debes hacerlo en ambas y ademas fijate bien como
son los planes de ejecucion. Yo vuelvo a repetir, luego de mucho tiempo de
probar varias tecnicas me quedo con la que te comente antes, esa es muy
eficiente y simple a la vez.

Un abrazo


Salu2
Maxi


"nelva" escribió en el mensaje
news:up9$
Gracias a todos por su disposicion,
use la opcion que Pantxo facilito
@empleado numeric(10)=null

If @empleado is null
Select * from empleado
else
Select * form empleado Where emp_id=@empleado

Fuenciona bien...

"Pantxo" escribió en el mensaje
news:
if @cod is null
select empleado from templeados
else
select empleado from templeados where idempleado=@cod

Así si le pasas el parámetro @cod te devuelve los datos de un empleado y
sino los de todos.

Un saludo

Pantxo

"nelva" escribió en el mensaje
news:
> Antes en Access yo Podia poner en el criterio de la consulta la
instruccion
> siguiente. lo que me permitiria seleccionar un empleado o todos los
> empleados desde un formulario que tiene un combo con dichos datos.
>
> SiInm([Forms]![formulario a nombre
> deL]![empleado]=0,[tblequipoInventario].[idempleado],[Forms]![formulario


a
> nombre deL]![empleado])
>
> Ahora desde SQL SErver para poner estos criterio yo debo usar


PAlmacenado.
> a traves de declarar una variable.. eso lo entiendo. lo que no he
> podido
> hacer es como logro desde una misma intruccion poder seleccionar todos


lo
> empleado o solo uno en particular.
>
> Yo en el PAlmacenado yo pongo:
>
> Where emp_id=@empleado ' eso me permite seleccionar un empleado. pero
> en
el
> caso de querer seleccionarlos todos que hago?
>
> Cualquier ayuda sera de provecho.
>
>
>






Respuesta Responder a este mensaje
#8 Alejandro Mesa
27/07/2005 - 20:56 | Informe spam
Hola Jose,

El primer fallo esta en comparacion que haces en la clausula "where", pues
al menos que tengas "SET ANSI_NULLS OFF", cualquier comparacion con NULL dara
NULL.

> SELECT * FROM customers WHERE (@customerID=NULL OR
> customerID=@customerID)



No se si habras querido decir:

SELECT *
FROM customers
WHERE (@customerID is null OR customerID=@customerID)

Lo segundo es que SQL Server no hara un "index seek" si tienes un indice por
"CustomerID" y esto se debe principalmente a la expresion "@customerID is
null OR ".

Compara ambos planes de ejecucion y veras a lo que me refiero.

Ejemplo:

use northwind
go

create procedure p1
@CustomerID nvarchar(5) = null
as

select
*
from
dbo.customers
where
customerid = @CustomerID
or @CustomerID is null
go

create procedure p2
@CustomerID nvarchar(5) = null
as

select
*
from
dbo.customers
where
customerid like coalesce(@CustomerID, '%')
go

set showplan_text on
go

exec p1
go

exec p2
go

set showplan_text off
go

drop procedure p1, p2
go


AMB

"Jose S.G." wrote:

Pues no le veo donde esta el fallo. Yo lo uso para claves int y me va
perfectamente.

Saludos


"Maxi" escribió en el mensaje
news:
> mm, esto no es para nada eficiente y ademas me parece que no responde la
> pregunta :( mira este ejemplo:
>
> CREATE PROCEDURE pEmpleados
> @customerid nvarchar(10)=NULL
> AS
> SELECT * FROM customers WHERE (@customerID=NULL OR
> customerID=@customerID)
> GO
>
> exec pEmpleados null
> exec pEmpleados
>
> Fijate que resultado te da ;)
>
>
>
> Salu2
> Maxi
>
>
> "Jose S.G." escribió en el mensaje
> news:
>> Podrias hacer un Procedimiento por ejemplo asi :
>>
>> CREATE PROCEDURE pEmpleados
>> @EmpleadoID int=NULL
>> AS
>> SELECT * FROM Empleados WHERE (@EmpleadoID=NULL OR
>> EmpleadoID=@EmpleadoID)
>> GO
>>
>> Si le pasas un parametro con el ID del empleado te selecciona ese
>> registro, si no se lo pasas te los trae todos.
>>
>> Saludos
>>
>>
>> "nelva" escribió en el mensaje
>> news:
>>> Antes en Access yo Podia poner en el criterio de la consulta la
>>> instruccion
>>> siguiente. lo que me permitiria seleccionar un empleado o todos los
>>> empleados desde un formulario que tiene un combo con dichos datos.
>>>
>>> SiInm([Forms]![formulario a nombre
>>> deL]![empleado]=0,[tblequipoInventario].[idempleado],[Forms]![formulario
>>> a
>>> nombre deL]![empleado])
>>>
>>> Ahora desde SQL SErver para poner estos criterio yo debo usar
>>> PAlmacenado.
>>> a traves de declarar una variable.. eso lo entiendo. lo que no he podido
>>> hacer es como logro desde una misma intruccion poder seleccionar todos
>>> lo
>>> empleado o solo uno en particular.
>>>
>>> Yo en el PAlmacenado yo pongo:
>>>
>>> Where emp_id=@empleado ' eso me permite seleccionar un empleado. pero en
>>> el
>>> caso de querer seleccionarlos todos que hago?
>>>
>>> Cualquier ayuda sera de provecho.
>>>
>>>
>>>
>>
>>
>
>



Respuesta Responder a este mensaje
#9 nelva
27/07/2005 - 21:09 | Informe spam
Gracias a todos por su disposicion,
use la opcion que Pantxo facilito
@empleado numeric(10)=null

If @empleado is null
Select * from empleado
else
Select * form empleado Where emp_id=@empleado

Fuenciona bien...

"Pantxo" escribió en el mensaje
news:
if @cod is null
select empleado from templeados
else
select empleado from templeados where idempleado=@cod

Así si le pasas el parámetro @cod te devuelve los datos de un empleado y
sino los de todos.

Un saludo

Pantxo

"nelva" escribió en el mensaje
news:
> Antes en Access yo Podia poner en el criterio de la consulta la
instruccion
> siguiente. lo que me permitiria seleccionar un empleado o todos los
> empleados desde un formulario que tiene un combo con dichos datos.
>
> SiInm([Forms]![formulario a nombre
> deL]![empleado]=0,[tblequipoInventario].[idempleado],[Forms]![formulario


a
> nombre deL]![empleado])
>
> Ahora desde SQL SErver para poner estos criterio yo debo usar


PAlmacenado.
> a traves de declarar una variable.. eso lo entiendo. lo que no he podido
> hacer es como logro desde una misma intruccion poder seleccionar todos


lo
> empleado o solo uno en particular.
>
> Yo en el PAlmacenado yo pongo:
>
> Where emp_id=@empleado ' eso me permite seleccionar un empleado. pero en
el
> caso de querer seleccionarlos todos que hago?
>
> Cualquier ayuda sera de provecho.
>
>
>


Respuesta Responder a este mensaje
#10 Alejandro Mesa
27/07/2005 - 21:21 | Informe spam
Cual es el tipo de data de la columna dbo.RECIBO.Op_Id?

Si es "int", entonces debes usar algo asi como:

ALTER PROCEDURE dbo.PCA_FACTURAS_RECIBOS_X_OPERADOR1

(@fechaini datetime,

@fechafin datetime,

@OPERADOR int = NULL
)
as
...
AND (dbo.RECIBO.Op_Id >= coalesce(@OPERADOR, 0) and dbo.RECIBO.Op_Id <=
coalesce(@OPERADOR, 2147483647))

return @@error
go

El numero 2,147,483,647 es el valor maximo de un "int".


AMB

"nelva" wrote:

AGRADEZCO TU RECOMENDACION, LO INTENTE PERO NO ME FUNCIONA. TE TRANSCRIBO EL
PA QUE TENGO. CUANDO NO LE DOY PARAMATROS O SEA ES NULL NO ENVIA NADA..



ALTER PROCEDURE dbo.PCA_FACTURAS_RECIBOS_X_OPERADOR1

(@fechaini datetime,

@fechafin datetime,

@OPERADOR NVARCHAR(10)=NULL)

AS

SELECT dbo.RECIBO_FACTURA.Rec_Id, dbo.RECIBO.Rec_Fecha,
dbo.FACTURA.Fact_Fecha, dbo.RECIBO_FACTURA.Rec_cantidad,

dbo.Operadores.OP_Nombre, dbo.FACTURA.Fact_Observaciones,
dbo.REGIMEN_TARIFAS.RGT_NOMBRES, dbo.RECIBO_FACTURA.Fact_Id,

dbo.FACTURA.Fact_Anulado, dbo.RECIBO.Rec_Anulado, dbo.Ciudades.CUD_Nombre,
dbo.RECIBO.Rec_Cantidad AS Expr1, dbo.FACTURA.Fact_Iva,

dbo.FACTURA.Fact_Total, dbo.RECIBO.Op_Id

FROM dbo.Ciudades RIGHT OUTER JOIN

dbo.TARIFAS LEFT OUTER JOIN

dbo.REGIMEN_TARIFAS ON dbo.TARIFAS.RGT_ID = dbo.REGIMEN_TARIFAS.RGT_ID RIGHT
OUTER JOIN

dbo.FACTURA INNER JOIN

dbo.RECIBO_FACTURA ON dbo.FACTURA.Fact_Id = dbo.RECIBO_FACTURA.Fact_Id INNER
JOIN

dbo.FACTURAS_TARIFAS ON dbo.RECIBO_FACTURA.Fact_Id > dbo.FACTURAS_TARIFAS.Fact_Id INNER JOIN

dbo.RECIBO INNER JOIN

dbo.Operadores ON dbo.RECIBO.Op_Id = dbo.Operadores.OP_ID ON
dbo.RECIBO_FACTURA.Rec_Id = dbo.RECIBO.Rec_Id ON

dbo.TARIFAS.Tar_Servicio_Id = dbo.FACTURAS_TARIFAS.Tar_Servicio_id ON
dbo.Ciudades.CUD_ID = dbo.Operadores.CUD_ID

GROUP BY dbo.RECIBO_FACTURA.Rec_Id, dbo.RECIBO.Rec_Fecha,
dbo.FACTURA.Fact_Fecha, dbo.RECIBO_FACTURA.Rec_cantidad,

dbo.Operadores.OP_Nombre, dbo.FACTURA.Fact_Observaciones,
dbo.REGIMEN_TARIFAS.RGT_NOMBRES, dbo.RECIBO_FACTURA.Fact_Id,

dbo.FACTURA.Fact_Anulado, dbo.RECIBO.Rec_Anulado, dbo.Ciudades.CUD_Nombre,
dbo.RECIBO.Rec_Cantidad, dbo.FACTURA.Fact_Iva,

dbo.FACTURA.Fact_Total, dbo.RECIBO.Op_Id

HAVING (dbo.RECIBO.Rec_Fecha BETWEEN @fechaini AND @fechafin) AND
(dbo.RECIBO.Rec_Anulado IS NULL OR

dbo.RECIBO.Rec_Anulado = 0) AND (dbo.FACTURA.Fact_Anulado IS NULL OR
dbo.FACTURA.Fact_Anulado = 0) AND (dbo.RECIBO.Op_Id=NULL OR dbo.RECIBO.Op_Id
= @OPERADOR )





"Maxi" escribió en el mensaje
news:
> Hola, ojo con eso, porque estas poniendo 2 instrucciones dentro del sp si
un
> dia necesitas cambiar algo debes hacerlo en ambas y ademas fijate bien
como
> son los planes de ejecucion. Yo vuelvo a repetir, luego de mucho tiempo de
> probar varias tecnicas me quedo con la que te comente antes, esa es muy
> eficiente y simple a la vez.
>
> Un abrazo
>
>
> Salu2
> Maxi
>
>
> "nelva" escribió en el mensaje
> news:up9$
> > Gracias a todos por su disposicion,
> > use la opcion que Pantxo facilito
> > @empleado numeric(10)=null
> >
> > If @empleado is null
> > Select * from empleado
> > else
> > Select * form empleado Where emp_id=@empleado
> >
> > Fuenciona bien...
> >
> > "Pantxo" escribió en el mensaje
> > news:
> >> if @cod is null
> >> select empleado from templeados
> >> else
> >> select empleado from templeados where idempleado=@cod
> >>
> >> Así si le pasas el parámetro @cod te devuelve los datos de un empleado
y
> >> sino los de todos.
> >>
> >> Un saludo
> >>
> >> Pantxo
> >>
> >> "nelva" escribió en el mensaje
> >> news:
> >> > Antes en Access yo Podia poner en el criterio de la consulta la
> >> instruccion
> >> > siguiente. lo que me permitiria seleccionar un empleado o todos los
> >> > empleados desde un formulario que tiene un combo con dichos datos.
> >> >
> >> > SiInm([Forms]![formulario a nombre
> >> >
deL]![empleado]=0,[tblequipoInventario].[idempleado],[Forms]![formulario
> > a
> >> > nombre deL]![empleado])
> >> >
> >> > Ahora desde SQL SErver para poner estos criterio yo debo usar
> > PAlmacenado.
> >> > a traves de declarar una variable.. eso lo entiendo. lo que no he
> >> > podido
> >> > hacer es como logro desde una misma intruccion poder seleccionar
todos
> > lo
> >> > empleado o solo uno en particular.
> >> >
> >> > Yo en el PAlmacenado yo pongo:
> >> >
> >> > Where emp_id=@empleado ' eso me permite seleccionar un empleado. pero
> >> > en
> >> el
> >> > caso de querer seleccionarlos todos que hago?
> >> >
> >> > Cualquier ayuda sera de provecho.
> >> >
> >> >
> >> >
> >>
> >>
> >
> >
>
>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida