Clipper On Line • Ver Tópico - Migração para xharbour

Migração para xharbour

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Migração para xharbour

Mensagempor joserubenildosilva » 05 Jun 2008 08:27

Olá!
Tenho um sistema de factoring rodando hoje com clipper 5.01 com NTX, isso em torno de 80 tabelas e uns 150 indices criados. A Indexação tem que ser diaria, e sempre que um terminal cai(energia, etc) tenho que indexar, isso sem falar nos dados que são perdidos e tal.
Bem, "migrei" para o xharbour, coloquei entre aspas, pois aina acontece algo estranho.
O Sistema esta compilado no xharbour se apresentar problemas, no inicio tive problemas com a dbedit, mas com ajuda aqui no forum consegui contornar o problema, tinha umas funcões que funcionavam certinho no clipper 5.01 e agora não mais funcionam, ou os resultados não são o esperado.
Reconheço que o sistema, em muitos pontos tem os chamados "quebra-galhos" mas funciona, no 5.01 e no xharbour não.
Amigos, o que devo fazer?
Penso em fazer da seguinte forma:
1° deixar ele 100%(fazendo o que faz hoje no 5.01) sem alterar banco de indices(NTX -> CDX)
2° Migrar para indices CDX
3° Compilar para o Linux e usar SSH
3 ° Migrar para um banco relacional(MySql talvez)

Gostaria de algumas dicas e opiniões sobre o assunto.

Obs: Futuramente pretendo acessa-lo via terminal server ou SSH se estiver no Linux.

Sem mais Obrigado
joserubenildosilva
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 15 Abr 2008 11:21
Cidade/Estado: cuiaba-mt
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Migração para xharbour

Mensagempor rodrmigu » 05 Jun 2008 11:10

Olá,

Acho que num primeiro momento a migração pra CDX (use com tags, economizará em número de índices) e numa segunda etapa, a migração pra linux que é transparante, ou muito pouco a ser feito.

Já para um futuro, usar um banco de dados, seria o aconselhável, mas vai requerer um pouco mais de adaptação.

[]'s
Rodrigo
Avatar de usuário

rodrmigu
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 150
Data de registro: 27 Nov 2007 14:13
Cidade/Estado: Indaiatuba SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Migração para xharbour

Mensagempor gvc » 05 Jun 2008 11:14

1 - Sobre a indexação diária.
Vc esta usando dbcommit() e dbunlock() sempre que termina de gravar os dados em um arquivo?
Eu tinha problemas em um cliente e resolvi colocando o sistema para abrir os arquivos que precisavam no modulo e fechando quando saisse do mesmo. Força um pouco abrir e fechar toda hora, mas não tive mais problemas de reindexação diária.

2 - Dê uma procurada aqui no forum. Temos vários tópicos explicando como migrar para CDX.

3 - Não é a minha praia.

4 - Vc terá que mudar boa parte do seu sistema para usar toda a capacidade de um SGDB relacional.
Apesar de ser poder usar boa parte como o Clipper usa, mas vc estará com um caminhão enorme fazendo entrega de sacolinha de compras.
Um exemplo é que em Clipper nós criamos várias tabelas e usamos vários comandos para selecionar e montar as informações para uma consulta.
Com um SGDB relacional, vc monta o comando SQL para fazer toda a consulta e é retornado como resultado um "arquivo" com todos os dados necessários.
E o ponto mais forte é a segurança das informações.
Eu estou começando a usar ADO para consultar o Oracle. Rapaz, até assusta o que dá para fazer.

Espero ter ajudado. Boa sorte.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar de usuário

gvc
Colaborador

Colaborador
 
Mensagens: 1269
Data de registro: 23 Ago 2005 10:57
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Migração para xharbour

Mensagempor sygecom » 05 Jun 2008 12:15

Olá joserubenildosilva,
joserubenildosilva escreveu:Olá!
Tenho um sistema de factoring rodando hoje com clipper 5.01 com NTX, isso em torno de 80 tabelas e uns 150 indices criados. A Indexação tem que ser diaria, e sempre que um terminal cai(energia, etc) tenho que indexar, isso sem falar nos dados que são perdidos e tal.

Bom, por uma falta de energia e um micro sem No-break, até entendo que pode ter problemas, mas fora isso você tem um problema ai, pq isso não é normal de ter que indexar todo dia, eu tenho sistema com muito mais DBF e INDICE e não tenho que fazer isso todo dia e se tivese seria um cara morto por clientes, pq indexar um sistema varios DBF e com milhoes de registros, isso demora muito.

Bem, "migrei" para o xharbour, coloquei entre aspas, pois aina acontece algo estranho.
O Sistema esta compilado no xharbour se apresentar problemas, no inicio tive problemas com a dbedit, mas com ajuda aqui no forum consegui contornar o problema, tinha umas funcões que funcionavam certinho no clipper 5.01 e agora não mais funcionam, ou os resultados não são o esperado.
Reconheço que o sistema, em muitos pontos tem os chamados "quebra-galhos" mas funciona, no 5.01 e no xharbour não.

Jose, por mais que o xharbour seja compativel com Clipper, alguma coisa tem que ajustar, até mesmo para melhor em seus aplicaivos. Como por exemplo a implantação de impressão USB podendo apneas acresentar um GetDefaultPrinter(). E tem alguns erro que o Clipper permite que o xHarbour não permite, EX:

USE AGENDA ALIAS AGENDA SHARED // abrindo
INDEX ON CODIGO TO AGENDA1 // criando indice
INDEX ON NOME TO AGENDA2 // criando indice
INDEX ON ENDERECO TO AGENDA3 // criando indice
SET INDEX TO AGENDA1,AGENDA2 // abrindo indice

SELE AGENDA
DBSETORDER(3) // aqui o clipper pegaria o primeiro indice pq o 3º não foi aberto, no xharbour ele causa um erro

Então resumindo, Nesse caso acima teria que dar uma revisada em todos fontes principalmente na abertura de DBF e INDICE.

Amigos, o que devo fazer?
Penso em fazer da seguinte forma:
1° deixar ele 100%(fazendo o que faz hoje no 5.01) sem alterar banco de indices(NTX -> CDX)
2° Migrar para indices CDX
3° Compilar para o Linux e usar SSH
3 ° Migrar para um banco relacional(MySql talvez)

Gostaria de algumas dicas e opiniões sobre o assunto.

Obs: Futuramente pretendo acessa-lo via terminal server ou SSH se estiver no Linux.

Na minha opnião em primeiro lugar você deveria fazer esse sistema rodar todo em CDX com TAG, digo isso pq sua dor de cabeça com indice vai se eliminar pela metade. Depois do mesmo rodando todo em CDX vai ficar até mais facil de ver e localizar o pq e onde esta corrompendo os indice, se é que isso vai acontecer depois que tiver todo em CDX com TAG.O Terceiro passo que você citou é muito bom, que é compilar sua app em linux, apenas deve cuidar algumas poucas limitações que acontece em linux, como uso de alguma LIG grafica ou algumas classes que só compilam em Windows, como WIN32PRN, ou seja não compativel com Linux, mas em modo console vai que é beleza.
E sobre migrar a mesma para MYSQL, isso sim, será um grande ganho, digo não só de desempenho(que usando os comandos SQL certo, ele voa baixo) mas por segurança e disponibilidades de integrações com WEB e outros sistemas via REMOTO.
Apesar com RDDLETO, hoje é possivel usar DBF remoto, e pode compilar em Windows e Linux.
Se quiser saber mais sobre RDD LETO, postei ontem um pequeno passo a passo de como compilar e usar.
viewtopic.php?f=33&t=8167

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7020
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 133 vezes

Re: Migração para xharbour

Mensagempor Hasse » 05 Jun 2008 12:22

Bom dia José.

A primeira coisa absolutamente necessária é que haja energia estável, e sempre. Não acredito que haja algum sistema que seja totalmente imune à energia de má qualidade. Este assunto é tão longo e complicado que dá para escrever um livro.

Providencie energia limpa, e isto quer dizer, estável e sem muitas harmônicas e você vai ver que os teus problemas cairão 90%. Campos magnéticos muitos fortes também podem incomodar.

Migrar para o CDX é uma MUITO boa. Fiz isto já faz alguns anos e fiquei extremamente satisfeito com os resultados. E esta migração é fácil, com bem poucas alterações. E mais um detalhe, use o CDX com TAG, exatamente como o Leonardo recomendou, ou seja, um arquivo CDX para cada DBF. Todos os índices estarão neste único arquivo CDX. Quando você abre o DBF o CDX é aberto automaticamente, sem bem que eu ainda mantenho o comando de abertura dos índices.

O compilador do xHarbour é mais exigente do que o Clipper, contudo, depois de corrigidos os erros (???) você vai ter um sistema bem mais confiável.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar de usuário

Hasse
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 815
Data de registro: 19 Out 2004 10:30
Cidade/Estado: Jaraguá do Sul - SC
Curtiu: 0 vez
Mens.Curtidas: 24 vezes

Re: Migração para xharbour

Mensagempor rodrmigu » 05 Jun 2008 16:34

Olá José,

Sobre corrupção de índices vai muito da forma como vc trabalha com eles. Vc costuma abri-los todos no começo do sistema e os deixa abertos, ou vai abrindo e fechando conforme a necessidade?

Dependendo do que vc usa, tenho uma solução pro seu caso.

[]'s
Rodrigo
Avatar de usuário

rodrmigu
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 150
Data de registro: 27 Nov 2007 14:13
Cidade/Estado: Indaiatuba SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Migração para xharbour

Mensagempor joserubenildosilva » 05 Jun 2008 17:24

O Sistema Abre todos os arquivos no login de acesso. Concordo que isso não é seguro.
Agradeço a todos pelas colaborações. Certamente acharei(emos) a solução ideal.
joserubenildosilva
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 15 Abr 2008 11:21
Cidade/Estado: cuiaba-mt
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Migração para xharbour

Mensagempor rodrmigu » 05 Jun 2008 18:17

Olá José,

Então segue abaixo um exemplo de como resolver isso. Primeiro, vc precisa tirar do seu sistema essa opcao de abrir os arquivos logo apos o login. Como nos outros módulos provavelmente vc nao tem um USE ... INDEX ... e para nao precisar fazer isso em cada modulo, vc pode usar o exemplo abaixo.

#include "error.ch"

REQUEST DBFCDX

Procedure Main()
    RDDSETDEFAULT("DBFCDX")

    CreateTable()

    //USE testcdx INDEX testcdx  // Esta linha não é mais necessária com a utilização da ErrorSys abaixo.
 
    // ? testcdx->codigo   // Este código também funciona com o ErrorSys causando um error e interceptando o mesmo e abrindo o arquivo. 
    SELECT testcdx
    ? "RddName:", RddName(), Alias()

    SET ORDER TO 2
    ? "Order:", IndexOrd()

    SET ORDER TO "Order01"
    ? "Order:", IndexOrd()

    wait
Return

Procedure CreateTable()
    local aStruct := {{ "CODIGO", "N",  6, 0 }, ;
                      { "NOME",   "C", 25, 0 }}

    if ! File("testcdx.dbf")
        DBCreate( "testcdx", aStruct, "DBFCDX" )

        USE testcdx
        INDEX ON field->codigo TAG "Order01" TO testcdx.cdx
        INDEX ON field->nome   TAG "Order02" TO testcdx.cdx
        CLOSE ALL
    endif
Return

Procedure ErrorSys()
   ErrorBlock( {|e| DefError(e)} )
Return

static Function DefError(e)
    Local cAlias, i

    if ( e:genCode == EG_NOALIAS ) .and. e:tries <= 2    // Aqui é o Pulo do Gato
        cAlias := e:operation
        USE &cAlias INDEX &cAlias
        return (.t.)
    endif

    if ( !Empty(e:subsystem) )
      ?? " " + e:subsystem + "/" + Ltrim(Str(e:subCode))
    end

    if ( !Empty(e:description) )
      ?? "  " + e:description 
     end

   if ( !Empty(e:operation) )
      ?? ": " + e:operation
   end

   if ( !Empty(e:filename) )
      ?? ": " + e:filename
   end

   i := 2
   while ( !Empty(ProcName(i)) )
      ? "Called from", Trim(ProcName(i)) + ;
         "(" + Alltrim(Str(ProcLine(i))) + ")  "

      i++
   enddo

Return (.f.)


Fique tranquilo quanto a velocidade, funciona muito bem, visto que vc passará a usar DBFCDX, entao vc nao precisa mais abrir aquele monte de NTX's. Quando vc chamar o seu modulo pelo menu, ao retornar vc pode dar um CLOSE ALL, com estes métodos, vc reduzirá em muito a corrupção dos índices.

Se observar no Código do errorsys, verá que eu intercepto o Erro ao tentar abrir o arquivo e o codigo o fará pra vc. Esse método eu venho usando desde a época do clipper 5.01 e atualmente faço assim também para abrir minhas tabelas em postgres, e funciona perfeitamente. O mesmo funciona nao apenas para SELECT, mas para qualquer referencia a uma tabela, pode ser através de um tabela-> que funciona beleza.

Espero lque o código acima tenha esclarecido como usar CDX com TAG e uma ajuda extra na abertura dos arquivos.

[]'s
Rodrigo
Avatar de usuário

rodrmigu
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 150
Data de registro: 27 Nov 2007 14:13
Cidade/Estado: Indaiatuba SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Migração para xharbour

Mensagempor joserubenildosilva » 06 Jun 2008 08:42

Ola! Rodrigo, Agradeço desde já pela sua Ajuda, mas infelizmente não obtive êxito na minha tentativa de implementar o seu código dentro do sistema.
Coloquei o código da errorSys dentro do meu Prg principal. Na compilação não apresentou erro, porém no momento da execução, e me retorno o seguinte erro:
Unrecoverable Error 9003: Too Many recursive error handler Calls

Estou compilando na versão que ja esta preparada para o xharbour.
Não fiz a tentativa na versão antiga com clipper 5.01

obrigado pela ajuda!!
joserubenildosilva
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 15 Abr 2008 11:21
Cidade/Estado: cuiaba-mt
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Migração para xharbour

Mensagempor rodrmigu » 06 Jun 2008 09:30

Jose,

Geralmente este erro acontece quando tem um erro dentro do Errorsys, de maneira que ele entra em loop e nao consegue mostrar o erro e termina o programa.

Faz o seguinte, pega parte do código que passei e implementa na sua errorsys. Se vc nao tiver uma, dá uma olahda na que vem com o xHarbour.

Vc chegou a compilar o código que te passei?

[]'s
Rodrigo
Avatar de usuário

rodrmigu
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 150
Data de registro: 27 Nov 2007 14:13
Cidade/Estado: Indaiatuba SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Migração para xharbour

Mensagempor joserubenildosilva » 06 Jun 2008 10:00

Rodrigo, Eu adicionei o Codigo dentro do prg principal da minha aplicação. Substituindo a rotina de ab ertura pela minha que usava ao iniciar o sistema.
Eu não tenho uma rotina ErrorSys.
obrigado
joserubenildosilva
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 15 Abr 2008 11:21
Cidade/Estado: cuiaba-mt
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Migração para xharbour

Mensagempor rodrmigu » 06 Jun 2008 12:06

José,

Vc adicionou o error.ch? Vou ficar online no chat, se desejar entra lá e tentamos descobrir o que possa estar ocorrendo.

[]'s
Rodrigo
Avatar de usuário

rodrmigu
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 150
Data de registro: 27 Nov 2007 14:13
Cidade/Estado: Indaiatuba SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Migração para xharbour

Mensagempor joserubenildosilva » 07 Jun 2008 07:58

Olá Rodrigo.
Ontem, um cliente estava precisando de atendimento e não pude continuar no Chat. Bem mas depois eu fui martelar aquele código e consegui faze-lo funcionar. Realmente não fica lento como você disse, porém, acho que o grande problema é o sistema como um todo. Durante anos, foram feitas muitos remendos no código e as coisas "malucas" que andam ocorrendo pode ter explicações nos em certos pontos mal elaborados. Agora em muitos opções do sistema, ele chama sempre o ErrorSys, como o ErrorSys, não é o original, fica aparecendo erros na tela, mas não aborta o sistema, isso mostra ao meu ver que tem pontos onde com o clipper 5.01, passa mas ja com o xharbour não. E outra coisa, tem um relatorio que é impresso diariamente é a base do trabalho dos operadores, como o 5.01, sai perfeitamente mas tanto com o xharbour e clipper 5.2x ele duplica informações.
Resumindo, vou ter que rever todo o código, corrigir isso, depois migrar continuar a migração para CDX/Linux etc

Obrigado pela sua colaboração e persistência que ajudar-me.

sem mais

atenciosamente

jose rubenildo da silva
joserubenildosilva
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 15 Abr 2008 11:21
Cidade/Estado: cuiaba-mt
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Migração para xharbour

Mensagempor rodrmigu » 09 Jun 2008 09:28

Olá José,

Ainda bem que conseguiu resolver ;) Quanto ao errorsys, o que te passei era apenas um bem resumido, mas vc pode customiza-lo a sua maneira, etc.

Vou anexar aqui, o do xHarbour e um que eu uso, que foi customizado, entretanto existem funcoes especificas da xhgtk e postgres que precisam ser mudados, mas já serve pra vc ter uma ideia de como montar o seu e fazer mensagens customizadas para o cliente, salvar em log, etc.

[]'s
Rodrigo
Anexos
errorsys_rod.prg
(6.88 KiB) Baixado 128 vezes
errorsys.prg
(23.27 KiB) Baixado 163 vezes
Avatar de usuário

rodrmigu
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 150
Data de registro: 27 Nov 2007 14:13
Cidade/Estado: Indaiatuba SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Migração para xharbour

Mensagempor joserubenildosilva » 09 Jun 2008 17:50

ola rodrigo!
Baixei os arquivos e vou testa-lo hoje a noite e amanhã posto resultados

sem mais e obrigado
joserubenildosilva
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 15 Abr 2008 11:21
Cidade/Estado: cuiaba-mt
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro