Esta dando esta msg de erro na compilação da seguinte linha
APPEND FROM plaorion.dbf
Estou criando um novo DBF e quero colocar as informações que estão no antigo para um novo, pois houve mudanças de tamanho nos campos, mas este erro não esta deixando gerar o OBJ, sera que a função APPEND sumiu do diretório ?
Error C2006 Statement not allowed outside procedure or function
Já tentou apagar todos os OBJ e recompilar tudo do ZERO. Tente postar um pequeno exemplo de como esta usando, a principio sua linha onde tem o append from esta correta.
E verefique seu não esta faltando linkar a LIB do CLIPPER
Na minha opniao a linha do APPEND FROM nao tem nada a ver.
Esta mensagem de erro esta acusando que alguma declaração com FIELD, MEMVAR, STATIC foi declarada antes da primeira declaração de PROCEDURE ou FUNCTION.
Você esta usando a chave /n do compilador? Tente compilar sem esta chave para o clipper gerar automaticamente uma procedure inicial com o mesmo nome do PRG principal.
Ou
Veja no seu codigo se ha uma das declarações acima colocadas fora de uma procedure e coloque-as depois da declaração do nome da procedure.
Quanto a declaração da CLIPPER.LIB não é necessária, pois o LINKER procura automaticamente nesta lib.
Tenho por costume já apagar os OBJ e BIF toda vez q vou recompilar, pra não correr riscos..
A rotina é simples, peguei aqui mesmo um modelinho já faz um bom tempo... (me desculpe o autor que esqueci de guardar o nome)
*** rotina facil de gerar um novo a partir do velho, por exemplo aumentando um campo
CAMPOS:={{"campo1" ,"c",005,000},;
{"campo2" ,"C",036,000},;
{"campo3" ,"c",010,000},;
{"campo4" ,"C",040,000},; // Digamos que este era o campo diferente ao que estava
{"campo5" ,"N",002,000} }
DBCREATE("PLAN2008.DBF",CAMPOS)
USE PLAN2008.DBF
APPEND FROM plaorion.dbf
Para compilar:
@echo off
clipper plantext /n
if errorlevel 1 pause
\util\blinker7\bin\blinker fi plantext
if errorlevel 1 pause
O erro é exatamente nesta linha que esta retornando o clipper, por causa do numero da linha não tem erro.
A mensagem de erro é típica de uma declaração ilegal de variável. Poste a função toda. Ou pelo menos seu começo. De repente, o erro pode estar ali. Nem sempre o compilador aponta o local correto do erro. Isso também ocorre quando há uma declaração ou inicialização de variável feita de forma ilegal ANTES da declaração da função. Então, veja isso também.
[]'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!
*** rotina facil de gerar um novo a partir do velho, por exemplo aumentando um campo
CAMPOS:={{"campo1" ,"c",005,000},;
{"campo2" ,"C",036,000},;
{"campo3" ,"c",010,000},;
{"campo4" ,"C",040,000},; // Digamos que este era o campo diferente ao que estava
{"campo5" ,"N",002,000} }
DBCREATE("PLAN2008.DBF",CAMPOS)
USE PLAN2008.DBF
APPEND FROM plaorion.dbf
Especifico os campos, crio o novo DBF e depois copio para este novo o DBF antigo... será que o erro é por ai então ?
JLF escreveu:A função toda é exatamente e tão somente isso
Se o seu utilitário é apenas esse código-fonte descrito acima. Posso tranquilamente afirmar que não possui erro algum. Eu até compilei isto é "testei" compilando com Clipper 5.2e e Clipper 5.3 (RTLINK e BLINKER). Não tem erro esse código, talvez você deve estar executando alguma batch na hora de compilar ou até seu Clipper possa estar furado.
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.
Não tinha pensado nisso, bastou tirar o /n e compilou sem erro...
Só que ao executar o EXE, criou o novo DBF mas o APPEND não funcionou, o arquivo novo ficou vazio .... :-O
O número de campos é exatamente o mesmo, ou seja, apenas 5 campos, o formato deles também são iguais, estou somente aumentando o numero de caracteres em 1 único campo...
Estranho o seu APPEND FROM nao esta funcionando. Tente declarar o caminho junto ao nome do arquivo:
APPEND FROM c:\meudir\meudbf.dbf
Há algum tempo atrás, precisei criar um utilitário para fazer a função do APPEND FROM mais que me permitisse ter o novo arquivo com uma estrutura diferente (exemplo: no arquivo antigo o campo codigo era numerico e no novo arquivo o campo codigo mudou para caracter, etc) e ainda checar se o arquivo de origem possui algum campo invalido, oque ocasionaria um erro de run-time durante o APPEND FROM normal.
Se quiser poste seu email para que lhe envie, pois aqui não é aceito extensão .EXE
Amigos descobri algo que deve ser a chave do meu problema, coloquei os 2 DBF no diretorio do clipper e fui dar o APPEND pelo DBU, não funcionou, o arquivo novo permanece vazio e o DBU retorna como se estivesse tudo feito...
Alguma idéia do que deve ter acontecido ? (Obs. a data de criação do DBU.EXE é de 26/06/1995)
JLF, o APPEND FROM tenta abrir o arquivo ORIGEM em modo SHARED. Se ele já estiver aberto, os registros NÃO são copiados e não dá nenhuma mensagem de erro. Só dá run time error se o comando não conseguir abrir o arquivo (se ele por exemplo já estiver aberto em modo EXCL ou FLOCKeado).
Feche o arquivo PLAORION.dbf antes de fazer o APPEND e os registros vão ser copiados.
Esqueci de mencionar que o aplicativo apenas trabalha com DBFs, digo, extrutura de DBF.
Como o segundo arquivo é .TXT (outra estrutura deu erro).
Usava este aplicativo para atualizar o DBF antigo que estava no cliente para o novo DBF que estava mandando na atualização.
Exemplo: o cliente tem um arquivo PEDIDO.DBF e eu mando sempre o arquivo PEDIDO.NOV para que seja atualizado.
Mesmo que PEDIDO.NOV tenha sua estrutura acrescentada, diminuida, campo alterado de tipo, o aplicativo trava estas diferenças diminuindo 90% de chances de erro.