Página 1 de 1
DBEDIT - Compartilhamento (?)
Enviado: 13 Mar 2009 13:54
por Netavin
Boa tarde a todos !
Eu abro a tabela no servidor em modo compartilhado,para fazer uma consulta. Esta consulta é feita com dbedit(). Porém, ao abrir esta consulta em outro terminal ocorre o seguinte: demoooooorrrraaaaa para aparecer a tela com a consulta e outras vezes não abre e informa que a tabela já está em uso.
Podem me dar um socorro, por favor ?
[]´s
Netavin.
Re: DBEDIT - COMPARTILHAMENTO (?)
Enviado: 13 Mar 2009 14:01
por sygecom
Você esta usando algum filtro antes de mostrar o DBEDIT() como por exemplo um SET FILTER TO ?
Mostre parte do codigo onde começa abrindo o DBF até mostrar a tela do dbedit()
Outras coisa, pq não usa TBROWSE ao invés de DBEDIT() o TBROWSE é mil vezes melhor que o DBEDIT()
Re: DBEDIT - COMPARTILHAMENTO (?)
Enviado: 14 Mar 2009 08:41
por Eolo
Qual servidor vc está usando?
Pergunto porque eu também enfrentava esse problema com um "servidor XP", mesmo usando xHarbour/CDX e Tbrowse(): quando um segundo usuario abria a mesma tabela, ficava muito lento para os dois; só com um usuário, a navegação era normal. E isso só se resolveu com um servidor 2003 (dedicado)...
Re: DBEDIT - COMPARTILHAMENTO (?)
Enviado: 16 Mar 2009 12:48
por Netavin
Bom dia amigos !
Eis a rotina que uso para consultar através do dbedit(). É uma rotina de terceiro que adaptei para meu uso.
O servidor é XP assim como os 2(dois) terminais.
Agradeço a ajuda de todos !
[]´s
Netavin
Re: DBEDIT - COMPARTILHAMENTO (?)
Enviado: 16 Mar 2009 21:15
por alaminojunior
Pode até não servir de nada, mas eu tenho dois clientes que usam o seguinte:
Servidor com Windows 2000 Server ou XP Profissional, processador em torno de 1500~1800 Mhz e Ram com 256MB;
Sistema compilado em xHarbour 0.99.70 usando GTWVT e DBF/CDX. Todos eles têem 5 ou 6 terminais, inclusive alguns deles são máquina antigas, como Pentium 133, usando compartilhamento normal ou TS, usando o mesmo programa e tabelas visualizadas com Tbrowse, e nestes Tbrowses eu costumo exibir dados provenientes de várias tabelas, como por exemplo:
uma consulta de ordens de serviço onde o tbrowse exibe alguns dados principais do cliente, e atravez de funções, busca o veículo, o proprietário, a situação do serviço, a ultima ocorrencia, etc.... em outras tabelas, ilustrando melhor...:
Código: Selecionar todos
of4:= tbcolumnnew( oCAB, { || " "+ tran(osenum,"@999999")+" "+subs(oseplc,1,3)+"-"+subs(oseplc,4,4)+" "+vercar(oseplc)+" "+versit(osesit)+" "+tran(osekm,"@ZE999,999")+" "+verult(oseplc)+" "})
Ou seja, de certa forma isso acaba pesando na exibição, e mesmo assim ocorre tudo normalmente.
Sendo assim pergunto: não seria algum problema entre versões do xHarbour ?
E além do mais eu aconselho o seguinte: Em vez de usar dbedit, vale a pena trocar tudo para Tbrowse. Não é difícil, basta dedicar algumas horas para entender o funcionamento dele, sem contar as vantagens dele sobre o DbEdit. Aproveitando.....o dbedit é o tbrowse com o freio de mão puxado, sendo assim.....
Pense com carinho.
Re: DBEDIT - COMPARTILHAMENTO (?)
Enviado: 17 Mar 2009 08:27
por Hasse
Bom dia.
Concordo com o Alamino...
Também tenho 4 clientes que rodam um mesmo programa, com Servidor dedicado, Windows Server 2003, Switch de 100 mBits, usando entre 5 e 15 terminais.
Mesmo com terminais com menos recursos que os acima mencionados, usando o TBrowse() os dados "voam". Pode grudar o dedão no PgDown ou PgUp que não há interrupções, mesmo com índice ativo. Em alguns casos tenho mais 40 arquivos DBF / CDX abertos ao mesmo tempo.
Em algumas situações são 2 arquivos ativos, ou seja, por exemplo, a metade esquerda da tela com os dados do arquivo UM (arquivo principal), e a metade direita apresentando dados do arquivo DOIS (dados complementares), com detalhes da linha/item que está no lado esquerdo da tela.
É verdade que esta navegação é um pouco mais lenta, mas nada preocupante. O DBSeek() funciona rapidissimo.
Outra detalhe. A conversão do DBEdit() para o TBrowse() é muito tranquila, e depois que você fez umas 2 ou 3 migrações, você pega o jeito, e faz isto em menos de 20 minutos cada. Mesmo para arquivos insignificantes eu uso o TBrowse(), seguindo um esqueleto padrão, onde mudo somente o nome do arquivo.
Também tenho um caso (um programa para meu uso, na manutenção junto aos clientes) em que uso somente UM TBrowse() que abre uns 15 arquivos DBF/CDX. Neste caso fica evidente os poucos recursos de edição disponíveis, pois, neste caso, torna-se extremamente complicado criar um programa de mantenha a coerência/validação dos dados.
A única diferença é que eu não uso tela gráfica.
Re: DBEDIT - COMPARTILHAMENTO (?)
Enviado: 17 Mar 2009 08:53
por Eolo
Vendo a rotina que o Netavin postou, eu acho que o problema não é do Dbedit nem da rede, não. Antes de trocar o Dbedit pelo Tbrowse, precisava ver o seguinte:
1. a indexação, logo no começo: embora ela só seja feita se o NTX não existir, o que vai acontecer se 2 usuários chegaram nesse ponto ao mesmo tempo? Precisa controlar isso.
2. Netavin, troque o NTX pelo CDX (se é que vc ainda não trocou). Faz uma grande diferença na velocidade.
3. quanto ao comando
"Sum ttm3 to...":
3.1. ele em si já explica o que o Netavin disse. Essa soma deveria estar pronta pra uso, em algum outro lugar. Se o DBF for meio grandinho, a resposta do comando vai mesmo demorar pra aparecer.
demoooooorrrraaaaa para aparecer a tela com a consulta...
(notem que o Netavin diz que demora pra aparecer a tela e não que a navegação é lenta...)
3.2. será que esse comando SUM não tenta bloquear o DBF e aí, quando tem outro usuário usando, ele não consegue entrar?
outras vezes não abre e informa que a tabela já está em uso
3.3 independente do 3.2, se o DBF é dinâmico (vai sofrendo atualizações), eu acho que ele deveria ser bloqueado antes da soma. Se não bloquear e outro usuário alterar algum valor durante a operação, a soma vai sair errada.
4. o SET DELETED acho que está em lugar errado. Ele deveria vir lá no começo, antes da indexação. Do jeito que está:
4.1. o comando SUM pode estar somando registros deletados, não desejados.
4.2. será que o NTX não se "corrompe"? Se ele foi criado com SET DELE OFF e depois, para usar, foi setado ON, como ficam os registros deletados?
5. acho que a função de usuário FU_AUX está "sobrando". O que está lá, basicamente, já é default do Dbedit(). Netavin, elimine a função de usuário e rode o programa. Você vai ver que o ESC, as setas de direção, etc vão estar lá.
Re: DBEDIT - COMPARTILHAMENTO (?)
Enviado: 18 Mar 2009 12:37
por Netavin
bom dia a todos !
Vou fazer as alterações indicadas e testar. Posto os resultados tão logo termine.
Quanto ao uso do Tbrowse ... gostaria imensamente de utilizá-lo. Tentei aprender mas me enrosquei em algumas coisas, e não me sinto muito a vontade para ficar "importunando" os amigos do Fórum. Só mesmo quando necessito com certa urgência é que venho até vocês para pedir uma ajuda.
Sei que muitos amigos já se dispuseram a me ajudar a aprender o Tbrowse ... mas daí sei que vou tomar muito tempo dos Mestres.
Um grande abraço a todos !!!
Netavin
Re: DBEDIT - COMPARTILHAMENTO (?)
Enviado: 18 Mar 2009 13:22
por alaminojunior
Rotina básica contendo o tbrowse visualizando uma tabela.
Código: Selecionar todos
Function Busca
local btel:= savescreen(10,03,24,79) // salva a tela
select cdpre000 // seleciona a tabela requerida
ordsetfocus("indpre02") // ordena
dbgotop() // manda o ponteiro pro topo da tabela
bsu4:= tbcolumnnew( , { || space(1)+preorg+space(2)+predsc+" "+tran(prevnd,"@E 999,999.99")+space(2)+tran(preest,"@E 999,999.99")+space(1)}) // bsu4 é a variável que contém o que vai ser exibido.
bsu3:= tbrowseDB(11,04,18,76) // esse cara define as coordenadas, igual as coordenadas do dbedit
bsu3:colorspec:= "n/w*,gr+/b,n+/w*,w/n*,g+/gr" // cores do que vai ser exibido
bsu4:defcolor:= {5} //cor padrão
bsu4:colorblock:= {|bsu3| iif(preest < 1 , {3,4},{1,2})} // essa é legal, ele define uma determinada cor se algum dado satisfizer uma condição
bsu3:addcolumn(bsu4) // essa é quem vai adicionar as colunas (note que bsu4 já foi declarado lá em cima)
do while .t. // laço do while para o tbrowse ficar dentro (não necessário)
Do while !bsu3:stabilize() // esse laço maluco, é que faz a distribuição dos dados na tela, enquanto não estabilizar
Enddo // a exibição, ele não sai
@ 20,04 say subs(preobs, 1,40) colo "b+/w"
@ 21,04 say subs(preobs,41,40) colo "b+/w"
tempo:= inkey(3) // daqui pra frente é igual ao dbedit
do case
case tempo = 0
loop
case tempo == K_DOWN
bsu3:down()
bsu3:refreshcurrent() // "refresca" o registro corrente, caso haja alguma alteração
loop
case tempo == K_UP
bsu3:up()
bsu3:Refreshcurrent()
loop
case tempo == K_PGUP
bsu3:pageup()
bsu3:RefreshAll() // "refresca" toda a tabela
loop
case tempo == K_PGDN
bsu3:pagedown()
bsu3:RefreshAll()
loop
case tempo = K_ESC
restscreen(10,03,24,79,btel)
select cdios000
return .f.
case tempo = K_ENTER
restscreen(10,03,24,79,btel)
select cdios000
return .t.
endcase
enddo
Re: DBEDIT - COMPARTILHAMENTO (?)
Enviado: 18 Mar 2009 14:11
por Netavin
Boa tarde amigos !!
Vô eolo. De fato aquela função estava sobrando. "Não infrói e não contribói". Esta informação serve até para a pessoa que fez esta rotina.
Inseri o SET DELE ON no início, logo após a abertura do DBF (compartilhado).
Quanto a somar o saldo "online/em tempo de execução", poderia até criar um campo no DBF com esta finalidade e "puxá-lo" quando for preciso.
Porém, o DBF é tão pequeno que não atrapalha a velocidade. O total de registro hoje está em torno de 1.800. Quando muito chega a 3.000. Mas ficou anotado para uma futura alteração, quando for necessário.
No tocante ao índice, vou continuar com o NTX. Até o momento não apresentou problemas. Problemas eu tinha logo no inicio, quando comecei a codificar o sistema. Mas era por inexperiência.
Amigo alumínio.
Achei facílimo seu exemplo de uso do Tbrowse. Vou estudá-lo e adaptá-lo ao meu sistema. Pois hoje, em lugares que eu poderia usar o Dbedit ou o Tbrowse, eu uso um artifício não muito elegante de mostrar os dados ao cliente. (Readme.com)
Só tenho a agradecer, não só aos amigos aludidos acima, mas a todos os que sempre me auxiliaram. Elencar seus nomes é quase impossível, pois correria o risco de cometer injustiça.
Um abraço a todos !
Agradeço de coração.
Netavin
Re: DBEDIT - COMPARTILHAMENTO (?)
Enviado: 18 Mar 2009 14:16
por alaminojunior
Amigo alumínio.

Re: DBEDIT - COMPARTILHAMENTO (?)
Enviado: 18 Mar 2009 16:25
por Netavin
Amigo alaminojunior !!!

)
Fiz uma brincadeira com você. Foi para alegrar a conversa mesmo. ehehe
Esse sou eu mesmo. Pergunte a todos que me conhecem e lhe dirão que a cada 10 palavras minhas, 9 são de "gracinhas".
O alumínio tem um brilho peculiar. Vc tbm tem seu brilho.
:xau
Forte abraço amigo !
Netavin.
Re: DBEDIT - COMPARTILHAMENTO (?)
Enviado: 18 Mar 2009 16:39
por alaminojunior
kkkkkkkkkkkk
Figura ....!
({)
Re: DBEDIT - COMPARTILHAMENTO (?)
Enviado: 19 Mar 2009 10:00
por sygecom
Olá Netavin,
Já tentou usar o DBEDIT do topico abaixo?
viewtopic.php?f=43&t=7537&p=41336&hilit=dbedit#p41336