quinta-feira, 13 de maio de 2010

Importação de tabelas Excel para DBF

Em mais uma postagem sobre dicas "vivendo e aprendendo ADVPL" hoje falarei sobre importação de tabelas em Excel para DBF
Recursos utilizados:- Protheus 10
- Microsoft Office Excel 2003

Vamos iniciar montando uma tabela qualquer em excel para podermos importa-la para DBF.

Selecione os itens que deseja importar, porém se vc esqueceu de selecionar e importar inteiro o DBF conterá todas as linhas em branco que tiver no Excel e isso te complicará no indexamento do arquivo.
Ao final do post farei explicarei sobre como apagar os registros em branco.

Salvando a planilha excel no formato .dbf
Utilize o Salva Como do Excel 2003 e na opção "Salvar como tipo:" selecione a opção:
DBF 4(dBASE IV)(*.dbf)









Salve o arquivo direto na estrutura de pastas do Protheus. Sugiro salvar na pasta data para que possamos abri-lo pelo APSDU.


A primeira mensagem se refere a não termos removido as abas 2 e 3 do excel, se as mesmas foram removidas só a segunda mensagem aparece, para este caso basta selecionar OK e depois Sim.

Observação pertinente a qual não foi aplicada aqui para gerar justamente esse erro.
Vejam que na próxima imagem no campo Cidade Porto Alegr e Florianopol estão incorretos pois na importação o tamanho do campo foi criado inferior a necessidade.
Para resolver isto basta abrir a celula no excel no tamanho que vc deseja que o campo tenha. Exemplo: Para um campo de 30 caracteres extenda a célula em largura para:
Largura: 30,00 (215 pixels) .

Criando o índice via APSDU para este novo arquivo:
Índice / Criar / Chave (selecione o construtor de chaves de índice) adicionar a chave desejada e Confirmar

Obs.: O Índice pode ser criado também via código.

Segue um exemplo de código para leitura tanto em .dbf quanto .cdx ou até mesmo em TopConnect

Conforme comentado anteriormente se por acaso for importado a planilha do excel completa e aparecer n linhas em branco, basta apagarmos via APSDU nas opções Utilitário / Delete / Para (construtor de expressão) / Selecione um campo qualquer e insira na expressão como por exemplo:
CLUBE Igual a ' '
Os campos vázios ficaram assinalados em cinza como deletados, depois vá em Utilitário / Pack ou Ctrl + P e clique em Sim.
Todos os campos deletados serão removidos.

Obs.: A diferença entre o Pack e o Zap é que o Pack remove todos os campos deletados e o Zap remove todos os campos.

Espero ter ajudado com este post, abraços a todos.

quinta-feira, 6 de maio de 2010

PLSQuery e TcSqlExec

PLSQuery e TcSqlExec são duas opções, dentre as várias que temos em ADVPL, para executar uma instrução SQL.
A diferença básica entre as duas é a finalidade da instrução.
Exemplo:

Local cAlias := GetNextAlias()
Local cSql

cSql := "select * from SB1"

PLSQuery(cSql, cAlias)

E em cAlias nós temos todos os registros da tabela SB1

Próximo exemplo:

Local cSql

cSql := "create table SB1_BKP as ( select * from SB1)"

TcSqlExec(cSql)

E foi criada uma cópia de backup da tabela SB1.

O código a seguir retona um erro: "Existe um erro na fórmula digitada. TOP Error - 19 - Invalid Select / Query Statement"

Local cAlias := GetNextAlias()
Local cSql

cSql := "create table SB1_BKP as ( select * from SB1)"

PLSQuery(cSql, cAlias)

Enquanto PLSQuery é usado para consultar dados, o TcSqlExec é utilizado pra alterações, seja para alterar o valor de um campo como alterar o nome de tabela ou coluna de uma tabela da base de dados.

Resolvendo problema de impressão devido atualização de Build

Existe um problema de impressão de relatórios no protheus com a nova build, para resolver é necessário colocar as linhas abaixo no totvssmartclient.ini


bin/totsmartclient/totvssmartclient.ini

[CONFIG]
Language=1
BrowserEnabled=0
gdiPrintEnabled=0