Fórum Canvas does not allow drawing em relatório no WTS #375187
23/09/2009
0
Este erro(´Canvas does not allow drawing´) ocorre muitas vezes quando se está conectado via wts e vai tentar emitir um relatório.
A pesquisa ao banco é feita corretamente e ao executar o ´print´ do relatório(Report Builder) dá o erro e não tem santo que faça funcionar.
Aí tem que se desconectar e conectar novamente, sendo que as vezes não resolve.
Alguém sabe porquê da isso e como faz para corrigir?
Iibalena
Curtir tópico
+ 0Posts
23/09/2009
Afarias
1) Falta de recursos do Windows (geralmente pq os recursos alocados não vem sendo liberados, em algum momento não há mais recursos disponíveis)
2) A aplicação tenta ´desenhar´ num contexto inválido como no construtor do componente ou quando uma operação anterior no canvas não foi concluída.
T+
Gostei + 0
23/09/2009
Iibalena
1- Falta de recursos voce quer dizer hardware?
A pessoa conecta em uma maquina muito boa, então acho que não seria falta de hardware.
2- Como eu faria para saber se o contexto é inválido ou se a operação ainda não foi concluída?
E como que eu faço para concluir a mesma?
Gostei + 0
23/09/2009
Afarias
|A pessoa conecta em uma maquina muito boa, então acho que não seria
|falta de hardware.
Recursos virtuais (do SO).
Verificou se há memory leaks? Tem liberado os recursos utilizados em seu programa? Quantos usuários simultâneos (no TS)?
|2- Como eu faria para saber se o contexto é inválido ou se a operação
|ainda não foi concluída? E como que eu faço para concluir a mesma?
Tem a ver com ´como está programado´.
T+
Gostei + 0
23/09/2009
Iibalena
Hum, isso é com o adm do servidor da empresa
|Verificou se há memory leaks? Tem liberado os recursos utilizados em seu |programa? Quantos usuários simultâneos (no TS)?
Devem haver memory leaks sim, mas, por exemplo, alguns relatórios estão agrupados em um determinado form, esse form fica sempre criado, isso pode ocasionar um memory leak?
Os recursos estão liberados sim.
E é em torno de 40~50 usuários.
|Tem a ver com ´como está programado´.
O ´como está programando´ pode ser liberar telas, variáveis da memória, esse tipo de coisa?
Gostei + 0
23/09/2009
Afarias
Na verdade tem mais a ver com como vc programa, uma vez q vc informou que o Hardware ´atende´
|por exemplo, alguns relatórios estão agrupados em um determinado
|form, esse form fica sempre criado, isso pode ocasionar um memory
|leak?
´Memory Leak´ é quando memória é alocada e nunca liberada. Isso reduz os recursos disponíveis podendo chegar a dar problemas por falta destes recursos
Mas seu problema começa quando vc enche um form de componentes de relatórios (q costumam consumir muito recurso) e este fica criado o tempo inteiro, ainda mais rodando num TS com 40-50 usuários (basta multiplicar) -- uma hora o hardware/recursos virtuais se esgotam!
Esse pequeno erro de abordagem não faz muita diferença com 1 usuário em 1 máquina, mas com 40-50 em 1 máquina a coisa fica feia.
Procure ter componentes de relatório separados 1 para cada Form (ou DM) e cría-los quando for exibir o relatório e destruí-los logo após o relatório ser fechado (não ser mais necessário).
Assim vc não fica consumindo recursos sem necessidade, otimizando o uso da máquina e evita ´memory leaks´ por garantir q o q foi criado é destruído.
T+
Gostei + 0
23/09/2009
Iibalena
Vou verificar exatamente com o usuário em que relatórios que acontecem os erros, pois alguns estão centralizados e outros nos forms, isolá-los em forms separados e testar.
Isso resolveria tudo, correto?
Gostei + 0
23/09/2009
Afarias
Desde que vc não use ´Auto-Create Forms´... Ou seja... Não basta separar, os forms não devem ser criados quando começa a aplicação.
Devem ser criados quando necessário e destruídos assim q não são mais necessários. Sacou?
Boa sorte :D
T+
Gostei + 0
23/09/2009
Iibalena
Mas alguns é inevitável que fiquem no auto-create, mas outros nem tanto!
Muito obrigado pelo auxílio.
:)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)