MDX - COMO USAR

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

MDX - COMO USAR

Mensagem por rubens »

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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

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?
[]'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!
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mensagem por rubens »

não eu uso só o ntx...
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

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!
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mensagem por rubens »

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... ??
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

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...
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mensagem por rubens »

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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mensagem por rubens »

Resolvi..
Era algum problema com o arquivo dbf ... apaguei o arquivo e crei outro e funcionou...

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

nao tenho como especificar o nome do arquivo que vai ser criado ??? vai ser sempre o padrão da Tabela... ??
Complementando: no exemplo do post anterior, o arquivo ARQINDI.mdx vai conter os índices (TAGs) por CODPRO, por XPTO e por NOME, sendo que o índice ativo é setado com SET ORDE TO.
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

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...
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.

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...
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mensagem por rubens »

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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

tô com a impressao de que quando o arquivo é aberto com o Request DBFMDX
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:
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... :-)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mensagem por rubens »

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
"Eu e minha casa servimos ao Senhor e você ???"
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

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
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

O REQUEST não é um comando, é só um STATEMENT
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.
[]'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!
Responder