Neste blog teremos dicas do universo Totvs relacionado mais especificamente ao Protheus e sua linguagem proprietária o ADVPL. Também abordarei ferramentas de apoio para o desenvolvedor para facilitar o seu dia a dia. Esse blog será voltado a apoiar quem esteja ingressando nesta carreira de desenvolvimento em ADVPL.
terça-feira, 18 de maio de 2010
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
![](//1.bp.blogspot.com/_wPXU41qJIjc/S-wwLEkOd9I/AAAAAAAAA5c/KlF39hyeZGo/s400/cod.jpg)
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.
Recursos utilizados:- Protheus 10
- Microsoft Office Excel 2003
Vamos iniciar montando uma tabela qualquer em excel para podermos importa-la para DBF.
![](http://2.bp.blogspot.com/_wPXU41qJIjc/S-wTcMvrqnI/AAAAAAAAA4k/QZQniL8OHf4/s320/tbexcelselec.jpg)
Ao final do post farei explicarei sobre como apagar os registros em branco.
Salvando a planilha excel no formato .dbf
![](http://2.bp.blogspot.com/_wPXU41qJIjc/S-wUTb9arzI/AAAAAAAAA4s/jHGORbv4eZA/s320/tbexcelsalvaDbf.jpg)
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.
![](http://4.bp.blogspot.com/_wPXU41qJIjc/S-wXv3kOFQI/AAAAAAAAA40/KJ1IPKs9wCE/s320/mensagens.jpg)
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.
![](http://2.bp.blogspot.com/_wPXU41qJIjc/S-wa3xoQKeI/AAAAAAAAA48/TKf5tHvgCno/s320/apsdu.jpg)
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
![](http://1.bp.blogspot.com/_wPXU41qJIjc/S-wwLEkOd9I/AAAAAAAAA5c/KlF39hyeZGo/s400/cod.jpg)
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.
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
Assinar:
Postagens (Atom)