OK, es facil.
En el administrador coorporativo de SQL Server, a al apartado Procedimientos Almacenados y con botón derecho sereccionas "Nuevo"
Ahi colocas algo como esto:
Código:
CREATE PROCEDURE sp_NomProy_sConsulta
@vFecha1 datetime,
@vFecha2 datetime
AS
SELECT dbo.E1.CODE, dbo.E1.DIGITO, MSap_1.Medida, MSap_1.Linea, dbo.CAT_TRADE.EQUIPO, dbo.CAT_TRADE.SIDEWALL AS SIDEWALL, AVG(dbo.E1.WEIGHT) AS PPROM,
dbo.E1PESO.PESO AS PESTAND, COUNT(dbo.E1.CODE) AS CANTIDAD, dbo.ES1.WAREHOUSE, MIN(dbo.E1.FECHC) AS FECHMIN
FROM dbo.CAT_TRADE INNER JOIN dbo.E1 ON dbo.CAT_TRADE.DIGITO = dbo.E1.DIGITO LEFT OUTER JOIN dbo.E1PESO ON dbo.E1.CODE = dbo.E1PESO.CODE
RIGHT OUTER JOIN [SERV-BCODE].Rast.dbo.opUnicos opUnicos_1 LEFT OUTER JOIN SERV_MONITOREO.Monitoreo.dbo.MSAP MSap_1 ON opUnicos_1.CodigoC = MSap_1.CodigoC ON
dbo.E1.IDETIQ = opUnicos_1.IdEtiq
WHERE (dbo.E1.FECHC BETWEEN @vFecha1 and @vFecha2
GROUP BY dbo.E1.CODE, MSap_1.Medida, dbo.E1.WAREHOUSE, MSap_1.Linea, dbo.E1.DIGITO, dbo.CAT_TRADE.EQUIPO, dbo.CAT_TRADE.SIDEWALL, dbo.E1PESO.PESO
HAVING (dbo.E1.CODE > '0') AND (dbo.E1.WAREHOUSE = 1)
ORDER BY dbo.E1.CODE, dbo.E1.DIGITO, MSap_1.Medida, MSap_1.Linea
Esa es tu consulta "transformada" en un SP.
Ahora solo debes llamarla así:
rsRecordsetNo2.Open "Exec sp_NomProy_sConsulta '" & vFecha1 & "', '"& vFecha2 & "'", objConn,2,2
Claro que el nombre del procedimiento lo puedes cambiar. Yo les coloco el prefijo sp seguido del mnemonico del proyecto, luego una letra que me indica si es Select, Update, Delete, Insert, etc y al final su nombre
Otra cosa, el rsRecordsetNo2.Requery vuelve a ejecutar la consulta, y no debes de colocarlo enseguida del .Open, sino cuando quieres actualizar el cursor para traerse datos nuevos insertados/actualizados por otro usuario.
Y si, si te recomendaría que cambiaras el DSNLess por OleDb:
ConnString = "Provider=SQLOLEDB.1;Data Source=servidor;Initial Catalog=SERVIDOR;User Id=userTmp;Password=123;"
Saludos