Olá Mr Paoli,
Bem, eu penso que existem duas formas:
Procedure: Seria interessante passar a lógica para uma procedure a apenas invocá-la no relatório. Esse pode ser o caminho mais fácil e rápido. Vou explanar as outras alternativas e no fim justifico a opiniçao anterior.
- Problema: reescrever o código. (E talvez algum requisito de negócio).
Parâmetro: Você pode transferir toda a query para o RS através de um parâmetro. Daí você o usuario como Text do comando (que precisa ser do tipo texto, e não procedure) a ser executado. Escrevendo "=Parameters!Comando.Value", por exemplo. Se fizer isso o RS enviaráa query em forma de parâmetro para o banco.
- Problema 1: Caracteres especiais na mesma. O VBScript tem algumas funções para codificar um string de forma a transferí-la via URL, essas podem te ajudar com neste problema.
- Problema 2: Tamanho da string que é, ou pode vir a ser, o parâmetro.
Customização: Você pode customizar, implementando algumas interfaces, o RS para que ele tenha mais opções de interação com dados. Por default, ele tem: Sql Server, Oracle, ODBC e OLE DB (são as opções visualizadas na área "Type" quando você vai criar um novo DataSet). Você pode criar o seu tipo de DataSet.
- Problema: Tempo. É preciso que você entenda o funcionamento do RS. E implemente algumas interfaces.
Portanto,
Acho complicado ficar a mercê de talvez extrapolar o tamanho da query string (2ª opção), ou ter um bom esforço de desenvolvimento para um relatório (3ª opção). Por isso prefiro a primeira.
Eu vejo essas soluções. Caso opte pela última, tenho vários links que pode auxiliá-lo.
Qualquer dúvida, por favor me avise.
Até mais