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