Clipper On Line • Ver Tópico - letodb->browse()

letodb->browse()

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

letodb->browse()

Mensagempor Minduim » 21 Ago 2014 15:35

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
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
Minduim
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 59
Data de registro: 06 Abr 2011 13:02
Cidade/Estado: Santo andré - SP
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

letodb->browse()

Mensagempor sygecom » 23 Ago 2014 11:00

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
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: 7005
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

letodb->browse()

Mensagempor Minduim » 23 Ago 2014 14:33

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;
Minduim
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 59
Data de registro: 06 Abr 2011 13:02
Cidade/Estado: Santo andré - SP
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

letodb->browse()

Mensagempor Itamar M. Lins Jr. » 23 Ago 2014 18:56

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

letodb->browse()

Mensagempor Jairo Maia » 23 Ago 2014 20:14

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)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

letodb->browse()

Mensagempor Minduim » 24 Ago 2014 11:56

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;
Minduim
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 59
Data de registro: 06 Abr 2011 13:02
Cidade/Estado: Santo andré - SP
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

letodb->browse()

Mensagempor janio » 24 Ago 2014 12:51

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
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

letodb->browse()

Mensagempor Minduim » 24 Ago 2014 14:51

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
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
Minduim
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 59
Data de registro: 06 Abr 2011 13:02
Cidade/Estado: Santo andré - SP
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

letodb->browse()

Mensagempor Toledo » 24 Ago 2014 20:24

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 205 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 de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

letodb->browse()

Mensagempor janio » 25 Ago 2014 08:48

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 de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

letodb->browse()

Mensagempor Itamar M. Lins Jr. » 25 Ago 2014 09:33

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

letodb->browse()

Mensagempor Toledo » 25 Ago 2014 09:40

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 de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

letodb->browse()

Mensagempor Itamar M. Lins Jr. » 25 Ago 2014 10:05

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.

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

letodb->browse()

Mensagempor Minduim » 25 Ago 2014 10:29

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
Minduim
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 59
Data de registro: 06 Abr 2011 13:02
Cidade/Estado: Santo andré - SP
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

letodb->browse()

Mensagempor Toledo » 25 Ago 2014 10:39

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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Próximo



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 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