Árvore de páginas

Seleciona a ordem ativa da área de trabalho.

Sintaxe

DBSetOrder( [ nOrder ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

nOrder

numeric

Indica o número da posição da ordem na lista de ordens ativas.



Retorno

Nome

Tipo

Descrição

uRet

Nil

Sempre retorna nulo.

Observações

  • Esta ordem é a responsável pela sequência lógica dos registros da tabela corrente.
  • nOrder deve ser maior ou igual a zero.
  • Caso não haja uma área de trabalho aberta com um alias, o programa será encerrado com ocorrência de erro recuperável "Work area not in use".
  • Caso nOrder seja maior do que a quantidade de índices existentes, o programa será encerrado com ocorrência de erro recuperável "DBSetOrder - Index not found: cAlias Order Number: nOrder", onde cAlias é o alias da área de trabalho e nOrder é o número da ordem solicitada.
  • Se nOrder não for informada ou for um valor menor que zero, a função não fará nada.
  • Caso seja definida a ordem 0 (zero), a tabela corrente, na área de trabalho, será posicionada na ordem em que os registros foram inseridos, porém os indexadores são mantidos abertos.
  • Quando é alterada a ordem atual de uma determinada tabela, o registro atual não é desposicionado.
  • Se a ordem solicitada for diferente da ordem atual e tiver alterações pendentes, as alterações são gravadas e a ordem é alterada. Caso haja erros durante o processo de gravação, a ordem não é alterada e o programa é encerrado com ocorrência de erro recuperável Update error: (DBSetOrder)cName, onde cName é o nome da tabela.
  • Para saber o número da ordem ativa, utilize a função IndexOrd. Para saber a chave do índice da ordem ativa, utilize a função IndexKey.

Exemplos

user function test()
  Local cT1  := "T1"
  Local nIdxOrd := -1
  Local cIdxKey := ""
  
  TCLink()
  if TCCanOpen(cT1)
    TCDelFile(cT1)
  endif
  
  DBCreate( cT1, { { "FIELD_COD" , "C",  2, 0 }, ;
                   { "FIELD_NAME", "C", 10, 0 }, ;
                   { "FIELD_TYPE", "C", 10, 0 } }, "TOPCONN" )

  DBUseArea( .T., "TOPCONN", cT1, (cT1), .F., .F. )

  DBCreateIndex( "T1INDEX1", "FIELD_COD"            , { || FIELD_COD               } )
  DBCreateIndex( "T1INDEX2", "FIELD_COD+FIELD_NAME" , { || FIELD_COD  + FIELD_NAME } )
  DBCreateIndex( "T1INDEX3", "FIELD_NAME+FIELD_TYPE", { || FIELD_NAME + FIELD_TYPE } )
  (cT1)->( DBClearIndex() ) //Força o fechamento dos índices abertos
  
  DBSetIndex( "T1INDEX1" ) //acrescenta a ordem de índice para a área aberta
  DBSetIndex( "T1INDEX2" ) //acrescenta a ordem de índice para a área aberta
  DBSetIndex( "T1INDEX3" ) //acrescenta a ordem de índice para a área aberta
  
  DBSetOrder( 2 )
  nIdxOrd := IndexOrd()
  cIdxKey := IndexKey( nIdxOrd )
  conout( "Ordem de indice ativo: " + cValToChar( nIdxOrd ) + Chr( 13 ) + Chr( 10 ) + "Chave de indice ativo: " + cIdxKey )
  
  TCUnLink()
return

Veja também

  • Sem rótulos