Página 1 de 1
Error C2006 Statement not allowed outside procedure or func
Enviado: 17 Jul 2008 18:54
por JLF
Boa noite amigos,
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
Re: Error C2006 Statement not allowed outside procedure or func
Enviado: 17 Jul 2008 19:06
por sygecom
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
Re: Error C2006 Statement not allowed outside procedure or func
Enviado: 17 Jul 2008 19:33
por ANDRIL
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.
Ate+
Re: Error C2006 Statement not allowed outside procedure or func
Enviado: 17 Jul 2008 19:34
por JLF
SYGECOM,
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.
Enviado: 17 Jul 2008 20:06
por Maligno
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.
Re: Error C2006 Statement not allowed outside procedure or func
Enviado: 18 Jul 2008 08:23
por JLF
Grande mestre MALIGNO,
A função toda é exatamente e tão somente isso:
*** 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 ?
Error C2006 Statement not allowed outside procedure or func
Enviado: 18 Jul 2008 09:24
por Pablo César
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.
Re: Error C2006 Statement not allowed outside procedure or func
Enviado: 18 Jul 2008 13:50
por ANDRIL
Você tentou compilar sem a chave /n ?? Não adiantou??????
Ate+
Re: Error C2006 Statement not allowed outside procedure or func
Enviado: 18 Jul 2008 16:51
por JLF
ANDRIL,
vc "matou a pau" ... :%
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...
Re: Error C2006 Statement not allowed outside procedure or func
Enviado: 18 Jul 2008 18:34
por ANDRIL
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
Ate+
Re: Error C2006 Statement not allowed outside procedure or func
Enviado: 18 Jul 2008 18:43
por JLF
ANDRIL,
Ficarei muito grato se puder me mandar
jlf_xxi@hotmail.com
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)
Re: Error C2006 Statement not allowed outside procedure or func
Enviado: 19 Jul 2008 17:15
por JLF
Agradeço ao amigo ANDRIL que enviou o arquivo,
Infelizmente não rodou deu erro, posto a img aqui...
Mas consegui já importar o arquivo de outra maneira, abri ele no Excel e salvei como DBF, tudo bem que assim não vale fica facil...

Re: Error C2006 Statement not allowed outside procedure or func
Enviado: 20 Jul 2008 16:38
por Wind
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.
Re: Error C2006 Statement not allowed outside procedure or func
Enviado: 20 Jul 2008 17:06
por ANDRIL
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.
Ate+,