Amigos,
Migrei a mais ou menos um ano para xHarbour 1.2.1 e uso DBFCDX e não tive tempo de "melhorar" minhas rotinas. Como terminei os famosos SPED'S, tirei um tempo para faz isso e me recordei de um detalhe já há muito esquecido. Eu usava Clipper 5.2e + Blinker 7 + Six e quando e no momento da inclusão de dados no banco eu fazia da seguinte forma:
SELE AL_CLIEN
DBSETORDER(0)
APPEND BLANK
Minha dúvida é quanto a necessidade do uso do DBSETORDER(0). Pelo que me recordo, eu usava este comando para forçar a atulização de todos os índices deste banco de dados, ou seja, que o novo registro fosse atulização em todos os arquivos de índices.
Isso é realmente necessário?
Att.
Júlio.
DBSETORDER(0)
Moderador: Moderadores
DBSETORDER(0)
Editado pela última vez por Pablo César em 30 Mai 2012 19:04, em um total de 1 vez.
Razão: O presente tópico foi movido da seção Harbour, uma vez que seu conteúdo não tem relação com os objetivos daquela seção, onde só podem constar dúvidas técnicas de programação diretamente relacionadas com o Harbour.
Razão: O presente tópico foi movido da seção Harbour, uma vez que seu conteúdo não tem relação com os objetivos daquela seção, onde só podem constar dúvidas técnicas de programação diretamente relacionadas com o Harbour.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
DBSETORDER(0): Desnecessário para atualizar indices...
EXEMPLO CODIFICAÇÃO PARA APRENDIZADO...
Código: Selecionar todos
*----------------------------------------------------------*
* INSERE NOVO REGISTRO
*----------------------------------------------------------*
NOME_TABELA->( DBAPPEND() )
*----------------------------------------------------------*
* ATRIBUI VALORES AOS CAMPOS
*----------------------------------------------------------*
NOME_TABELA->CAMPO_IND_ := REPL( 'A', 10 )
NOME_TABELA->DESCRICAO_ := 'CONTEUDO DO CAMPO: TODOS OS INDICES SÃO ATUALIZADOS AUTOMATICAMENTE'
*----------------------------------------------------------*
* SALVA ALTERAÇÕES DA TABELA
*----------------------------------------------------------*
NOME_TABELA->( DBCOMMIT() )
M., Ronaldo
by: IMATECH
IMATION TECNOLOGIA
by: IMATECH
IMATION TECNOLOGIA
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
DBSETORDER(0)
Olá!
Essa chamada de função é totalmente desnecessária. Todos os índices abertos são atualizados quando de uma inclusão de registro ou alteração de campos-chave.
Deve-se tomar o cuidado de manter todos os índices abertos, principalmente com o RDD DBFNTX. Já para o DBFCDX, se estiver configurado com AUTOPEN ativo, os índices são abertos automaticamente na abertura do respectivo DBF. Creio que o driver Six se comporte da mesma forma que o DBFCDX quanto a esta função.
Essa chamada de função é totalmente desnecessária. Todos os índices abertos são atualizados quando de uma inclusão de registro ou alteração de campos-chave.
Deve-se tomar o cuidado de manter todos os índices abertos, principalmente com o RDD DBFNTX. Já para o DBFCDX, se estiver configurado com AUTOPEN ativo, os índices são abertos automaticamente na abertura do respectivo DBF. Creio que o driver Six se comporte da mesma forma que o DBFCDX quanto a esta função.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
DBSETORDER(0)
Olá Jelias,
Quando vc usa DBSetOrder(0), você trabalha com o banco de dados sem nenhum indice ativo. Para voce ativar um indice na área, precisa especificar sua ordem, ou seja, tipo: DBSetOrder(3), seleciona o indice aberto na area do banco de dados, e na ordem 3. A ordem é a ordem usada na sequência de abertura dos indices.
Se você usar o comando DBSeek("cConteudo"), numa aéa sem indice ativo, você receberá o erro de: Área não indexada.
Não. Como foi dito acima, quando você salva rehostros num banco de dados, todos os indices ABERTOS são automaticamente atualizados.jelias escreveu:Minha dúvida é quanto a necessidade do uso do DBSETORDER(0). [...] Isso é realmente necessário?
Quando vc usa DBSetOrder(0), você trabalha com o banco de dados sem nenhum indice ativo. Para voce ativar um indice na área, precisa especificar sua ordem, ou seja, tipo: DBSetOrder(3), seleciona o indice aberto na area do banco de dados, e na ordem 3. A ordem é a ordem usada na sequência de abertura dos indices.
Se você usar o comando DBSeek("cConteudo"), numa aéa sem indice ativo, você receberá o erro de: Área não indexada.
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)
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)
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
DBSETORDER(0)
Amiguinho,
A simples movimentação do ponteiro pode fazer com que ocorra esta atualização. A atualização de registros na tabela podem ocorrer:
- Se voce usar um SKIP
- Se voce usar um COMMIT
O dbSetOrder(0) pode provocar este procedimento inadivertidamente pois ao ser usado, outras engrenagens podem sofrem a ação do movimento. Mas ele não foi projetado para tal fim.
Sugestão é seguir o padrão. Usar comandos que foram feitos para o real intuito. Usar o dbSetOrder() para este fim é como bater pregos com martelo de bater carne. Funciona, mas não foi projetado para isto.
A simples movimentação do ponteiro pode fazer com que ocorra esta atualização. A atualização de registros na tabela podem ocorrer:
- Se voce usar um SKIP
- Se voce usar um COMMIT
O dbSetOrder(0) pode provocar este procedimento inadivertidamente pois ao ser usado, outras engrenagens podem sofrem a ação do movimento. Mas ele não foi projetado para tal fim.
Sugestão é seguir o padrão. Usar comandos que foram feitos para o real intuito. Usar o dbSetOrder() para este fim é como bater pregos com martelo de bater carne. Funciona, mas não foi projetado para isto.
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.
DBSETORDER(0)
Amigos,
Obrigado a todos pelo esclarecimento.
Abraço.
Júlio.
Obrigado a todos pelo esclarecimento.
Abraço.
Júlio.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
