[adp] construir consulta "select top X ..."

15/07/2003 - 11:31 por iDeafix | Informe spam
Hola

Tengo un form con dos campos: miprovincia y micantidad.

El objetivo es ir a la tabla de clientes y seleccionar tantos como diga
"micantidad" y que sean de "miprovincia".

A estos clientes se les debe poner a "Verdadero" su campo "procesado". Así
sabemos que han sido seleccionados en ejecuciones anteriores.

No sé por donde empezar. Como requiere parámetros tendría que ser un SP,
pero debe ser actualizable también... ¿Se puede construir desde vba un SP en
ese momento y ejecutarlo?

saludos

Preguntas similare

Leer las respuestas

#1 Miguel Egea
15/07/2003 - 12:22 | Informe spam
Buenas, esta tarde publicaré en portalSql un ejemplo que quizá te sirva.
Dale un vistazo.

Espero que te sirva.

Saludos
Miguel Egea
http://www.portalsql.com
Sql-Server MVP
"iDeafix" escribió en el mensaje
news:bf0hfj$9rbs5$
Hola

Tengo un form con dos campos: miprovincia y micantidad.

El objetivo es ir a la tabla de clientes y seleccionar tantos como diga
"micantidad" y que sean de "miprovincia".

A estos clientes se les debe poner a "Verdadero" su campo "procesado".


Así
sabemos que han sido seleccionados en ejecuciones anteriores.

No sé por donde empezar. Como requiere parámetros tendría que ser un SP,
pero debe ser actualizable también... ¿Se puede construir desde vba un SP


en
ese momento y ejecutarlo?

saludos




Respuesta Responder a este mensaje
#2 Carlos Sacristan
15/07/2003 - 12:45 | Informe spam
En tu procedimiento podrías hacer las dos cosas: actualizar y luego
devolver los resultados...



Un saludo

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

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"iDeafix" escribió en el mensaje
news:bf0hfj$9rbs5$
Hola

Tengo un form con dos campos: miprovincia y micantidad.

El objetivo es ir a la tabla de clientes y seleccionar tantos como diga
"micantidad" y que sean de "miprovincia".

A estos clientes se les debe poner a "Verdadero" su campo "procesado".


Así
sabemos que han sido seleccionados en ejecuciones anteriores.

No sé por donde empezar. Como requiere parámetros tendría que ser un SP,
pero debe ser actualizable también... ¿Se puede construir desde vba un SP


en
ese momento y ejecutarlo?

saludos




Respuesta Responder a este mensaje
#3 Carlos Sacristan
15/07/2003 - 13:44 | Informe spam
El parámetro para TOP no puede ser una variable, o sea que si necesitas
que eso sea así tendrás que construir y ejecutar dinámicamente la sentencia



Un saludo

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

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"iDeafix" escribió en el mensaje
news:bf0on6$9rplh$
No, no me he explicado bien. Trataba de ser didáctico dividiendo el


problema
en dos partes y he conseguido lo contrario.

Sólo necesito hacer una acción: Actualizar el campo "procesado" a X de los
clientes que cumplan el criterio "provincia".

¿Y como construyo un SP cuyo SELECT TOP X es variable en función de lo que
el usuario escriba en el form? He aqui la cuestión



"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
news:
>
> En tu procedimiento podrías hacer las dos cosas: actualizar y luego
> devolver los resultados...
>
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> Por favor, responder únicamente al foro
>
> (Guía de netiquette del foro)
> http://www.helpdna.net/bosqlfaq00.htm
> http://perso.wanadoo.es/rubenvigon/foro
>
> (FAQ's de SQL Server)
> http://support.microsoft.com/defaul.../70faq.asp
> http://www.helpdna.net/bosqlfaq.htm
>
> "iDeafix" escribió en el mensaje
> news:bf0hfj$9rbs5$
> > Hola
> >
> > Tengo un form con dos campos: miprovincia y micantidad.
> >
> > El objetivo es ir a la tabla de clientes y seleccionar tantos como


diga
> > "micantidad" y que sean de "miprovincia".
> >
> > A estos clientes se les debe poner a "Verdadero" su campo


"procesado".
> Así
> > sabemos que han sido seleccionados en ejecuciones anteriores.
> >
> > No sé por donde empezar. Como requiere parámetros tendría que ser un


SP,
> > pero debe ser actualizable también... ¿Se puede construir desde vba un
SP
> en
> > ese momento y ejecutarlo?
> >
> > saludos
> >
> >
> >
> >
>
>


Respuesta Responder a este mensaje
#4 iDeafix
15/07/2003 - 13:55 | Informe spam
Si, si, Carlos, si esa es la cuestión ¿como se construye y ejecuta
dinámicamente?
hasta ahora en mdb lo había resuelto más o menos así con createquerydef,
pero ya no funciona

Dim qry As Object

cc1 = "SELECT TOP "
cc2 = CStr(Forms!Asignacion30!Cantidad)
cc3 = " [Clientes].* FROM ...

cc = cc1 & cc2 & cc3 & ...

Set qry = CurrentDb.CreateQueryDef("Carga General Vista Previa", cc)


Esta consulta, después era usada como fuente para crear una tabla temporal
(y de paso podía usarla como vista previa del proceso, que no te engañe el
nombre "Carga General Vista Previa").

Pero ahora con ADP, la creación de la consulta se supone que habrá que
hacerla de otra forma, por ADO me imagino...
Además ya no puedo usar tablas temporales locales al usuario (y no me
gustaría crearlas en el servidor).



"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
news:#

El parámetro para TOP no puede ser una variable, o sea que si


necesitas
que eso sea así tendrás que construir y ejecutar dinámicamente la


sentencia



Un saludo

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

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"iDeafix" escribió en el mensaje
news:bf0on6$9rplh$
> No, no me he explicado bien. Trataba de ser didáctico dividiendo el
problema
> en dos partes y he conseguido lo contrario.
>
> Sólo necesito hacer una acción: Actualizar el campo "procesado" a X de


los
> clientes que cumplan el criterio "provincia".
>
> ¿Y como construyo un SP cuyo SELECT TOP X es variable en función de lo


que
> el usuario escriba en el form? He aqui la cuestión
>
>
>
> "Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
> news:
> >
> > En tu procedimiento podrías hacer las dos cosas: actualizar y


luego
> > devolver los resultados...
> >
> >
> >
> > Un saludo
> >
> > -
> > "Sólo sé que no sé nada. " (Sócrates)
> >
> > Por favor, responder únicamente al foro
> >
> > (Guía de netiquette del foro)
> > http://www.helpdna.net/bosqlfaq00.htm
> > http://perso.wanadoo.es/rubenvigon/foro
> >
> > (FAQ's de SQL Server)
> > http://support.microsoft.com/defaul.../70faq.asp
> > http://www.helpdna.net/bosqlfaq.htm
> >
> > "iDeafix" escribió en el mensaje
> > news:bf0hfj$9rbs5$
> > > Hola
> > >
> > > Tengo un form con dos campos: miprovincia y micantidad.
> > >
> > > El objetivo es ir a la tabla de clientes y seleccionar tantos como
diga
> > > "micantidad" y que sean de "miprovincia".
> > >
> > > A estos clientes se les debe poner a "Verdadero" su campo
"procesado".
> > Así
> > > sabemos que han sido seleccionados en ejecuciones anteriores.
> > >
> > > No sé por donde empezar. Como requiere parámetros tendría que ser un
SP,
> > > pero debe ser actualizable también... ¿Se puede construir desde vba


un
> SP
> > en
> > > ese momento y ejecutarlo?
> > >
> > > saludos
> > >
> > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#5 Carlos Sacristan
15/07/2003 - 14:25 | Informe spam
Yo me refería a ejecutarla dinámicamente dentro del procedimiento
almacenado. De hecho, si al final lo haces de la forma que estamos
comentando, tendrás que ejecutar dinámicamente dos sentencias, una para
devolver los resultados:

EXEC('SELECT TOP ' + @cantidad + ' campo1, campo2, ... FROM ')

y la otra para actualizar los registros, tal que así:

EXEC('UPDATE tuTabla SET campo=valor FROM tuTabla a INNER JOIN (SELECT
TOP ' + @cantidad + ' campo1, campo2, ... FROM ...) b ON a.elID = b.elID')


De todos modos, esta opción no me gusta mucho, lo que ocurre es que hoy
estoy bastante liado y no puedo pensar en algo mejor :( A ver si mañana
tengo un ratillo y le echo una pensada


Un saludo

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

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"iDeafix" escribió en el mensaje
news:bf0pt8$9napd$
Si, si, Carlos, si esa es la cuestión ¿como se construye y ejecuta
dinámicamente?
hasta ahora en mdb lo había resuelto más o menos así con createquerydef,
pero ya no funciona

Dim qry As Object

cc1 = "SELECT TOP "
cc2 = CStr(Forms!Asignacion30!Cantidad)
cc3 = " [Clientes].* FROM ...

cc = cc1 & cc2 & cc3 & ...

Set qry = CurrentDb.CreateQueryDef("Carga General Vista Previa", cc)


Esta consulta, después era usada como fuente para crear una tabla temporal
(y de paso podía usarla como vista previa del proceso, que no te engañe el
nombre "Carga General Vista Previa").

Pero ahora con ADP, la creación de la consulta se supone que habrá que
hacerla de otra forma, por ADO me imagino...
Además ya no puedo usar tablas temporales locales al usuario (y no me
gustaría crearlas en el servidor).



"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
news:#
>
> El parámetro para TOP no puede ser una variable, o sea que si
necesitas
> que eso sea así tendrás que construir y ejecutar dinámicamente la
sentencia
>
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> Por favor, responder únicamente al foro
>
> (Guía de netiquette del foro)
> http://www.helpdna.net/bosqlfaq00.htm
> http://perso.wanadoo.es/rubenvigon/foro
>
> (FAQ's de SQL Server)
> http://support.microsoft.com/defaul.../70faq.asp
> http://www.helpdna.net/bosqlfaq.htm
>
> "iDeafix" escribió en el mensaje
> news:bf0on6$9rplh$
> > No, no me he explicado bien. Trataba de ser didáctico dividiendo el
> problema
> > en dos partes y he conseguido lo contrario.
> >
> > Sólo necesito hacer una acción: Actualizar el campo "procesado" a X de
los
> > clientes que cumplan el criterio "provincia".
> >
> > ¿Y como construyo un SP cuyo SELECT TOP X es variable en función de lo
que
> > el usuario escriba en el form? He aqui la cuestión
> >
> >
> >
> > "Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el


mensaje
> > news:
> > >
> > > En tu procedimiento podrías hacer las dos cosas: actualizar y
luego
> > > devolver los resultados...
> > >
> > >
> > >
> > > Un saludo
> > >
> > > -
> > > "Sólo sé que no sé nada. " (Sócrates)
> > >
> > > Por favor, responder únicamente al foro
> > >
> > > (Guía de netiquette del foro)
> > > http://www.helpdna.net/bosqlfaq00.htm
> > > http://perso.wanadoo.es/rubenvigon/foro
> > >
> > > (FAQ's de SQL Server)
> > >


http://support.microsoft.com/defaul.../70faq.asp
> > > http://www.helpdna.net/bosqlfaq.htm
> > >
> > > "iDeafix" escribió en el mensaje
> > > news:bf0hfj$9rbs5$
> > > > Hola
> > > >
> > > > Tengo un form con dos campos: miprovincia y micantidad.
> > > >
> > > > El objetivo es ir a la tabla de clientes y seleccionar tantos como
> diga
> > > > "micantidad" y que sean de "miprovincia".
> > > >
> > > > A estos clientes se les debe poner a "Verdadero" su campo
> "procesado".
> > > Así
> > > > sabemos que han sido seleccionados en ejecuciones anteriores.
> > > >
> > > > No sé por donde empezar. Como requiere parámetros tendría que ser


un
> SP,
> > > > pero debe ser actualizable también... ¿Se puede construir desde


vba
un
> > SP
> > > en
> > > > ese momento y ejecutarlo?
> > > >
> > > > saludos
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


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