Página 1 de 1

APPEND FROM usando o WHILE, algo errado!

Enviado: 17 Mai 2012 06:56
por ANDRIL
Sempre usei o comando APPEND FROM porem com a clausula FOR. Agora estou tentando usar com a clausula WHILE para agilizar a importacao, porem sem exito.

Código: Selecionar todos

nped=100
 
SELECT 45
use itens
SET INDEX TO nped 
*-- posiciono no primeiro item do pedido desejado
seek nped

*-- mudo para a area onde os dados serao importado
SELECT 6
use pedido

APPEND FROM itens WHILE FIELD->numped=nped
O resultado é zero registros importados. Acho que o APPEND FROM abre novamente o arquivo novamente, sem aproveitar onde parei o ponteiro atraves do seek. Tentei substituir o nome do arquivo pelas funcoes SELECT(45) e mesmo assim nada feito.

Alguma idéia do que acontece?

APPEND FROM usando o WHILE, algo errado!

Enviado: 17 Mai 2012 07:58
por vailton
Desconfio que haja um erro no seu código no trecho:
ANDRIL escreveu:SET INDEX TO nped
Pois deveria ser o nome do indice que será setado, tal como por exemplo:

Código: Selecionar todos

SET INDEX TO arquivo.ntx
E este erro pode estar influenciando neste comportamento...

APPEND FROM usando o WHILE, algo errado!

Enviado: 17 Mai 2012 08:07
por Pablo César
Oi Anderson,

É o Vailton pode ser que tenha razão. O nome do NTX é igual a variável....

Eu também uso assim, quando utilizo com arquivo indexado:

APPEND FROM itens.dbf FIELDS PEDIDO,NUMERO FOR numped=nped VIA "DBFNTX"

APPEND FROM usando o WHILE, algo errado!

Enviado: 17 Mai 2012 09:07
por ANDRIL
vailton escreveu:SET INDEX TO arquivo.ntx
Opa falha minha. O correto no meu codigo esta:

Código: Selecionar todos

SET INDEX TO itens.idx
Alterei onde temo APPEND FROM para um laço DO WHILE numped=nped e a velocidade melhorou muito principalmente em rede. Isso me faz pensar que o APPEND FROM nao utiliza a estrutura de indice, mesmo por que, sem criar o escopo com FOR e usando apenas o WHILE ele não acha nada infelizmente. Uso o comando pois os 2 dbfs em questão tem muitos campos e não são todos coincidentes. Criei uma rotina para me auxiliar escrever o codigo fonte com os GET e SET dos campos para as variaveis e das variaveis para o campo e enfim, a velocidade aumentou bastante.

Creio que esteja fazendo algo de errado, pois o WHILE sempre usei neste comando para criacao de barra de andamento da operacao e etc, mais quanto para o aumento da velocidade, foi a primeira vez e que decepcao!

Ate+

APPEND FROM usando o WHILE, algo errado!

Enviado: 17 Mai 2012 11:48
por Eolo
Andril, dá uma olhada no NG do Clipper. Pelo que está lá, o APPEND FROM não considera índices abertos com o DBF. Se ele usa o ordem natural e varre o arquivo inteiro, se o primeiro registro não coincidir com a sua query, o append termina e não copia nada.

Já o COPY TO (que pode ser uma alternativa pra vc), usa o índice que estiver ativo no momento.

APPEND FROM usando o WHILE, algo errado!

Enviado: 17 Mai 2012 20:08
por ANDRIL
Eolo escreveu:olhada no NG do Clipper
Eolo, não tenho o NG aqui, mais foi o que eu constatei na pratica.
Eolo escreveu:Já o COPY TO (que pode ser uma alternativa pra vc), usa o índice que estiver ativo no momento.
Nesse comando a clausula WHILE funciona perfeitamente, infelizmente, nao me serve no momento.

Obrigado a todos.

APPEND FROM usando o WHILE, algo errado!

Enviado: 17 Mai 2012 21:51
por Eolo
Se quiser, eu lhe mando o NG. Meu email é eolo.ventura@gmail.com.

O COPY pode ser uma alternativa. Vc copia a seleção desejada da fonte para um temp e, depois, appenda tudo do temp pro alvo desejado. Se forem relativamente poucos registros, pode ser a solução.