Ver Mensaje Individual
  #1  
Antiguo 27-09-2005
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Reputación: 21
Cabanyaler Va por buen camino
Smile Parameters y ProcedureName de TAdoStoreProc

Hola.
Estoy realizando una consulta bastante extensa que ataca a muchas tablas relacionadas con INNER JOIN. Para simplificar su implementación, lo que quiero hacer es realizar varias Store Procedure en el servidor SQLServer y ha razón de los parametros que el usuario rellene que servirán de valores para los parametros de dicha consulta, realizar el siguiente trabajo:

Si p.e.
elige parametros que ataquen a un par sólo de tablas relacionadas entonces cargar un SP del servidor al TADOStoreProc especifico que realize la consulta sobre esas dos tablas.
Si elige más parametros que ataquen a otras tablas, cargar otro SP al TADOStoreProc que ataque a ese determinado conjunto de tablas.

Esto he pensado en hacerlo en tiempo de ejecución asignándole:
DataModule.ADOSP_Consulta.ProcedureName := 'ADOQ_ConsultaUNO;1';
De modo que por una serie de condiciones asigne al TADODataSet el procedure del servidor que me convenga en cada momento en tiempo de ejecución, pudiendo ser según otra condición en otra ejecución: DataModule.ADOSP_Consulta.ProcedureName := 'ADOQ_ConsultaDOS;1';... y así con un conjunto limitado de consultas diferentes.

Problema: El problema lo encuentro a la hora de los parametros, los cuales debo asignarlos en tiempo de ejecución además de asignarle un valor de inicio, aunque este sea 'null', ya que al cambiar el nombre del SP asociado al DataSet, los parametros establecidos en tiempo de diseño se pierden.

He estado viendo que existe el mtd :
ADOStoredProc1.CreateParameter('Parm1', ftString, pdInput, 10, nil);pero mi consulta tiene.... .... 79 parametros.

¿Existe alguna orden o metodo o polvos mágicos que me permitan copiar el conjunto de parametros establecido por defecto en tiempo de diseño al TADOStoreprocedure en tiempo de ejecución sin necesidad de crear de nuevo todos los parametros? o bien que, el TADOStoreprocedure tenga siempre los mismos parametros independientemente del valor que le asigne al DataModule.ADOSP_Consulta.ProcedureName, es decir, que no se me pierdan los parametros al reasignar el procedimeinto almacenado en el servidor al TADOSP local del dataModule.

Gracias, espero haberme explicado.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita