letodb->browse()

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Minduim
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 06 Abr 2011 13:02
Localização: Santo andré - SP

letodb->browse()

Mensagem por Minduim »

amigos, a função BROWSE() esta com um comportamento estranho utilizando o LETODB;
ao alterar o conteúdo dos registros, a visualização do arquivo não esta atualizando corretamente;
harbour 3.4 + mingw + letodb

alguns dos amigos que utiliza esta ferramenta poderia verificar esta ocorrencia;

teste.prg

Código: Selecionar todos

Function Main

LOCAL lStatus, cPath, cRdd, lLetodb, cArq, cInd, cTag1, nCont

REQUEST LETO
REQUEST DBFCDX

SetMode(25, 80)

lLetodb:= .F.  // .T. teste com o LETO
               // .F. teste sem o LETO

if lLetodb
   cRdd:= "LETO"
   cPath := "//LOCALHOST:2812/"
else
   cRdd:= "DBFCDX"
   cPath:= diskname() + ":\" + curdir() + "\"
endif

RDDSETDEFAULT( cRdd )

cArq:=  "teste1"
cind:=  "teste2"
cTag1:= "teste3"

lStatus:= .T.
if cRdd = "LETO"
   if leto_Connect( cPath ) == -1
      lStatus:= .F.
   endif
endif

if lStatus
   dbCreate( cPath + cArq, { {"NOME","C",10, 0}, {"ORDEM", "C", 10, 0} } )

   dbUseArea( .T., cRdd , cPath + cArq, cArq, .F., .F. )

   for nCont:= 1 to 10   
      dbAppend()
      replace NOME with strzero(nCont, len(NOME)), ;
         ORDEM with str(nCont, len(NOME))
   next

   ordCreate( cPath + cInd, cTag1, "NOME",, .F. )

   ordlistClear()
   ordListAdd( cPath + cInd, cTag1)

   browse()

   dbCloseAll()

   if cRdd = "LETO"
      Leto_FErase( AtRepl( "\", cPath + cArq + ".dbf", "/" ) )
      Leto_FErase( AtRepl( "\", cPath + cInd + ".cdx", "/" ) )
   else
      Ferase( cPath + cArq + ".dbf" )
      Ferase( cPath + cInd + ".cdx" )
   endif

endif

return Nil
Tags: LetoDB
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

letodb->browse()

Mensagem por sygecom »

Eu uso em um projeto pequeno o LetoDB+xHarbour, e nos browse() sempre antes de chamar uso: DBGOTOP(), Teste ai.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Minduim
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 06 Abr 2011 13:02
Localização: Santo andré - SP

letodb->browse()

Mensagem por Minduim »

leonardo,
confesso que não entendi a lógica desta sua sugestão, mas no teste.prg funcionou perfeitamente;
a minha aplicação já continha a sua sugestão, mas a tela não é atualizada corretamente, somente quando utilizo PgUp/PgDn, forçando uma atualização;
verifiquei no arquivo changelog do harbour que esta função não alterada desde a sua implementação em 1999 e talvez necessite de alguma atualização;
outra alternativa seria mudar de browse() para tbrowse();
fico muito grato pela sua colaboração;

toledo,
por gentileza, você poderia transferir este tópico de BANCO DE DADOS para HARBOUR e o título de LETODB->BROWSE() para BROWSE()->LETODB;
quem sabe o Victor veja este tópico e entenda que esta função necessite de uma atualização;
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

letodb->browse()

Mensagem por Itamar M. Lins Jr. »

O problema ocorre com CDX ? ou somente com o LETO ?
A função browse() não existe ela apenas faz uma chamada p/ classe tBrowseDB(), no final é tudo tBrowse().

Se for um problema do LetoDb faz um exemplo pequeno p/ que outros possam testar.
...sempre antes de chamar uso: DBGOTOP(), Teste ai.
Isso já foi corrigido. Continua com esse problema na versão do SVN ?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

letodb->browse()

Mensagem por Jairo Maia »

Olá Pessoal,

Eu não uso (ainda) LETODB, mas pelo que ando lendo aqui no fórum ele me parece mais exigente que trabalhar em simples DBFCDX, assim, não falta o famoso COMMIT (ou equivalente) depois de Replace, ou se preferir antes de Browse()? Ou nada a ver?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Minduim
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 06 Abr 2011 13:02
Localização: Santo andré - SP

letodb->browse()

Mensagem por Minduim »

estou testando esta ferramenta deste junho, apesar de entender agora que minha opção não foi a mais acertada;

letodb não faz parte do pacote harbour e entendo que o desenvolvedor desta ferramenta entende que ela esta perfeita;

também entendo que a utilização do ferramenta letodb torna nossa lógica de programação muito mais criteriosa;

fiz um esforço muito grande para tentar trocar todos os comandos por funções, e nestas funções, outro cuidado para não deixar uma variável
diretamente relacionada a função;

entendo também que poucos amigos do forum a utilizam, e dos que utilizam, nem todos estão dispostos a dedicar um tempo para ajudar o próximo, o que torna o entendimento da ferramenta e de suas necessidades muito estressante;

em meus testes, a utilização da ferramenta dentro da própria rede mostrou-se satisfatória, mas o acesso fora da rede mostrou-se comercialmente inviável, como por exemplo, acessar uma filial pela matriz ou a implantação de um pedido remoto por um representante, além de que o acesso, até que provem o contrário, só é feito pelo ip (xxx.xxx.xx.xx), não contemplando o acesso pelo endereço (www.xxxxx.xx.com);

estas são as minhas impressões e assim sendo entendo que não cabem críticas sobre o posto;

jairo,
acrescentei sua sugestão, mas infelizmente o resultado é o mesmo;
agradeço sua colaboração;

estou testando esta ferramenta deste junho e ainda não desisti;
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

letodb->browse()

Mensagem por janio »

Eu testei seu exemplo e a atualizacao do browse foi automatica tanto em cdx quanto em leto.

Uso Harbour3.2.

Nunca usei leto de fora de uma rede local. Transacoes no leto tbm nunca consegui usar. Tem bug q ja relatei mas parece q nunca consertaram ou pelo menos 'acharam' q isso era bug.

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Minduim
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 06 Abr 2011 13:02
Localização: Santo andré - SP

letodb->browse()

Mensagem por Minduim »

janio,
agradeço sua atenção;
aparentemente o amigo jaime acertou, ou seja a utilização do comando dbCommit() após a criação do banco de dados e do arquivo de index;
no teste.prg, que reproduzo novamente abaixo, com algumas alterações, sem esta função, a atualização não é automática e com ela o problema some;
note que no teste.prg abaixo, deixei desativada função dbCommit();
por gentileza, teste novamente, com e sem a função, alterando o conteúdo com campo CAMPO01;

só que na minha aplicação, esta solução se mostrou ineficaz;


jairo,
me perdoe, mas a sua sugestão eu havia testado apenas na minha aplicação;


teste.prg

Código: Selecionar todos

Function Main

LOCAL lStatus, cPath, cRdd, lLetodb, cArq, cInd, cTag1, nCont, nFocus

REQUEST LETO
REQUEST DBFCDX

SetMode(25, 80)

lLetodb:= .T.  // .T. teste com o LETO
               // .F. teste sem o LETO

if lLetodb
   cRdd:= "LETO"
   cPath := "//LOCALHOST:2812/"
else
   cRdd:= "DBFCDX"
   cPath:= diskname() + ":\" + curdir() + "\"
endif

RDDSETDEFAULT( cRdd )

cArq:=  "dados01"
cind:=  "index01"
cTag1:= "tag01"
nFocus:= 1

lStatus:= .T.
if cRdd = "LETO"
   if leto_Connect( cPath ) == -1
      lStatus:= .F.
   endif
endif

if lStatus
   dbCreate( cPath + cArq, { {"CAMPO01","C",10, 0}, ;
      {"CAMPO02", "C", 10, 0} } )

   dbUseArea( .T., cRdd , cPath + cArq, cArq, .F., .F. )

   for nCont:= 1 to 100   
      dbAppend()
      replace CAMPO01 with strzero(nCont, len(CAMPO01)), ;
         CAMPO02 with str(nCont, len(CAMPO02))
   next

   ordCreate( cPath + cInd, cTag1, "CAMPO01",, .F. )

   // dbCommit()

   ordlistClear()
   ordListAdd( cPath + cInd, cTag1)
   ordSetFocus(nFocus)

   @ 1, 2 say "Rdd..............: " + cRdd
   @ 2, 2 say "Banco de Dados...: " + cPath + cArq
   @ 3, 2 say "Arquivo de Index.: " + cPath + cInd
   @ 4, 2 say "Index............: " + ordName( nFocus ) + "->" + ordKey( nFocus )
   browse( 5, 0, MaxRow(), MaxCol())

   dbCloseAll()

   if cRdd = "LETO"
      Leto_FErase( AtRepl( "\", cPath + cArq + ".dbf", "/" ) )
      Leto_FErase( AtRepl( "\", cPath + cInd + ".cdx", "/" ) )
   else
      Ferase( cPath + cArq + ".dbf" )
      Ferase( cPath + cInd + ".cdx" )
   endif

endif

return Nil
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

letodb->browse()

Mensagem por Toledo »

Amigos, andei fazendo alguns testes com o LetoDB, mas utilizei o TBrowse() e não o Browse.
Minduim escreveu:mas o acesso fora da rede mostrou-se comercialmente inviável, como por exemplo, acessar uma filial pela matriz ou a implantação de um pedido remoto por um representante, além de que o acesso, até que provem o contrário, só é feito pelo ip (xxx.xxx.xx.xx), não contemplando o acesso pelo endereço (www.xxxxx.xx.com);
Eu andei testando tanto em modo local (localhost ou por IP na rede local), bem como usando um endereço noip, por exemplo pctoledo.noip.me, então você pode configurar um servidor e redirecionar um endereço www.xxxx.com sem problema algum. É claro que a conexão remota vai depender muito da velocidade da sua Internet no servidor, bem como do terminal remoto.

Segue em anexo o demo que fiz os meus testes e vou deixar o LetoDB em execução no meu servidor para vocês fazerem um teste, basta executar o demoletodb.exe e selecionar a opção "Conexão Remota".

ATENÇÃO: vou deixar o LetoDB em execução no meu servidor hoje (24/08) até as 23 horas e amanhã (25/08) das 08:00 até as 23:00 horas (horário de SP).

Neste teste você podem incluir, alterar ou excluir os registros (registros com código até 5000), podem ficar a vontade. Faça uma inclusão com o seu nome para registrar a sua visita, que serão registrados com código acima de 5000, então evitem alterar ou excluir estes registros com código acima de 5000.

Abraços,
Anexos
demoletodbteste.zip
(1.11 MiB) Baixado 377 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

letodb->browse()

Mensagem por janio »

Ja ta funcionando?

Num to conseguindo conexão
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

letodb->browse()

Mensagem por Itamar M. Lins Jr. »

mas o acesso fora da rede mostrou-se comercialmente inviável, como por exemplo, acessar uma filial pela matriz ou a implantação de um pedido remoto por um representante, além de que o acesso, até que provem o contrário, só é feito pelo ip (xxx.xxx.xx.xx), não contemplando o acesso pelo endereço (www.xxxxx.xx.com);
Eu uso com nomes "xxx.no-ip.net" etc... pago serviço do no-ip para 25 empresas.
Funcionam todas a contento. Lógico que sabemos as limitações da ADSL. Porém relatórios de milhares de itens de até cinco filiais estão sendo gerandos em pouco tempo. LetoDb não é resposta para tudo tem suas limitações.
Todos os problemas que foram encontrados e DEVIDAMENTE mostrados através de exemplos simples foram corrigidos.

Eu não uso transações.
E é de praxe usarmos commit após um replace num ambiente de rede isso mesmo sem usarmos o LetoDb.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

letodb->browse()

Mensagem por Toledo »

Oi Janio, o LetoDB já está em execução no meu servidor!

Eu aqui não consigo me conectar através do meu noip, pois estou dentro da minha rede, então teria que testar fora da minha rede local, mas agora não teria como. Então se mais alguém puder testar, poste aqui se conseguiu.

[Editado]
O Jairo Maia já fez o seu cadastro aqui no meu servidor, então a conexão está funcionando.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

letodb->browse()

Mensagem por Itamar M. Lins Jr. »

Fiz outro cadastro. 25/08/14
Está ok.
Como havia dito minha ADSL 2Mb. Funcionou devidamente bem. Agora é testar com coisas mais complexas eu por exemplo abro mais de 8 DBF´s simultaneamente, são milhares de registros.

Código: Selecionar todos

sb->(OrdScope(0,strzero(sa->numero,9)+strzero(sa->modelo,2)))
sb->(OrdScope(1,strzero(sa->numero,9)+strzero(sa->modelo,2)))
Não uso o SET RELATION, e outras coisas que encontro aqui e percebo que diminuem a velocidade do sistema vou removendo, trocando por comandos ou funções com um melhor desempenho.
Não puxo todo DBF e jogo em uma ARRAY para usar em um COMBOBOX para fazer pesquisa, a pesquisa é feita quando o usuário precisar e é limitada em n registros.


Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Minduim
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 06 Abr 2011 13:02
Localização: Santo andré - SP

letodb->browse()

Mensagem por Minduim »

toledo,
baixei sua postagem, executei seu aplicativo teste e deixei meu nome registrado, perfeito;
agradeço sua pronta atenção;

mas também compilei seu demoletodb.prg e não obtive conexão?
Anexos
2014-08-25_101725.jpg
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

letodb->browse()

Mensagem por Toledo »

Minduim escreveu:mas também compilei seu demoletodb.prg e não obtive conexão?
A conexão remota com o meu servidor só vai funcionar com o demoletodb.exe que está no ZIP anexado na minha mensagem anterior. Se você for compilar o demoletodb.prg ai você teria que alterar o cIP:="pctoledo.noip.me" pelo endereço do seu noip ou outro endereço onde o seu LetoDB está sendo executado.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Responder