ERRO EM RELATORIO MAIOR QUE 16 PAGINAS
Moderador: Moderadores
-
andrethomazi
- Usuário Nível 1

- Mensagens: 17
- Registrado em: 19 Jul 2005 08:50
ERRO EM RELATORIO MAIOR QUE 16 PAGINAS
Pessoal, estou com um problema simples, mas não acho a solução:
- compilo e executo meu sistema em XPs da vida normalmente, mas quando executo em 98, a função de exibir relatorios maiores que 15 páginas não funciona, dá erro "conventional memory exausted" e aborta o programa.
Detalhe: não são em todos os micros com 98 que dá esse pau.
Detalhe 2: a função que uso para exibir os relatórios é a REL64, acho que tirada aqui neste site mesmo.
------------------------------------------------------------------------
alguém podendo ajudar? Já postei esta msg neste forum, sem sucesso, o problema persiste, inclusive em micros com XP e 256 de ram.
- compilo e executo meu sistema em XPs da vida normalmente, mas quando executo em 98, a função de exibir relatorios maiores que 15 páginas não funciona, dá erro "conventional memory exausted" e aborta o programa.
Detalhe: não são em todos os micros com 98 que dá esse pau.
Detalhe 2: a função que uso para exibir os relatórios é a REL64, acho que tirada aqui neste site mesmo.
------------------------------------------------------------------------
alguém podendo ajudar? Já postei esta msg neste forum, sem sucesso, o problema persiste, inclusive em micros com XP e 256 de ram.
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Buenas...
Tche, não sei que função é essa ai (REL64), mas faça um teste com esse link abaixo eu uso e aprovo....faço relatorios muita mais alem de 30 paginas e não me dah problema nem em WIN98 e nem em WINXP.
https://pctoledo.org/forum/viewtopic.php?t=3954
Abraços
Tche, não sei que função é essa ai (REL64), mas faça um teste com esse link abaixo eu uso e aprovo....faço relatorios muita mais alem de 30 paginas e não me dah problema nem em WIN98 e nem em WINXP.
https://pctoledo.org/forum/viewtopic.php?t=3954
Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Ahhh, é isso aí Leonardo. Eu ja estava pensando no gerenciamento de memoria... caramba quatro. Mas você matou !. Inclusive, este tema ja foi abordado várias vezes. E como resultado a idéia de abrir num TBROWSE é muito conveniente. Pois você coloca todo o conteúdo num DBF e exibe a linhas do texto (em DBF) de acordo a movimentação no TBROWSE. Alias em quase todos os meus relatórios, são exibidos atarvés de um DBF temporário. Inclusive, em alguns eu aninho outras funções. Como por exemplo:
Digamos num relatorio de devedores. Se na linha X e coluna Y, contiver Ficha nº 00001, e o usuário der um ENTER emcima dessa linha, eu faço com que exiba a ficha cadastral do cliente (por exemplo). Isto permite ao relatório em TELA, ser TAMBÉM um modo de consulta. Mas claro, estas posições tem de serem FIXAS (não variáveis). Também podes procurar por uma substring (que você sabe que sempre estará lá e criar em variável com o conteúdo apartir daquela SUBSTRING. O tratamento de texto em TBROWSE, é muito rico, rápido, seguro. E até dá para imprimí-lo para impressora, dali de dentro da exibição em tela.
Mas SYGECOM, você matou rápido essa questão. você não acha André ?
um clip-abraço :)Pos
Digamos num relatorio de devedores. Se na linha X e coluna Y, contiver Ficha nº 00001, e o usuário der um ENTER emcima dessa linha, eu faço com que exiba a ficha cadastral do cliente (por exemplo). Isto permite ao relatório em TELA, ser TAMBÉM um modo de consulta. Mas claro, estas posições tem de serem FIXAS (não variáveis). Também podes procurar por uma substring (que você sabe que sempre estará lá e criar em variável com o conteúdo apartir daquela SUBSTRING. O tratamento de texto em TBROWSE, é muito rico, rápido, seguro. E até dá para imprimí-lo para impressora, dali de dentro da exibição em tela.
Mas SYGECOM, você matou rápido essa questão. você não acha André ?
um clip-abraço :)Pos
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Tche Pablo.....primeiro uma otima semana pra vc...segundo...o mérito é do digitom, através desse fonte dele montei meu proprio que nem vc mesmo disse da li mesmo eu posso mandar imprimir enviar o relatorio por email e bla,bla,bla...podemos fazer o que quiser.
Abraços
Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Obrigado, Tchê pra vocês também.sygecom escreveu:uma otima semana pra vc...
O que eu quiz dizer, é que você foi direto ao ponto em encontrar uma solução para o colega André. E essa idéia, ora que você tenha aproveitado do colega DIGITOM, tem créditos que vem de há muito tempo e de autor desconhecido. Pois como eu disse, ja foi mencionado aqui diversas vezes. Mas enfim, a idéia é essa e vale a pena ser mencionada sempre para estes casos.sygecom escreveu:o mérito é do digitom
Um clip-abraço :)Pos
-
andrethomazi
- Usuário Nível 1

- Mensagens: 17
- Registrado em: 19 Jul 2005 08:50
digo-lhes: nao quero mudar a função nao. A minha ta toda ajustada. Tenho certeza que o bug nao é na função chamada e sim em arquivo de Linkedição ou configuração de xp.
Indicaram-me em outro tópico uma versao mais recente do blinker, mas não consigo encontrar nenhuma para download que seja acima de 5.0 (a que uso atualmente).
abraços a todos.
Indicaram-me em outro tópico uma versao mais recente do blinker, mas não consigo encontrar nenhuma para download que seja acima de 5.0 (a que uso atualmente).
abraços a todos.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Caro André,
De você querer mudar ou não, já é uma questão que você devia RE-AVALIAR. Você mesmo diz na sua primeira mensagem que o erro foi "conventional memory exausted". Isso ja diz tudo, é problema com memória. O Clipper tem limitação de 64K para edição, não sei se você vai conseguir, mesmo que compile com BLINKER PROTEGIDO, EXOSPACE e caramba quatro...
A nossa indicação, continua sendo a mesma. Você verá que será mais seguro e você poderá obter maiores recursos com essa nova formalidade de edição.
YOU SHOULD THINK ABOUT !
Um clip-abraço :)Pos
De você querer mudar ou não, já é uma questão que você devia RE-AVALIAR. Você mesmo diz na sua primeira mensagem que o erro foi "conventional memory exausted". Isso ja diz tudo, é problema com memória. O Clipper tem limitação de 64K para edição, não sei se você vai conseguir, mesmo que compile com BLINKER PROTEGIDO, EXOSPACE e caramba quatro...
A nossa indicação, continua sendo a mesma. Você verá que será mais seguro e você poderá obter maiores recursos com essa nova formalidade de edição.
YOU SHOULD THINK ABOUT !
Um clip-abraço :)Pos
-
andrethomazi
- Usuário Nível 1

- Mensagens: 17
- Registrado em: 19 Jul 2005 08:50
vai o mail: andrethomazi@netsite.com.br
quanto ao fato de mudar, a função que uso foi baixada aqui mesmo no pctoledo. Tenho tanto a fazer quanto ao TEF que queria deixar a função como está e partir mais pra rodar e homologar o sistema.
esta é a função: ----------------------------------------------
function rel64(arq_, l_sup_, c_sup_,l_inf_, c_inf_,cor)
LOCAL cur_atual, cor_atual
PRIV l_arq[l_inf_-l_sup_+1], maxlin_, area_, tablin_, fim_arq_, offset_ini,;
offset_fim, lsup_:=l_sup_, csup_:=c_sup_,linf_:=l_inf_, t_w, t_r, ;
cinf_:= c_inf_, cod_sos:=55, t_c, t_s, t_d
t_w:=SETKEY(K_CTRL_W,NIL); t_r:=SETKEY(K_CTRL_R,NIL)
t_c:=SETKEY(K_CTRL_C,NIL); t_s:=SETKEY(K_CTRL_S,NIL)
t_d:=SETKEY(K_CTRL_D,NIL)
IF (area_:=FOPEN(arq_))<0
RETURN .F. // ERRO AO ABRIR ARQUIVO
ENDI
cor=IF(cor=NIL,"W+/B",cor)
cor_atual=SETCOLOR(cor)
cur_atual:=SETCURSOR(0)
@ l_sup_,c_sup_ CLEAR TO l_inf_,c_inf_
maxlin_=linf_-lsup_+1
AFILL(l_arq,"")
offset_ini:=offset_fim := 0
tablin_ = 1
fim_arq_=FSEEK(area_,0,2)
FSEEK(area_,0)
MONTA_LIN(maxlin_,0,.F.)
offset_ini=0
DO WHILE .t.
tecl_p=INKEY(0)
IF SETKEY(tecl_p)!=NIL
EVAL(SETKEY(tecl_p))
tecl_p=0
ENDI
DO CASE
CASE tecl_p=K_ESC
EXIT
CASE tecl_p=K_DOWN
MONTA_LIN(1,0)
CASE tecl_p=K_UP
MONTA_LIN(-1,0)
CASE tecl_p=K_CTRL_PGUP
offset_ini:=offset_fim := 0
AFILL(l_arq,"")
MONTA_LIN(maxlin_,0)
offset_ini=0
CASE tecl_p=K_CTRL_PGDN
offset_ini:=offset_fim := fim_arq_
AFILL(l_arq,CHR(0))
@ l_sup_+1,c_sup_+1 CLEAR TO l_inf_-1,c_inf_-1
MONTA_LIN(-1*(maxlin_),0)
CASE tecl_p=K_RIGHT
MONTA_LIN(0,10) // ELE PULA 10 ESPACOS, PODE SER ALTERADO
CASE tecl_p=K_LEFT
MONTA_LIN(0,-10) // ELE PULA 10 ESPACOS, PODE SER ALTERADO
CASE tecl_p=K_PGDN
MONTA_LIN(maxlin_-1,0)
CASE tecl_p=K_PGUP
MONTA_LIN(-1*(maxlin_-1),0)
END CASE
ENDD
FCLOSE(area_)
SETKEY(K_CTRL_W,t_w); SETKEY(K_CTRL_R,t_r)
SETKEY(K_CTRL_C,t_c); SETKEY(K_CTRL_S,t_s)
SETKEY(K_CTRL_D,t_d)
SETCURSOR(cur_atual)
SETCOLOR(cor_atual)
RETU
é BBB e rodava em qualquer pereba de micro antes de eu implementar a visual lib. Agora, roda tbem em quase tudo, mas não em tudo.
Se puderem, please, mandem-me o blinker acima do 5.0 e um exemplo de arquivo lnk junto.
Sou todo ouvidos: se for necessário a substituição da função farei pela indicada, mas se não for realmente necessário, prefiro deixar como está.
Um abraço a todos.
Andre
quanto ao fato de mudar, a função que uso foi baixada aqui mesmo no pctoledo. Tenho tanto a fazer quanto ao TEF que queria deixar a função como está e partir mais pra rodar e homologar o sistema.
esta é a função: ----------------------------------------------
function rel64(arq_, l_sup_, c_sup_,l_inf_, c_inf_,cor)
LOCAL cur_atual, cor_atual
PRIV l_arq[l_inf_-l_sup_+1], maxlin_, area_, tablin_, fim_arq_, offset_ini,;
offset_fim, lsup_:=l_sup_, csup_:=c_sup_,linf_:=l_inf_, t_w, t_r, ;
cinf_:= c_inf_, cod_sos:=55, t_c, t_s, t_d
t_w:=SETKEY(K_CTRL_W,NIL); t_r:=SETKEY(K_CTRL_R,NIL)
t_c:=SETKEY(K_CTRL_C,NIL); t_s:=SETKEY(K_CTRL_S,NIL)
t_d:=SETKEY(K_CTRL_D,NIL)
IF (area_:=FOPEN(arq_))<0
RETURN .F. // ERRO AO ABRIR ARQUIVO
ENDI
cor=IF(cor=NIL,"W+/B",cor)
cor_atual=SETCOLOR(cor)
cur_atual:=SETCURSOR(0)
@ l_sup_,c_sup_ CLEAR TO l_inf_,c_inf_
maxlin_=linf_-lsup_+1
AFILL(l_arq,"")
offset_ini:=offset_fim := 0
tablin_ = 1
fim_arq_=FSEEK(area_,0,2)
FSEEK(area_,0)
MONTA_LIN(maxlin_,0,.F.)
offset_ini=0
DO WHILE .t.
tecl_p=INKEY(0)
IF SETKEY(tecl_p)!=NIL
EVAL(SETKEY(tecl_p))
tecl_p=0
ENDI
DO CASE
CASE tecl_p=K_ESC
EXIT
CASE tecl_p=K_DOWN
MONTA_LIN(1,0)
CASE tecl_p=K_UP
MONTA_LIN(-1,0)
CASE tecl_p=K_CTRL_PGUP
offset_ini:=offset_fim := 0
AFILL(l_arq,"")
MONTA_LIN(maxlin_,0)
offset_ini=0
CASE tecl_p=K_CTRL_PGDN
offset_ini:=offset_fim := fim_arq_
AFILL(l_arq,CHR(0))
@ l_sup_+1,c_sup_+1 CLEAR TO l_inf_-1,c_inf_-1
MONTA_LIN(-1*(maxlin_),0)
CASE tecl_p=K_RIGHT
MONTA_LIN(0,10) // ELE PULA 10 ESPACOS, PODE SER ALTERADO
CASE tecl_p=K_LEFT
MONTA_LIN(0,-10) // ELE PULA 10 ESPACOS, PODE SER ALTERADO
CASE tecl_p=K_PGDN
MONTA_LIN(maxlin_-1,0)
CASE tecl_p=K_PGUP
MONTA_LIN(-1*(maxlin_-1),0)
END CASE
ENDD
FCLOSE(area_)
SETKEY(K_CTRL_W,t_w); SETKEY(K_CTRL_R,t_r)
SETKEY(K_CTRL_C,t_c); SETKEY(K_CTRL_S,t_s)
SETKEY(K_CTRL_D,t_d)
SETCURSOR(cur_atual)
SETCOLOR(cor_atual)
RETU
é BBB e rodava em qualquer pereba de micro antes de eu implementar a visual lib. Agora, roda tbem em quase tudo, mas não em tudo.
Se puderem, please, mandem-me o blinker acima do 5.0 e um exemplo de arquivo lnk junto.
Sou todo ouvidos: se for necessário a substituição da função farei pela indicada, mas se não for realmente necessário, prefiro deixar como está.
Um abraço a todos.
Andre
-
andrethomazi
- Usuário Nível 1

- Mensagens: 17
- Registrado em: 19 Jul 2005 08:50