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 ?

:-o

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

Imagem

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+,