O comando Compact data file [# descv] compacta o arquivo de dados designado pelo parâmetro endereçoDados associado com o arquivo de estrutura endereçoEstrutura. [#/ descv] Para mais informações sobre compactação, consulte o manual de Design.
Para assegurar a continuidade da operação do banco de dados, os novos dados de arquivos compactados automaticamente substituem o arquivo original. Por razões de segurança, o arquivo original não é modificado e é movido para uma pasta especial chamada "Replaced files (compacting) AAAA-MM-DD HH-MM-SS", onde AAAA-MM-DD HH-MM-SS representa a data e hora do backup. Por exemplo: "Replaced files (compacting) 2007/09/27 15-20-35"
O comando retorna o caminho completo da pasta realmente criado para armazenar os dados do arquivo original. Este comando só pode ser executado a partir de 4D (modo local) ou 4D Server (stored procedure). Os arquivo de dados a ser compactado deve corresponder à estrutura do arquivo designado pela endereçoEstrutura. Além disso, o arquivo de dados não deve ser aberto quando o comando é executado, caso contrário um erro é gerado.
Se ocorrer um erro durante o processo de compactação, os arquivos originais são mantidos em sua posição inicial. Se um arquivo de índice (arquivo .4DIndx ) é associado com o arquivo de dados, ele também é compactado. Tal como acontece com os dados, o arquivo original está salvo e a nova versão compactada substitui a anterior.
- No parâmetro endereçoEstrutura, passe o caminho completo da estrutura do arquivo associado ao arquivo de dados que você deseja compactar. Esta informação é necessária para o processo de compactação. O caminho deve ser expresso na sintaxe do sistema operacional. Você também pode passar uma string vazia, neste caso, a caixa de diálogo padrão de abrir arquivos aparece para que você possa designar a estrutura do arquivo a ser utilizado.
- No parâmetro endereçoDados, você pode passar uma string vazia, um nome de arquivo ou um caminho completo, expresso na sintaxe do sistema operacional. Se você passar uma string vazia, a caixa de diálogo padrão de abrir arquivos aparece para que o usuário possa selecionar os dados do arquivo a ser compactado. Este arquivo deve corresponder à estrutura do arquivo definido no parâmetro endereçoEstrutura. Se você só passar o nome do arquivo de dados, 4D vai procurá-la no mesmo nível da estrutura de arquivo.
- O parâmetro opcional pastaArquivo pode ser usado para especificar a localização da pasta "Replaced files (compacting) DateTime" destinada a receber as versões originais dos arquivos de dados, bem como todos os arquivos de índice.
O comando retorna o caminho completo da pasta criada.
- Se você omitir esse parâmetro, os arquivos originais são automaticamente colocados em na pasta "Replaced files (compacting) DateTime" que é criada ao lado da estrutura de arquivo.
- Se você passar uma string vazia, uma caixa de diálogo padrão de Abrir pasta irá aparecer para que o usuário possa especificar a localização da pasta a ser criada.
- Se você passar um endereço (expresso na sintaxe do sistema operacional), o comando vai criar uma pasta "Replaced files (compacting) DateTime" neste local. - O parâmetro opcional opções é usado para definir várias opções de compactação. Para fazer isso, use as seguintes constantes, encontradas no tema Manutenção do arquivo de dados. Você pode passar várias opções, combinando-as:
Constante |
Tipo |
Valor |
Comentário |
Compact address table |
Inteiro longo |
131072 |
Forçar a reescrever os registros de endereço tabela (compactação lenta). Se você apenas passar esta opção, 4D ativa automaticamente a opção "Atualizar Registros '. Note que neste caso, os números de registro são reescritos. |
Create process |
Inteiro longo |
32768 |
Quando se passa esta opção, a compactação será assincrônica e deverá administrar os resultados utilizando o método de retrochamada (ver a continuação). 4D não mostrará a barra de progresso (é possível fazer isso através do método de retrochamada). A variável sistema OK toma o valor 1 se o processo for lançado corretamente e 0 em todos os outros casos. Quando não se passa esta opção, a variável OK toma o valor 1 se a compactação se realiza corretamente, do contrário 0. |
Do not create log file |
Inteiro longo |
16384 |
Geralmente, esse comando cria um arquivo de histórico em formato XML (veja o final da descrição do comando). Você pode cancelar esta operação a partir desta opção. |
Update records |
Inteiro longo |
65536 |
Força a reescrita de todos os registros após a atual definição de campos na estrutura. |
- O parâmetro metodo é usado para definir um método de callback que será chamado com durante a compactação, se a opção Create process for passada. Caso contrário, o método de callback nunca é chamado. Para obter mais informações sobre este método, consulte a descrição do comando VERIFY DATA FILE.
Se o método de callback não existe no banco de dados, é gerado um erro e a variável de sistema OK é definida como 0.
Por padrão, o comando Compact data file cria um arquivo de log no formato XML (se você não tiver passado a opção Do not create log file, consulte o parâmetro opções). Seu nome é baseado no arquivo de dados e é colocado próximo a esse arquivo. Por exemplo, para um arquivo de dados chamado "data.4dd", o arquivo de log será nomeado "data_compact_log.xml"
O exemplo a seguir (Windows) efetua a compactação de um arquivo de dados:
$arquivoEstrutura:=Structure file
$arquivoDados:="C:\Bancos\Faturas\Janeiro\Faturas.4dd"
$arquivoOrig:="C:\Bancos\Faturas\Arquivos\Janeiro\"
$pastaArqu:=Compact data file($arquivoEstrutura;$arquivoDados;$arquivoOrig)
Se a operação de compactação foi realizada corretamente, a variável sistema OK recebe o valor 1, caso contrário, recebe o valor 0.