Página 1 de 1

DBSETDRIVER() ou RDDSETDEFAULT()

Enviado: 18 Ago 2007 08:35
por marcelojr
Usando INDICES CDX.... gostaria de saber dos amigos qual a diferença entre:

RDDSETDEFAULT("DBFCDX")
e
DBSETDRIVER("DBFCDX")

100+

valeu.

Enviado: 18 Ago 2007 09:23
por Eolo
Para usar o CDX como RDD default (em lugar do NTX), vc faz, no inicio do seu programa:
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")

O DBSETDRIVER é o seguinte: como vc pode ter CDX e NTX rodando ao mesmo tempo (em diferentes áreas), numa mesma aplicação, vc usa o DBSETDRIVER("DBFCDX") ou DBSETDRIVER("DBFNTX") para alternar entre eles.

E vc ainda pode usar a cláusula VIA no comando USE ou o argumento "DBFCDX" ou "DBFNTX" na função DBUSAREA() ao invés de RDDSETDEFAULT().

Enviado: 18 Ago 2007 10:33
por marcelojr
AH. ENTENDI.... ENTÃO SE EU SÓ USO CDX, não vou precisar DBSETDRIVER().....


blz

obrigado.

Enviado: 20 Ago 2007 13:59
por sygecom
Humm, eu só uso CDX e uso RDDSETDEFAULT("DBFCDX") e o DBSETDRIVER("DBFCDX") !!! até hj não me deu problema algum em usar uma linha a mais no meu PRG principal....hehe...

Abraços
Leonardo Machado

Enviado: 21 Ago 2007 02:58
por Maligno
Nessa linha de pensamento, se em exagero, o programador cultiva o vício do desperdício, que pode até acabar gerando gargalos desnecessários ou, no mínimo, um código mais difícil de manter. É bem mais saudável saber precisamente o que é necessário ou não.

Enviado: 21 Ago 2007 03:18
por Maligno
Em tempo: se for o caso de alguém usar a biblioteca SIX, querendo dispensar os NTX e usar apenas CDX ou NSX, não será necessária qualquer função que informe o compilador qual RDD será utilizado.
Neste caso, basta linkar o objeto SIXCDX ou SIXNSX, conforme o caso. Isso já sobreporá o RDD antigo. E além do objeto, claro, será necessário incluir a biblioteca SIX3.LIB.
O programa em si só precisará do arquivo de cabeçalho SIXCDX2.CH ou SIXNSX2.CH, conforme o RDD escolhido. Isso por causa dos comandos de tratamento de arquivos, que utilizam outras funções.
Feito isso, a migração estará completa. Nada mais será necessário.

Aliás, o comando REQUEST também não é necessário porque o arquivo de cabeçalho escolhido já possui um REQUEST para o objeto apropriado.

Enviado: 22 Ago 2007 10:59
por vagucs
RDDSETDEFAULT faz a mesma coisa que o DBSETDRIVER, ela foi criada para padronizar os drives de RDD a partir da versão 5.2.

O certo seria então.

REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")

Para alternar entre um drive e outro é mais facil usar o nome do drive na abertura do DBF assim.

USE TESTE.DBF NEW ALIAS TESTE VIA "DBFCDX"
USE TESTE2.DBF NEW ALIAS TESTE2 VIA "DBFNTX"

Assim você pode trabalhar com mais de um tipo de indice no mesmo programa.

Enviado: 22 Ago 2007 11:10
por Maligno
Como eu disse, se for utilizada a SIX, o REQUEST não será necessário, se for utilizado o header do driver.

Enviado: 22 Ago 2007 11:44
por Eolo
Para alternar entre um drive e outro é mais facil usar o nome do drive na abertura do DBF assim.
USE TESTE.DBF NEW ALIAS TESTE VIA "DBFCDX"
USE TESTE2.DBF NEW ALIAS TESTE2 VIA "DBFNTX"
Vagucs,

Não precisa do "ALIAS TESTE". Se o apelido desejado for igual ao nome do arquivo, basta fazer:
USE TESTE.DBF NEW VIA "DBFCDX"

Também, não sei se é "mais fácil" fazer do jeito que vc sugeriu, quando forem dezenas de arquivos... Ao invés de repetir VIA "DBFCDX" dezenas de vezes, que tal fazer DBSETDRIVER("DBFCDX") só uma vez?