Hola
Como estan
El siguiente proc. almacenado hace un SELECT de varias tablas de dos bases
de datos para mostrar un listado en un DataGrid de Vb6 .
Tengo las siguientes dudas:
1. El listado lo debo filtar por cualquier campo que el usuario seleccione,
no solamente por IdCia y Fecha como está actualmente, es decir no se cuantos
campos vaya a seleccionar el usuario
¿ Es posible agregarle un parametro con la condición de seleccion 'WHERE' y
no parametro para cada campo ?
2. Que precedimiento da mas rendimiento : paQryDespachosDso o Pa_Query
(ver mas abajo..) ?
3. Tengo dos bases de datos sbuCat (donde estan todos los catalogos de
vehiculos, propietarios,etc..) y otra sbuTra (donde estan todos los
documentos y comprobantes que se hacen),
Que me aconsejan: ¿ es mejor una sola base de datos para todo o como está
actualmente ?.
Nota: sbucat tiene mas o menos 60 tablas y sbutra unas 30 tablas.
La aplicacición debe funcionar para bases de datos SQL server y
Access 200
Espero me puedan ayudar
Gracias
Diego
CREATE PROCEDURE paQryDespachosDso @pmIdCia CHAR(2),@pmFechaIni
SMALLDATETIME,@pmFechaFin SMALLDATETIME
AS
SELECT Cartulina, IdCia, Fecha, IdRuta, NumOrden,D.IdVehiculo AS
IdVehicul,Numero,D.IdPropietario AS IdPropiet,P.RazonSocial AS
Propietario,D.IdConductor AS IdCond,C.RazonSocial AS Conductor,ReciboCaja,
IdCiaRec,D.CentInicial AS CenInicial,D.CentFinal AS CenFinal,
NPasajeros, Recorridos,ValorPasaje, ValorProducido,
ValorGastos, ValorAhorro, ValorOtros,ValorGastos+ValorOtros AS TotalGastos,
ValorVales, ValorAbono,
ValorAhorro+ ValorOtros+ ValorAbono AS TotalRecibido,
Anulado,FecDev, D.Observacion AS Observ,D.IdEstado AS
IdEstad,Estado,TimeSys,FecUpdate, IdCiaCrea,D.IdUsuario AS IdUsuari
FROM ((( Despachos AS D INNER JOIN sbucat.dbo.Vehiculos AS V ON
D.IdVehiculo=V.IdVehiculo
) INNER JOIN sbucat.dbo.Terceros AS P ON
D.IdPropietario=P.IdTercero
) LEFT JOIN sbucat.dbo.Terceros AS C ON
D.IdConductor=C.IdTercero
) LEFT JOIN sbucat.dbo.EstadoDoc AS E ON
D.IdEstado=E.IdEstado
WHERE IdCia=@pmIdCia AND Fecha BETWEEN @pmFechaIni AND @pmFechaFin
ORDER BY Cartulina
GO
'este procedimiento ejecuta una instruccion SELECT y devuelve los resultados
CREATE PROCEDURE Pa_Query
(@pmCampos VARCHAR(1000),
@pmTabla VARCHAR(500),
@pmCriterio VARCHAR(500),
@pmOrden VARCHAR(100),
@pmGroup VARCHAR(100),
@pmHaving VARCHAR(100))
AS
BEGIN
Declare @pmQry VARCHAR(2500)
SET @pmQry=''
SET @pmQry=@pmQry + 'SELECT '+ @pmCampos + ' FROM ' + @pmTabla
IF Len(@pmCriterio)>0
BEGIN
SET @pmQry=@pmQry + ' WHERE '+ @pmCriterio
END
IF Len(@pmGroup)>0
BEGIN
SET @pmQry=@pmQry + ' GROUP BY ' + @pmGroup
END
IF Len(@pmOrden)>0
BEGIN
SET @pmQry=@pmQry + ' ORDER BY '+ @pmOrden
END
IF Len(@pmHaving)>0
BEGIN
SET @pmQry=@pmQry + ' HAVING '+ @pmHaving
END
EXECUTE (@pmQry)
RETURN
END
GO
Leer las respuestas