Consultas con parámetros y OpenDataSource

26/05/2004 - 11:20 por Rubén Vigón | Informe spam
Desde un procedimiento almacenado de SQL Server accedo a una consulta de una base de datos de Access mediante «OpenDataSource»; por ejemplo:

SELECT * FROM OpenDataSource(
'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\carpeta\basedatos.mdb";Persist Security Info=False'
)...NombreConsulta

Ésto funciona perfectamente (también con «OpenRowSet»); el problema es que la consulta reciba parámetros, por ejemplo:

PARAMETERS prmFechaIni DATE, prmFechaFin DATE;
SELECT * FROM Pedidos WHERE Fecha BETWEEN prmFechaIni AND prmFechaFin

¿Cómo puedo pasar los valores de los parámetros desde «OpenDataSource» u «OpenRowSet»?

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
26/05/2004 - 13:01 | Informe spam
Uuuuf... mira que lo he estado mirando, pero no encuentro la forma de
conseguirlo. ¿No tienes forma de evitar llamar a esas consultas con
parámetros de Acces?

Lo siento :(



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Rubén Vigón" escribió en el mensaje
news:#
Desde un procedimiento almacenado de SQL Server accedo a una consulta de una
base de datos de Access mediante «OpenDataSource»; por ejemplo:

SELECT * FROM OpenDataSource(
'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\carpeta\basedatos.mdb";Persist Security Info=False'
)...NombreConsulta

Ésto funciona perfectamente (también con «OpenRowSet»); el problema es que
la consulta reciba parámetros, por ejemplo:

PARAMETERS prmFechaIni DATE, prmFechaFin DATE;
SELECT * FROM Pedidos WHERE Fecha BETWEEN prmFechaIni AND prmFechaFin

¿Cómo puedo pasar los valores de los parámetros desde «OpenDataSource» u
«OpenRowSet»?

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
Respuesta Responder a este mensaje
#2 Maxi
26/05/2004 - 14:22 | Informe spam
Hola Ruben !!! mira no creo que lo puedas hacer :( ahora para que usas esos
parametros?


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Rubén Vigón" escribió en el mensaje
news:%
Desde un procedimiento almacenado de SQL Server accedo a una consulta de una
base de datos de Access mediante «OpenDataSource»; por ejemplo:

SELECT * FROM OpenDataSource(
'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\carpeta\basedatos.mdb";Persist Security Info=False'
)...NombreConsulta

Ésto funciona perfectamente (también con «OpenRowSet»); el problema es que
la consulta reciba parámetros, por ejemplo:

PARAMETERS prmFechaIni DATE, prmFechaFin DATE;
SELECT * FROM Pedidos WHERE Fecha BETWEEN prmFechaIni AND prmFechaFin

¿Cómo puedo pasar los valores de los parámetros desde «OpenDataSource» u
«OpenRowSet»?

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic




Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004
Respuesta Responder a este mensaje
#3 Rubén Vigón
26/05/2004 - 15:53 | Informe spam
Hola, Carlos y Maxi

La historia es que para unos informes de mi aplicación (VB6 y SQL Server 2000) necesito ciertos datos de las tablas de «Asientos» y «Apuntes» de nuestro programa de contabilidad (VB5 y Access 97)

La persona encargada de ésta aplicación me preparó una consulta con parámetros (recibe una referencia de obra, una cuenta contable y un intervalo de fechas) y me devuelve unos totales de asientos para ésos parámetros. El problema es que éstas tablas de contabilidad tienen casi medio millón de registros, y debemos restringir al máximo las condiciones de la consulta (sin éstos parámetros la consulta tiene un rendimiento bastante malo...)

Seguiré investigando... si se os ocurre alguna solución alternativa, mañana no tendré que hacer cola en el INEM ;-)

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://www.mvp-access.com/rubenvigon
Respuesta Responder a este mensaje
#4 Maxi
26/05/2004 - 16:25 | Informe spam
Hola, y no podes usar DTS y desde ese Access migrar las tablas a Sql para
que tu consulta sea toda en Sql Server?

Bye


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Rubén Vigón" escribió en el mensaje
news:%
Hola, Carlos y Maxi

La historia es que para unos informes de mi aplicación (VB6 y SQL Server
2000) necesito ciertos datos de las tablas de «Asientos» y «Apuntes» de
nuestro programa de contabilidad (VB5 y Access 97)

La persona encargada de ésta aplicación me preparó una consulta con
parámetros (recibe una referencia de obra, una cuenta contable y un
intervalo de fechas) y me devuelve unos totales de asientos para ésos
parámetros. El problema es que éstas tablas de contabilidad tienen casi
medio millón de registros, y debemos restringir al máximo las condiciones de
la consulta (sin éstos parámetros la consulta tiene un rendimiento bastante
malo...)

Seguiré investigando... si se os ocurre alguna solución alternativa,
mañana no tendré que hacer cola en el INEM ;-)

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://www.mvp-access.com/rubenvigon




Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004
Respuesta Responder a este mensaje
#5 Carlos Sacristan
26/05/2004 - 16:32 | Informe spam
¿Y no puedes modificar esa vista para que no acepte parámetros, y tú en
la llamada que le haces lo realizas a través de OPENROWSET escribiendo la
consulta con los filtros que necesites en ese momento? Algo así como:

*****************************************************

DECLARE @sql VARCHAR(4000)

SET @sql='SELECT a.* FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',
c:\carpeta\basedatos.mdb'';''admin'';'''', ''select * from nombreConsulta
where campo1=1 and campo2=2'') AS a'

EXEC(@sql)

*****************************************************

Hombre, te obliga a utilizar sql dinámico, pero es una solución al menos...



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Rubén Vigón" escribió en el mensaje
news:#
Hola, Carlos y Maxi

La historia es que para unos informes de mi aplicación (VB6 y SQL Server
2000) necesito ciertos datos de las tablas de «Asientos» y «Apuntes» de
nuestro programa de contabilidad (VB5 y Access 97)

La persona encargada de ésta aplicación me preparó una consulta con
parámetros (recibe una referencia de obra, una cuenta contable y un
intervalo de fechas) y me devuelve unos totales de asientos para ésos
parámetros. El problema es que éstas tablas de contabilidad tienen casi
medio millón de registros, y debemos restringir al máximo las condiciones de
la consulta (sin éstos parámetros la consulta tiene un rendimiento bastante
malo...)

Seguiré investigando... si se os ocurre alguna solución alternativa,
mañana no tendré que hacer cola en el INEM ;-)

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://www.mvp-access.com/rubenvigon
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida