Melhorar (agilizar) a impressão de relatórios (MJSC)

Essa minha dúvida é a seguinte…
Eu fiz alguns relatórios (consultas) no meu projeto. Normalmente, por padrão, nas consultas vem aquele agrupamento de botões, onde o usuário pode escolher o que fazer com a consulta mostrada na tela. Ele pode gerar PDF, gerar XLS, DOC, XML… e “Imprimir”.
Quando eu seleciono imprimir ele abre uma modal para eu escolher se quero imprimir o relatório completo ou apenas a página atual e também se quero imprimir colorido ou preto e branco.
Depois que seleciono isso, ele abre uma nova janela do browser (nesse caso não é modal), com o relatório para ser impresso.
Daí o usuário tem que teclar “Ctrl->P” para enviar para impressora.
Daí aparece a tela do windows para selecionar a impressora.

Baita mão de obra pro usuário. Acho que é pro usuário ser mais ecológico e economizar papel.

Mas pra facilitar um pouco a vida do usuário eu coloquei esse código no meu evento onFooter:
echo ’

';

Beleza… Quando gera o relatório, já abre a tela de escolher impressora do windows. Se o usuário mandar imprimir, ele envia pra impressora e fecha a tela do relatório.
O problema é que ele sempre abre essa tela de impressora… mesmo se eu mandar gerar o relatório em PDF ou em XLS.
Porque, pelo que eu entendi, ele roda de novo o relatório quando vai gerar em PDF ou em XLS.
Daí ele roda o onFooter de novo e abre a tela de seleção de impressora.

Alguém já se deparou com isso e achou uma forma melhor de resolver?
Ou alguém sabe como eu posso descobrir, no meu onFooter, se o programa está rodando agora porque foi chamado pela opção “Imprimir” ou “Gerar PDF”, “Gerar XLS”, etc?

É só entrar nesta consulta em Exportação e configurar como você precisa, ai já sai direto, tem várias opções, html, PDF, XML, CSV, etc:

Olá Jailton.
Obrigado por responder tão rapidamente.

Eu realmente já tinha configurado isso. Fui lá em exportação e configurei que quero relatório completo e preto e branco.
Isso faz com que ele não abra aquela janela modal quando eu seleciono imprimir.
Mas o meu problema é outro.

Quando o usuário entra no relatório, ele cai primeiro no filtro avançado. Porque eu preciso que ele informe o período que ele quer que rode o relatório. Quando ele pressiona o botão pesquisa, a query é executada e o resultado é mostrado “na tela”, em formato grid.

Se ele quiser imprimir, ele seleciona o botão “Exportação” e seleciona o que ele quer fazer (gerar PDF, XLS, XML, CSV… ou Imprimir).
Ele seleciona a opção “Imprimir” nessa lista. Daí o scriptcase roda de novo a query e gera o relatório em uma nova janela. Mas o resultado fica no browser… Daí o usuário tem que teclar Ctrl->P pra poder abrir a janela de seleção de impressora do windows. Ele seleciona a impressora e dá OK. E então o relatório vai pra impressora.

O que eu queria era eliminar esse passo a mais. Esse Ctrl->P que o usuário tem que teclar.
Por isso eu fiz aquela mutretagem no onFooter, dando um window.print().
Só que ele abre a janela de seleção de impressão sempre que roda o relatório. Se eu escolho gerar em PDF, por exemplo, ele abre a janela de seleção de impressora (porque ele roda o onFooter). Cada vez que eu rodo o grid em tela, ele abre a janela de seleção de impressora…
E eu queria que isso acontecesse só quando o usuário seleciona a opção “Exportação -> Imprimir”.

Tenta simular aí em qualquer relatório pra você ver como se comporta.
Mesmo assim, obrigado pelo apoio.

O Funcionamento do Grid da Consulta normal é assim mesmo, após a apresentação do html final para impressão, tem que ativar CTRL+P para seja selecionada a impressora, etc e feita a impressão.

Mais nada impede que você, tente algo diferente.