MDX - COMO USAR
Moderador: Moderadores
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
MDX - COMO USAR
Gente seguinte..
Tô precisando trabalhar com alguns dbf usando o MDX. Preciso saber o seguinte.
Se usar
USE (ARQ) VIA DBFMDX SHARE NEW
Tenho que usar
REQUEST DBFMDX no inicio do programa?
Se usar REQUEST DBFMDX posso abrir outro arquivo em outra area com NTX..?
Como faço para abrir o NTX usando o REQUEST?
Valew..
Rubens
Tô precisando trabalhar com alguns dbf usando o MDX. Preciso saber o seguinte.
Se usar
USE (ARQ) VIA DBFMDX SHARE NEW
Tenho que usar
REQUEST DBFMDX no inicio do programa?
Se usar REQUEST DBFMDX posso abrir outro arquivo em outra area com NTX..?
Como faço para abrir o NTX usando o REQUEST?
Valew..
Rubens
"Eu e minha casa servimos ao Senhor e você
"
A finalidade da cláusula VIA é justamente permitir trabalhar com dois ou mais RDDs diferentes.
Não precisa do REQUEST se você incluir o DBFMDX.OBJ no seu script de linkedição.
O DBFNTX já é incluído por default.
Você usa a SIX?
Não precisa do REQUEST se você incluir o DBFMDX.OBJ no seu script de linkedição.
O DBFNTX já é incluído por default.
Você usa a SIX?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Bom, então aí não sei. Aliás, pra falar a verdade, nem sei se o Clipper tem MDX nativamente. Acho que não. Mas se quiser usar a SIX, ela tem. E é simples.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Pois é maligno... pesquisei no ng e algums livros que tenho e na net.. e fiz uns testes mas nao consigo criar o indice.. dá um erro na abertura do arquivo.. dizendo que o arquivo mdx nao existe (erro dos 2).. mas é logico que no existe por que ainda vai ser criado.. olha o codigo de repente voce ve algo errado...
REQUEST DBFMDX
RDDSETDEFAULT('DBFMDX')
USE CUPOM.DBF VIA 'DBFMDX' NEW ALIAS CUP
INDEX ON CODPRO TAG CODIGO
dá erro erro na linha 03, no use..
Outra dúvida que talvez voce saiba responder.. nesse tipo de criacao de indice... nao tenho como especificar o nome do arquivo que vai ser criado
vai ser sempre o padrão da Tabela... ??
REQUEST DBFMDX
RDDSETDEFAULT('DBFMDX')
USE CUPOM.DBF VIA 'DBFMDX' NEW ALIAS CUP
INDEX ON CODPRO TAG CODIGO
dá erro erro na linha 03, no use..
Outra dúvida que talvez voce saiba responder.. nesse tipo de criacao de indice... nao tenho como especificar o nome do arquivo que vai ser criado
"Eu e minha casa servimos ao Senhor e você
"
Rubens,
a) vc esqueceu de indicar o nome do arquivo indice (abaixo, em negrito)
b) se vc usa o RDDSETDEFAULT (que quer dizer "use como default a RDD DVFMDX"), não precisa da cláusula VIA
c) incluí outros índices (TAGs), só pra exemplificar.
REQUEST DBFMDX
RDDSETDEFAULT('DBFMDX')
USE CUPOM NEW ALIAS CUP
INDEX ON CODPRO TAG CODIGO TO ARQINDI
INDEX ON XPTO TAG XPTO TO ARQINDI
INDEX ON NOME TAG ABCD TO ARQINDI
SET INDE TO ARQINDI
SET ORDE TO 2 // POR XPTO...
a) vc esqueceu de indicar o nome do arquivo indice (abaixo, em negrito)
b) se vc usa o RDDSETDEFAULT (que quer dizer "use como default a RDD DVFMDX"), não precisa da cláusula VIA
c) incluí outros índices (TAGs), só pra exemplificar.
REQUEST DBFMDX
RDDSETDEFAULT('DBFMDX')
USE CUPOM NEW ALIAS CUP
INDEX ON CODPRO TAG CODIGO TO ARQINDI
INDEX ON XPTO TAG XPTO TO ARQINDI
INDEX ON NOME TAG ABCD TO ARQINDI
SET INDE TO ARQINDI
SET ORDE TO 2 // POR XPTO...
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Certo.. fiz o teste ... removi o VIA 'DBFMDX' ... compila.. mas quando mando executar dá o erro:
ERROR DBFMDX/1003 OPEN ERROR: CUPOM.MDX (DOS ERROR 2)
na linha 3 que pe onde está o use.. ainda nem chegou na linha para indexar... !!!
Estranho não...
Rubens
ERROR DBFMDX/1003 OPEN ERROR: CUPOM.MDX (DOS ERROR 2)
na linha 3 que pe onde está o use.. ainda nem chegou na linha para indexar... !!!
Estranho não...
Rubens
"Eu e minha casa servimos ao Senhor e você
"
Eu ainda não vi nenhuma explicação sobre isso, mas parece que o MDX (da mesma forma que o CDX) "marca" no DBF o nome do arquivo índice correspondente, então quando vc faz USE ARQUIVO.DBF o arquivo índice mdx já é aberto automaticamente... (??). No NTX isso não acontece.ERROR DBFMDX/1003 OPEN ERROR: CUPOM.MDX (DOS ERROR 2)
na linha 3 que pe onde está o use.. ainda nem chegou na linha para indexar... !!!
Estranho não...
Então, se vc altera o nome do arquivo índice, na próxima rodada o MDX antigo não é localizado, aí dá o Error 2 File not Found.
Talvez alguém possa esclarecer isso melhor...
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Entendi essa parte blz..
Havia postado que apaguei o arquivo e o criei de novo e havia resolvido.. mas ele aceita indexar só uma vez... se apago os mdx e rodo a rotina para criar o arquivo de novo dá o mesmo erro... tô com a impressao de que quando o arquivo é aberto com o Request DBFMDX, altera alguma coisa nele informando que existe o indice... se eu apago o indice ele nao abre mais porque nao existe mais o indice.. é isso mesmo...
Se for entao nao se pode apagar um indice MDX e sim reindexá-lo
Rubens
Havia postado que apaguei o arquivo e o criei de novo e havia resolvido.. mas ele aceita indexar só uma vez... se apago os mdx e rodo a rotina para criar o arquivo de novo dá o mesmo erro... tô com a impressao de que quando o arquivo é aberto com o Request DBFMDX, altera alguma coisa nele informando que existe o indice... se eu apago o indice ele nao abre mais porque nao existe mais o indice.. é isso mesmo...
Se for entao nao se pode apagar um indice MDX e sim reindexá-lo
Rubens
"Eu e minha casa servimos ao Senhor e você
"
O REQUEST não é um comando, é só um STATEMENT que indica que a RDD DBFMDX deve ser linkada... Um outro exemplo de REQUEST: se vc faz a="STRZERO("+alltrim(str(b))+",3,0)", a função STRZERO() não vai ser compilada e linkada, porque está como parte de uma string, e isso vai causar um run time error. Pra resolver, vc o usa o REQUEST pra forçar que a função seja incluída no seu EXE:tô com a impressao de que quando o arquivo é aberto com o Request DBFMDX
request strzero()
a="STRZERO("+alltrim(str(b))+",3,0)"
Quanto ao resto da sua pergunta, eu não posso afirmar nada. Aliás, por isso parei de usar o CDX, voltando pro NTX...
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Ok... mas como não consigo encontrar nada quanto a isso.. vou continuar no NTX mesmo.. só abro os arquivos 2 ou 3 vezes por dia para fechar o pdv.. entao como os arquivos estao no hd local e as maquinas sao potentes o cliente nem vai notar se tiver que aguardar uns instantes para criar os indices... daí trabalho com 02 indices. o pdv que esta sendo desenvolvido em delphi trabalha nos dbf com mdx e faço uma rotina para transferencia dos dados do pdv para o retaguarda com NTX...
Valeu... obrigado...
Rubens
Valeu... obrigado...
Rubens
"Eu e minha casa servimos ao Senhor e você
"
rubens escreveu:Ok... o cliente nem vai notar se tiver que aguardar uns instantes para criar os indices...
Cara , estranho o que voce diz acima , pois não precisa recriar os indices a cadas vez que for usa-los , costumamos , criar uma rotina de indexação por fora que por exemplo voce possa chama-la no seu menu , apos os indices serem criados voce não precisa indexar novamante quando se abre o DB apenas informe ao prg que voce quer usar os indices ...
Sera que intendi mal ou voce se expressou mau ?
See ya !
:)Pos
C:\Xharbour\Xdev\Fw\VSX
Exatamente. Mas só um complemento. Se o objeto em questão tiver sido mencionado no script de linkedição, o REQUEST não é necessário. A função dele é apenas dizer ao linker que o objeto deve ser ligado. Mas se ele já consta no script, é óbvio que ele será ligado.O REQUEST não é um comando, é só um STATEMENT
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!

