APPEND FROM usando o WHILE, algo errado!

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

APPEND FROM usando o WHILE, algo errado!

Mensagem 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?
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
vailton
Colaborador
Colaborador
Mensagens: 390
Registrado em: 17 Nov 2005 19:08
Localização: Brasil
Contato:

APPEND FROM usando o WHILE, algo errado!

Mensagem 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...
Vailton Renato
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"

E-mail/MSN: contato@vailton.com.br
Skype: vailtom
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

APPEND FROM usando o WHILE, algo errado!

Mensagem 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"
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

APPEND FROM usando o WHILE, algo errado!

Mensagem 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+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

APPEND FROM usando o WHILE, algo errado!

Mensagem 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.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

APPEND FROM usando o WHILE, algo errado!

Mensagem 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.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

APPEND FROM usando o WHILE, algo errado!

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