domingo, outubro 05, 2008

erro no base (broffice) - error in script line file

Ontem. Um belo sábado. Depois de curtir noite de sexta com amigos, música e coca-cola, vamos a um dia de produção.
Consigo deixar a preguiça de lado e gasto toda a tarde/noite alimentando um banco de dados, em vez de simplesmente digitar tudo no editor de planilha e depois aplicar tabelas dinâmicas para sumarização.
E eis que hoje, manhã de domingo de sol, quando vou concluir meu trabalho (rapidamente, para curtir o restante do dia), o Base resolve me pregar uma peça:
Desespero. Pânico. Ódio.
...

Lá vamos nós procurar uma solução.

A primeira, obviedade das obviedades, reinstalar o BrOffice.
Duvido da efetividade, já que a conexão não pode ser feita porque há uma constraint duplicada no script. Não é problema do programa. É um erro no arquivo.

A segunda opção, achada milagrosamente nesta única referência em português que achei, é editar o arquivo "script".
Explico: os arquivos odf ("odb", "ods", etc) na verdade são um composto de arquivos. Dá pra ver isto quando se abre um deles com um compactador (Winzip, Winrar, 7-Zip, etc). Esta é a estrutura "real" de um arquivo odb:
Dentro da pasta "database", há um arquivo "script", que contém todas as instruções DDL (Data Definition Language) e DCL (Data Constraint Language), para criação das tabelas e definição das "constraints" (chaves primárias e estrangeiras). O problema, no meu caso, estava exatamente neste arquivo. Bastaria ir até a linha 14 e modificar "SK_FK_01" para "SK_PK_01" e assim, retirar a duplicidade.
Minha seqüência das ações seria:

- Copiar o arquivo original e deixá-lo a salvo
- Modificar a extensão da cópia para ".rar"
- Abrir com Winrar
- Extrair todos os arquivos para uma nova pasta
- Editar o arquivo "script", retirando a duplicidade
- Compactar tudo de novo
- Mudar a extensão para "odb"

Até aí, tudo tranqüilo?
Estaria...se o BrOffice compreendesse que o arquivo que eu modifiquei continuava sendo um banco de dados...
Quando eu salvava com a extensão ".rar", ele abria com o Writer, e solicitava parâmetros para conversão dos arquivos (pena eu não ter a tela aqui para mostrar...). Quando usava ".zip", ele até compreendia que não se tratava de um mero arquivo texto: abria uma tela com diversas opções de filtro. A mais próxima era "Banco de dados do OpenOffice 1.0", mas ainda assim, o arquivo não abria corretamente.
Já pensando no tempo que levaria pra fazer tudo de novo, lembrei do 7-zip, um compactador open-source que uso no trabalho. Não sou fã da interface dele, mas pensei que ele poderia se entender melhor com o Base do que as soluções proprietárias.
Baixo, instalo...
E já vem a primeira vantagem: posso abrir o odb, abrir o arquivo "script" e já editá-lo diretamente, sem necessidade de extrair primeiro, como é no Winrar/Winzip. Faço isto. Mas para funcionar foi necessária uma gambiarra: os arquivos da pasta database não têm extensão. Só que o Notepad exige uma, e se você não coloca nenhuma, lá vai o ".txt". E daí o Base não entende. E tudo continua sem funcionar.

Para resolver, usei ".lll" (pode ser qualquer coisa) como extensão e salvei numa pasta qualquer.Depois, foi só retirar a extensão.
Com o arquivo .odb aberto no 7-zip, foi só selecionar o novo arquivo "script" e colocá-lo na pasta. O programa só pede que você confirme a inserção do novo arquivo. A substituição é feita sem maiores problemas (não consegui fazer isto no winrar...)

Depois de toda esta briga, finalmente abrir o banco e começar o trabalho do dia...