Clipper On Line • Ver Tópico - DBSETORDER(0)

DBSETORDER(0)

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

Moderador: Moderadores

 

DBSETORDER(0)

Mensagempor jelias » 30 Mai 2012 11:39

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.
Nota de Moderação:
Pablo César: 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
jelias
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 249
Data de registro: 27 Ago 2008 11:32
Cidade/Estado: Minas Gerais
Curtiu: 0 vez
Mens.Curtidas: 16 vezes

DBSETORDER(0): Desnecessário para atualizar indices...

Mensagempor Imatech » 30 Mai 2012 13:40

EXEMPLO CODIFICAÇÃO PARA APRENDIZADO...

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

Imatech
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 350
Data de registro: 24 Ago 2010 23:48
Cidade/Estado: Goiânia-GO
Curtiu: 4 vezes
Mens.Curtidas: 27 vezes

DBSETORDER(0)

Mensagempor alxsts » 30 Mai 2012 14:24

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.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

DBSETORDER(0)

Mensagempor Jairo Maia » 30 Mai 2012 14:27

Olá Jelias,

jelias escreveu:Minha dúvida é quanto a necessidade do uso do DBSETORDER(0). [...] Isso é realmente necessário?

Não. Como foi dito acima, quando você salva rehostros num banco de dados, todos os indices ABERTOS são automaticamente atualizados.

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

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

DBSETORDER(0)

Mensagempor rochinha » 30 Mai 2012 17:48

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.
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: 4548
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 808 vezes
Mens.Curtidas: 246 vezes

DBSETORDER(0)

Mensagempor jelias » 30 Mai 2012 18:16

Amigos,

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
jelias
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 249
Data de registro: 27 Ago 2008 11:32
Cidade/Estado: Minas Gerais
Curtiu: 0 vez
Mens.Curtidas: 16 vezes




Retornar para Banco de Dados

Quem está online

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