Clipper On Line • Ver Tópico - Criar Índice CDX em Modo Compartilhado

Criar Índice CDX em Modo Compartilhado

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

Moderador: Moderadores

 

Mensagempor MARCELOG » 09 Out 2006 18:02

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
Editado pela última vez por MARCELOG em 10 Out 2006 09:05, num total de 1 vezes
Avatar de usuário

MARCELOG
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 546
Data de registro: 15 Mar 2005 16:54
Cidade/Estado: Divinópolis/MG
Curtiu: 0 vez
Mens.Curtidas: 6 vezes

Mensagempor momente » 09 Out 2006 18:18

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!!! :|<
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Avatar de usuário

momente
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 496
Data de registro: 03 Mar 2005 11:53
Cidade/Estado: São Carlos-SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor vagucs » 09 Out 2006 18:35

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.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar de usuário

vagucs
Membro Master

Membro Master
 
Mensagens: 1466
Data de registro: 10 Jul 2004 10:45
Cidade/Estado: Ipanema - MG
Curtiu: 1 vez
Mens.Curtidas: 19 vezes

Mensagempor Dri » 09 Out 2006 19:09

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!).
Abraços!
Dri (F)
Dri
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 28
Data de registro: 06 Set 2004 20:09
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor Dri » 09 Out 2006 19:14

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!!!
Abraços!
Dri (F)
Dri
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 28
Data de registro: 06 Set 2004 20:09
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor MARCELOG » 09 Out 2006 19:22

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

MARCELOG
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 546
Data de registro: 15 Mar 2005 16:54
Cidade/Estado: Divinópolis/MG
Curtiu: 0 vez
Mens.Curtidas: 6 vezes

Mensagempor momente » 10 Out 2006 10:38

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
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
Avatar de usuário

momente
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 496
Data de registro: 03 Mar 2005 11:53
Cidade/Estado: São Carlos-SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor vagucs » 10 Out 2006 11:04

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.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar de usuário

vagucs
Membro Master

Membro Master
 
Mensagens: 1466
Data de registro: 10 Jul 2004 10:45
Cidade/Estado: Ipanema - MG
Curtiu: 1 vez
Mens.Curtidas: 19 vezes

Mensagempor rochinha » 10 Out 2006 13:02

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:

http://www.pctoledo.com.br/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 :?)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

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

Mensagempor Dri » 10 Out 2006 13:37

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!!!
Abraços!
Dri (F)
Dri
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 28
Data de registro: 06 Set 2004 20:09
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Alteração REGISTRO - Lentidão em rede

Mensagempor rochinha » 10 Out 2006 19:04

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.

;
; 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 :?)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Mensagempor vagucs » 10 Out 2006 21:10

Rochinha esta foi 10!!!!!!!!!!!!!!


:{ :{ :{ :{ :{ :{ :{
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar de usuário

vagucs
Membro Master

Membro Master
 
Mensagens: 1466
Data de registro: 10 Jul 2004 10:45
Cidade/Estado: Ipanema - MG
Curtiu: 1 vez
Mens.Curtidas: 19 vezes

Mensagempor Dri » 11 Out 2006 11:02

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! :(
Abraços!
Dri (F)
Dri
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 28
Data de registro: 06 Set 2004 20:09
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor vagucs » 11 Out 2006 14:31

qual sua religiao Dri?

Sem mais
Wagner Nunes
www.vagucs.com.br
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar de usuário

vagucs
Membro Master

Membro Master
 
Mensagens: 1466
Data de registro: 10 Jul 2004 10:45
Cidade/Estado: Ipanema - MG
Curtiu: 1 vez
Mens.Curtidas: 19 vezes

Mensagempor rochinha » 11 Out 2006 18:41

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 :?)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Anterior Próximo



Retornar para Banco de Dados

Quem está online

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