ola pessoal, uma dúvida, quando seleciono um indice pelo ORDSETFOCUS("indice1") criado, não será mais necessario usar o SET INDEX TO indice1, indice2 para deixar todos os indices abertos como se fazia no Clipper ?
SELECT 1
USE MERCADORIAS
INDEX ON codigo TAG indice1 TO mercadoria1
INDEX ON nome TAG indice2 TO mercadoria1
Para mudar a ordem em um arquivo de índice CDX:
ORDSETFOCUS("INDICE2")
Com esse comando todos os indices já serão abertos, sem precisar usar o SET INDEX TO indice1, indice2, etc
windows, xHarbour.
dúvida com SET INDEX TO
Moderador: Moderadores
- acelconsultoria
- Usuário Nível 3

- Mensagens: 231
- Registrado em: 10 Jan 2006 17:05
- Localização: Itápolis-SP
dúvida com SET INDEX TO
Olá, Porter.
É assim mesmo. Isso ocorre, porque os índices CDX, depois de criados pelo INDEX ON, são abertos automaticamente após o comando USE. Com isso, só é necessário você apontar a tag desejada, através do comando SET ORDER TO ou da função ORDSETFOCUS().
Tem esse tópico aqui abordando e explicando a situação com mais detalhes:
https://pctoledo.org/forum/viewto ... f=4&t=7399
E caso queria desabilitar a abertura automática dos índices, então você deve colocar no início do seu programa:
Espero ter ajudado !!! Abraços.
É assim mesmo. Isso ocorre, porque os índices CDX, depois de criados pelo INDEX ON, são abertos automaticamente após o comando USE. Com isso, só é necessário você apontar a tag desejada, através do comando SET ORDER TO ou da função ORDSETFOCUS().
Tem esse tópico aqui abordando e explicando a situação com mais detalhes:
https://pctoledo.org/forum/viewto ... f=4&t=7399
E caso queria desabilitar a abertura automática dos índices, então você deve colocar no início do seu programa:
Código: Selecionar todos
SET AUTOPEN OFFAdm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Consultoria e Projetos
-------------------------------------------------------
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
dúvida com SET INDEX TO
Olá!
No RDD CDX, se, e somente se, o nome do arquivo estrutural de índices (o arquivo .CDX único que contém todas as tags de índices), também conhecido como Order Bag, tiver o mesmo nome do arquivo .DBF e a opção SET AUTOPEN estiver ON, então, o comando USE detectará isto e abrirá o arquivo de índices automaticamente. Opcionalmente, se a opção SET AUTORDER for especificada, poderá ser especificada uma ordem inicial.
No RDD CDX, se, e somente se, o nome do arquivo estrutural de índices (o arquivo .CDX único que contém todas as tags de índices), também conhecido como Order Bag, tiver o mesmo nome do arquivo .DBF e a opção SET AUTOPEN estiver ON, então, o comando USE detectará isto e abrirá o arquivo de índices automaticamente. Opcionalmente, se a opção SET AUTORDER for especificada, poderá ser especificada uma ordem inicial.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
dúvida com SET INDEX TO
Amiguinhos,
Porter
No código abaixo você usa a todo momento este modo de abertura?
Em primeiro lugar você não deveria usar este método sempre ao abrir a tabela, pois o INDEX ON deve ser usado esporádicamente ou programáticamente.
Um .DBF precisa de arquivos acessórios .NTX ou .CDX mas estes não precisam ser criados a todo momento.
Você tem um arquivo MERCADORIAS, pode muito bem criar o indice-bag MERCADORIAS e quando o número de tags internas ultrapassarem 15 você pode criar mais um indice-bag, e então usar:
Se você só tem 1 índice por tabela pode usar o comando Auto Open para abri-los automáticamente.
Em tempo, vale dizer que a anos não uso o comando USE a não ser que eu queira abrir um arquivo em modo exclusivo.
A diferença deste comando no meu caso é abrir o .CDX de mesmo nome da tabela e evitar erro de abertura quando o mesmo já está aberto. O diferencial é, que se a tabela já estiver aberta e for dado um comando OPEN na mesma, será setada a área onde a tabela esta aberta atualmente.
Porter
No código abaixo você usa a todo momento este modo de abertura?
Código: Selecionar todos
SELECT 1
USE MERCADORIAS
INDEX ON codigo TAG indice1 TO mercadoria1
INDEX ON nome TAG indice2 TO mercadoria1
Um .DBF precisa de arquivos acessórios .NTX ou .CDX mas estes não precisam ser criados a todo momento.
Você tem um arquivo MERCADORIAS, pode muito bem criar o indice-bag MERCADORIAS e quando o número de tags internas ultrapassarem 15 você pode criar mais um indice-bag, e então usar:
Código: Selecionar todos
SELECT 1
USE MERCADORIAS
SET INDEX TO mercadorias, mercadoria1
...
SET ORDER TO mercadoria1
...
SET ORDER TO mercadorias
Em tempo, vale dizer que a anos não uso o comando USE a não ser que eu queira abrir um arquivo em modo exclusivo.
Código: Selecionar todos
#command OPEN <(db)> ;
[VIA <rdd>] ;
[ALIAS <a>] ;
[<new: NEW>] ;
[<ex: EXCLUSIVE>] ;
[<sh: SHARED>] ;
[<ro: READONLY>] ;
[INDEX <(index1)> [, <(indexn)>]] ;
=> iif( Select( <(db)> )==0, iif( !File( <(db)>+".CDX" ), ( Mensagem( "Arquivo "+<(db)>+" esta sem indices. Abrindo sem indices. Reorganiza primeiro" ), dbNetUseArea( <.new.>, <rdd>, <(db)>, <(a)>, if(<.sh.> .or. <.ex.>, !<.ex.>, NIL), <.ro.>, 0 ) ), ( dbNetUseArea( <.new.>, <rdd>, <(db)>, <(a)>, if(<.sh.> .or. <.ex.>, !<.ex.>, NIL), <.ro.>, 0 ), dbSetIndex( <(db)> ) ) ), ( dbSelectArea( <(db)> ) ) )
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
