Página 2 de 3

Enviado: 09 Out 2006 18:02
por MARCELOG
Desde quando eu era pequenininho lá em Barbacena, só é recomendável criar índices com uso exclusivo do arquivo.
Todavia, dá prá criá-los em modo compartilhado, mas não há garantia de integridade dos dados.

MarceloG

Enviado: 09 Out 2006 18:18
por momente
Amigos,

Essa eu realmente não sabia, consigo através do indice cdx fazer pesquisa de parte de uma string? Por exemplo :

No Arquivo -
Rogerio LUIS Martins
Rogerio LUIS Alfredo
LUIS Sebastião

e digitar para pesquisa LUIS o sistema consegue me devolver os nomes acima com LUIS? Afinal qual a melhor saida para isso?

Realmente não sabia que existia uma função para isto!

Obrigado amigos!!! :|<

Enviado: 09 Out 2006 18:35
por vagucs
Minha dica.

O INDICE CDX é ótimo e as rotinas SX_SETSCOPE com certeza te ajudarão


A rotina ORDSCOPE sempre existe no RDD DBFCDX da COMIX que faz parte do Clipper 5.3 com o nome de _DBFCDX.LIB, nela o ORDSCOPE já exista a mais de 10 anos atras.

Como você não quer usar libs de terceiros, acho interessante compilar em Clipper 5.3 ou xHarbour, trabalho de fazer a compilação em ambos será o mesmo.

Enviado: 09 Out 2006 19:09
por Dri
Hi, Momenté e Vanger!

Momenté, dá um tempo aí nas suas conclusões...
consigo através do indice cdx fazer pesquisa de parte de uma string?
Um "Momenté" (adoro trocadilhos! rsrsrsrs)
Eu tenho um problema sério... Minha memória é inferior aos 48 Kbytes do TK-90X (lembram dele? eu, claro que não lembro! É mais velho que eu! Só que meu pai tem um... Não vende! Não troca! Não dá! Não empresta! É a Ferrari dele! E o mais incrível: Ele tem a embalagem original! Por isso sei que ele tem 48 Kb de RAM! rsrsrsrs)
Eu tenho quase certeza absoluta que ninguém afirmou isto.
O que afirmamos, a partir do Maligno, é que a lib SIX2, com índices NSX, é possível fazer uma pesquisa por parte de uma string.
Quanto ao índice CDX, o que foi afirmado é que é possível estabelecer um range para o filtro, lembrando que o 0 (zero) define o início da range e o 1 (um) define o final da range.
Na SIX2, índices NSX, depois do filtro, a range tinha que ser "desligada". Acredito que no DBFCDX.LIB, também!

Vagner, pelos posts aqui que pesquisei, sei que você trabalha e usa o xHarbour.
Fale-me dele, por favor (prós e contras!).

Enviado: 09 Out 2006 19:14
por Dri
hihihihihihih

Bah, tchê!

Escrevi "um" entre parênteses e o sistema do fórum interpretou que eu queria um emoticom para "umbrella" (guarda-chuva)... rsrsrsrsrsrsrsrs

Deduções errôneas, as mesmas que o Excel e o Word me irritam tanto!!!

Enviado: 09 Out 2006 19:22
por MARCELOG
Sobre o driver six, cdx, etc. vejam isto.

http://www.x-hacker.org/ng/six3/index-2.html

Tá em "ingleis", mas e daí uai.

MarceloG.

Enviado: 10 Out 2006 10:38
por momente
Amiguinha Dri,

Desculpa eu pegar carona contigo, é que este assunto muito me interessa, pois tenho uma rotina danada pra fezer essa pesquisa e derepente poder troca-la por uma simples função me deixou realmente interessado.

Uso cdx a tempo, e gostaria realmente de saber como posso pesquisar parte de uma string usando apenas uma função, sei la, preciso realmente compilar com clipper53, ou posso usar algumas libs do 53b com 52e?

Valeu pessoal! :)Pos

Enviado: 10 Out 2006 11:04
por vagucs
Tem algumas libs do 5.3 que podem ser usadas no 5.2, o PCODE de ambos os clipper muda em pouca coisa, eu mesmo uso a LLIBG no clipper 5.3 e ela fica bem mais rapida, uso em modo real ao inves do modo protegido, so nunca tentei usar as libs de RDD pois nao tenho certeza se elas tem a mesma estrutura, mas seria interessante, se o RDD da comix funciona com o Clipper 5.2 seria ideal.

Enviado: 10 Out 2006 13:02
por rochinha
Amiguinhos

Acabei de postar um tópico com uma função bem interessante. Não tive tempo para analisa-la e acrescentar no array que a mesma criaa coluna que armazena o recno() do registro.

Quem fizer esta alteração por favor poste a mesma aqui neste tópico para que eu faça a referida modificação.

Vejam em Super seleção de dados com ordenação dos registros:

https://pctoledo.org/forum/viewto ... 8325#18325

Esta função recebe os parametros via comando, interpreta, cria o array e gera o arquivo .DBF com a estrutura pedida no comando e os registros selecionados.

Puro Clipper.

@braços :?)

Criar Índice CDX em Modo Compartilhado - N O V I D A D E S

Enviado: 10 Out 2006 13:37
por Dri
Hi!

Nas minhas andanças pela NET, pesquisando no google artigos, fóruns, materiais... e outras firulas a respeito do xHarbour, VB, VFP... patati, patatá... e também algo mais profundo a respeito de índices CDX, me deparei num fórum (por ética, não citarei qual) onde há um tópico bem extenso sobre alguns testes com índices NTX e CDX. Uma pessoa defende o NTX; a outra, defende o CDX.

Tá interessante e postaram um teste que deixou-os alarmados (não esperavam!) pelo resultado (eu idem... fiz os testes e quase caí das pernas, tchê!).
E pior, um alega certos resultados em seus testes; outro alega outros resultados.

Vou postar os testes, mas antes quero fazer uma pergunta:

Ao abrir um arquivo com índices CDX e há índices com o mesmo nome do arquivo DBF (por exemplo, clientes.dbf e o índice, clientes.cdx), o índice é aberto junto automaticamente?
Os meus não abrem!

Agora, por favor, criem um arquivo DBF (vamos chamar de TOLEDO, para facilitar) com apenas um campo char, de tamanho 10, chamado NOME e insiram neste DBF cinco registros nesta seqüência:

MALIGNO
VAGNER
ADRIANA
MARCELO
ROCHINHA


Concluído esta estapa, compilem, linkem e rodem este teste aí embaixo (exemplo copiado lá do outro fórum) com índices NTX:
clear
use toledo new // Abre o arquivo num nova área
index on nome to toledo // Indexa o arquivo por nome com índices NTX
set index to toledo // Abre o índice (eu sei, não precisava esta linha!)
run dir TOLEDO.NTX // Exibirá o arquivo TOLEDO.NTX
inkey(0)
clear
dbedit() // Exibiu os dados indexados por nome, certo?
ferase("TOLEDO.NTX") // Comigo, o índice aberto FOI excluído!
clear
run dir TOLEDO.NTX // Não me mostrou o arquivo (foi mesmo excluído!)
inkey(0)
seek pad("ROCHINHA",10) // Comigo, o SEEK funcionou!
? found() // Comigo, indicou que o SEEK foi mesmo sucesso (.T.)
inkey(0)
dbedit() // Comigo, exibiu "ROCHINHA" e "VAGNER"!
quit
E aí? Comportou-se com vocês da mesma forma que comportou-se comigo?

Well... Por favor, façam mais este então só que agora com índices CDX:
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
DBSETDRIVER("DBFCDX")
clear
use toledo new // Abre o arquivo num nova área
index on nome tag nome // Indexa o arquivo por nome com índices CDX
set index to toledo // Abre o índice (eu sei, não precisava esta linha!)
run dir TOLEDO.CDX // Exibirá o arquivo TOLEDO.CDX
inkey(0)
clear
dbedit() // Exibiu os dados indexados por nome, certo?
ferase("TOLEDO.CDX") // Comigo, o índice aberto FOI excluído!
clear
run dir TOLEDO.CDX // Não me mostrou o arquivo (foi mesmo excluído!)
inkey(0)
seek pad("ROCHINHA",10) // Comigo, o SEEK funcionou!
? found() // Comigo, indicou que o SEEK foi mesmo sucesso (.T.)
inkey(0)
dbedit() // Comigo, exibiu "ROCHINHA" e "VAGNER"!
quit
(Neste exemplo, não esqueçam de linkar a lib DBFCDX.LIB).

E aí? Qual foi o comportamento? Houve diferenças de comportamentos entre o NTX e o CDX?
Comigo não, só que o interessante... Eu consegui excluir o arquivo de índice que estava aberto, tanto o NTX quanto o CDX.
Lá no outro fórum, os testes de um dos caras se comportou como o meu; os testes de outro cara, comportou-se como o meu só nos índices CDX.
Segundo o cara que os testes se comportaram diferentes para NTX e CDX, afirmou que o arquivo de índice NTX não foi excluído (disse ele que deu o erro DOS de arquivo em uso).

Não esperava também estes resultados...
Se com vocês deu o mesmo resultado, seja no NTX, CDX ou ambos, alguém poderia me explicar porque?
E ainda, se o arquivo foi excluído, porque a indexação é mantida enquanto eu estiver com o programa em execução?
Lá acreditam estar na memória... Não sei não... Depois digo porque acho que não!

Aguardo e com muita curiosidade!!!

Alteração REGISTRO - Lentidão em rede

Enviado: 10 Out 2006 19:04
por rochinha
Amiguinha

Faça os mesmo testes no DOS puro, sem prompt e sem janelas.

Desligue o cache SMARTDRV e reveja os resultados.

Na verdade quando se trabalha com Windows e principalmente com Clipper é necessário ajustar algumas chaves no registro para evitar estes transtornos.

Veja neste trecho de script de meu instalador padrão que eu configuro algumas chaves do registro para melhorar a resposta de rede de meus aplicativos DOS.

Código: Selecionar todos

;
; Resolve problemas de rede com o Clipper
;
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\"     ; ValueType: dword; ValueName: "EnableOpLocks"          ; ValueData: "0"; Components: clipper
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\"     ; ValueType: dword; ValueName: "CachedOpenLimit"        ; ValueData: "0"; Components: clipper
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parameters\"; ValueType: dword; ValueName: "UseOpportunisticLocking"; ValueData: "0"; Components: clipper
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parameters\"; ValueType: dword; ValueName: "UtilizeNtCaching"       ; ValueData: "0"; Components: clipper
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parameters\"; ValueType: dword; ValueName: "UseLockReadUnlock"      ; ValueData: "0"; Components: clipper

;
; Melhora resposta do cache do Windows
;
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Compress Old Files"          ; flags: DeleteKey         ; Components: desempenho\cache
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\ClassId key"     ; flags: DeleteKey         ; Components: desempenho\cache
@braços :?)

Enviado: 10 Out 2006 21:10
por vagucs
Rochinha esta foi 10!!!!!!!!!!!!!!


:{ :{ :{ :{ :{ :{ :{

Enviado: 11 Out 2006 11:02
por Dri
Hi!

Amiguinho Rochinha, meu nível de programação não chega ao de vocês.
E meu entendimento do registro do Windows, de sistema operacional e de rede, é num nível tão baixo que não entendi o que você postou... :(

Só nas horas vagas estou envolvida com o Clipper, e ainda tenho que conciliar o tempo também com a família, namoro (rsrsrsr), religião e lazer!
Acredito que vou continuar sem aprender o que deveria, pelo menos, no que diz respeito a redes, sistema operacional e o registro do Windows!

Não me interprete mal! O que você postou NÃO foi em vão e será muito útil para outros do grupo! E deve ter sido uma senhora solução, tanto que o Vagner te reverenciou... Só que o que você postou é avançado demais pra mim...

Bom, sobre o DOS puro que você citou, é possível isto no Windows XP, já que o DOS é emulado? Já usei o DOS puro algumas vezes quando tinha o Windows 98. Lembro que ficava uma carroça o programa... Pra compilar e linkar então... Bah! Horrível!

Agora, diz lá, sobre o que postei, de excluir um arquivo CDX em uso, e pior, excluir e a ordem continuar, as configurações que você faz em algumas chaves do registro são (também!) para resolver este problema? Então ele existe de fato? No DOS puro, eu não conseguiria remover o arquivo CDX em uso? É isto?

Obrigada, e desculpe perguntar tudo de novo! :(

Enviado: 11 Out 2006 14:31
por vagucs
qual sua religiao Dri?

Sem mais
Wagner Nunes
www.vagucs.com.br

Enviado: 11 Out 2006 18:41
por rochinha
Amiguinho Vagner,

Obrigado pelo apoio, voce também é 10!!!

Amiguinha Dri,

É basicamente isto mesmo, no DOS puro mesmo dentro de seu aplicativo por só existir uma sessão aberta é impossivel fechar um dos arquivos abertos.

Já em se tratando de Windows algumas coisas são possiveis de ocorrer com o mesmo e um exemplo é a liberação do LOCK imposto ao arquivo.

Uma coisa que me encafifa e ainda não me pus a testar(talvez já tenha testado e resolvido o problema) era o fato de travar um registro em uma estação e outra estação ao solicitar o travamento do mesmo acabava destravando o registro em todas estações e quando a primeira estação tentava destravar o registro ativo acabava deixando-o travado.

Erro de programação?, não, mas falta de afinamento da forma de uso dos comandos de rede, não bastando somente usá-los mas aliá-los a outras funções mais elaboradas para teste e conclusão.

Portanto voce deve tomar muito cuidado ao produzir os comandos de travamento e destravamento, usar funções que testes os travamentos antes de repassar dados aos .DBF e principalmente quanto aos COMMITs sendo executados.

Quanto ao fato de se usar ou não o CDX e que resultados feitos anteriormente não me levaram a abandonar o seu uso mesmo porque este é um erro intermitente e minhas rotinas não usam o mesmo método empregado no teste afim de provocar o mesmo problema.

Quanto ao fato de voce afirmar que é novata, para com isto, vamos no nivelar no mesmo patamar, eu, voce, Vagucs, Maligno, Dudu, Toledo, Evolver e mais 1500 forenses que tem aqui a sua marca.

Clipper, Registro do Windows, OOP, Harbour com X ou sem X, Fox, muitas vari''aveis de uma mesma esfera, a da programação e repito aqui todos tem o seu valor.

Melhor conhecer um pouco de tudo que que esperar a hora de aprender isto e ser um pouco tarde.

@braços :?)