Pergunte aqui
0

Relatório com Label referenciando os dados de uma consulta

perguntadas 2019-04-24 18:22:34 +0200

imagem do gravatar de Levi

updated 2019-04-30 17:27:13 +0200

Lá pelos idos de 2004, quando ainda usava o Access, era possível fazer um relatório no qual em vez de um campo de texto, colocava um Label e, através da sintaxe do VBA da plataforma, referenciava os dados que desejava. Exemplo: Ofício: &&alguma coisa que eu queria&& continuava o texto do label, &&novo campo de dados&& e continuava o texto do label. O único problema é que as linhas eram fixas, mas tudo bem. Gostaria de saber se existe funcionalidade semelhante no Base e onde posso encontrá-la mais facilmente, pois já procurei tal em anos anteriores e, vencido pelo cansaço e pela dificuldade, desisti. Também poderia, como se fosse criada uma macro na qual existe um texto padrão e nele são inseridos os campos de uma determinada consulta, semelhante ao que acontece com a mala direta. Todavia, o critério do formulário determinaria a impressão apenas de dados especificados. Exemplo: você trabalha em um juizado de pequenas causas e tem que mandar ofícios de intimação para várias pessoas, mas não todas. Então, através de um formulário, no qual aparecem as pessoas que ainda não foram intimadas, seleciona-se os pretendidos e imprime-se apenas aquele ofício.

Complemento 1

Ainda estou procurando pela resposta acima, mas vejo que é difícil, em virtude de não haver documentação suficiente para as bibliotecas do LibreOffice, OpenOffice e BrOffice e sobre a sintaxe de seu VBA. Mais de dez anos se passaram, mas os sites e blogs trazem, geralmente, os mesmos conceitos, informações e dicas daquela época. Andei olhando o Pitonyak, mas não é muito elucidativo, tendo em vista que muitos exemplos citados trazem configurações muito avançadas ṕara quem apenas utiliza desktops e realiza soluções para os próprios problemas. Já conheci um pouco do VB Script do Access, do VBA Studio, mas confesso que desisti dos mesmos quando a Microsoft resolveu descontinuá-los. Abracei a idéia do software livre, todavia não imaginava que o caminho seria tão árduo. Proporia, se possível, que alguém criasse um local apenas para o LibreOffice/OpenOffice/BrOffice Base e colocássemos, passo-a-passo e ordenadamente, as soluções para criação de banco de dados, desprezando aquilo que já está aos montes na internet: abrir o Base, aqui é a barra de ferramentas, ali está o botão salvar, etc.. Exemplo do que é pretendido: criando uma barra de navegação personalizada para os dados do formulário, botão a botão, código a código; criando uma listBox que aceite dois ou mais campos de visualização; criação de um frame como emulação de um formulário e substituto das telinhas do Base; (...). Sei que isso é possível, difícil mais possível, pois já fiz e já vi muita coisa no VBA do Excel e do Access: relógios circulares com ponteiros, botões com formatos diferenciados e outras loucuras. Acredito que a falta desses deslumbramentos, associada à dificuldade em gerar-se tutoriais que mostrem além do abrir e fechar relatórios, seria um grande impulsionador não tão-sòmente para a aprendizagem, mas alavancaria o uso de tal ferramenta. Como disse, isso é possível, vejam um exemplo interno do próprio ... (more)

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

ATENÇÂO: Caso queira dar mais detalhes a sua pergunta, use editar na pergunta ou comentar abaixo. Grato.

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-04-26 12:53:43 +0200 )editar

Não respondi-lhe antes, pois ainda continuo procurando uma solução, porém agradeço-lhe pela atenção dispensada.

imagem do gravatar de LeviLevi ( 2019-04-30 02:42:14 +0200 )editar

2 Respostas

1

respondidas 2019-04-28 22:21:30 +0200

imagem do gravatar de Grafeno

updated 2019-04-28 22:53:03 +0200

Boa tarde,

Exemplo: Ofício: &&alguma coisa que eu queria&& continuava o texto do label, &&novo campo de dados&& e continuava o texto do label.

Nunca usei o Access a fundo e também não tenho certeza de que é o que procura, mas isto me parece muito com concatenação com campo de dados. No Editor de Relatórios do Base é preciso usar uma caixa de texto e na aba Dados, campo Campo de dados digitar o texto como a seguir:

"Ofício: "& [Campo1]&". Alguma coisa do  "&[Campo2]&" e continuando o texto."

O texto precisa vir entre aspas e o nome dos campos de dados da tabela, entre colchetes.

As linhas não necessariamente são fixas, mas é preciso desenhar a caixa de texto no tamanho que irá comportar as possíveis.

Descrição da imagem

Descrição da imagem

Descrição da imagem

Também poderia, como se fosse criada uma macro na qual existe um texto padrão e nele são inseridos os campos de uma determinada consulta, semelhante ao que acontece com a mala direta.

Nesse caso, não tem na sintaxe do LibreOffice Basic um "atalho" para inserir os campos de um determinada consulta. Você precisa "rodar" esta consulta dentro da macro, puxar os dados (até mesmo linha a linha) e colocá-los no texto. É um caminho mais longo e tortuoso que da solução anterior.

Atte,

editar assinalar como ofensivo Excluir Link mais

Comentários

Se esta sintaxe acima não funcionar, como aconteceu comigo, pois não estou usando a sintaxe do Access2Base, podem usar conforme abaixo, mas se também não funcionar, abra a consulta onde estão os dados que deseja concatenar, depois, numa coluna em branco, digite as informações:

'Ofício:' || "Campo_numero_oficio" || ', de' || "campo_data_oficio" || ', versando sobre ' || "campo_titulo_assunto"

As aspas simples servirão para demarcar o texto literal a ser concatenado com os campos, os quais vêm entre aspas duplas; as duas barras verticais (geralmente localizadas ao lado da letra 'z' nos teclados modernos) são indicadores de concatenação na sintaxe do HSQL (linguagem usada pelo LO Base). Apenas mais uma pitada de informação.

*(aqui testei apenas criando um campo dentro da consulta SQL e no relatório, ao colocar o txtBox, ficou uma beleza; falta-me agora conseguir formatar apenas os trechos que desejo)

imagem do gravatar de LeviLevi ( 2019-05-01 07:45:38 +0200 )editar
0

respondidas 2019-04-30 02:41:24 +0200

imagem do gravatar de Levi

updated 2019-05-02 19:07:50 +0200

Grafeno, passou perto. Todavia, acredito que esteja na sintaxe do Access2Base, coisa que não estou usando e, de certa forma, não pretendo usar, apenas se ela fosse exatamente igual à do Access, pois me encurtaria o tempo de aprendizagem. Já usei esse tipo de solução e quebra muito o "galho" nessas horas de sofrimento. Vou marcar sua resposta como correta, embora continuarei procurando. Sei que é difícil. Por exemplo, tive problemas hoje com o "PriorRecord", pois o 'uno' não usa a palavra "prior", ele utiliza "previous", mas encurtada para "PrevRecord" e, até descobrir isso, lá se vai mais um dia. Segue aí a macro para quem precisar criar um objeto ou botão para retornar ao registro anterior; para quem quiser usar para primeiro registro, próximo, ou último, troque a expressão "PrevRecord" por "FirstRecord", "NextRecord", "LastRecord", e mude o nome da macro para identificá-la conforme o caso:

Sub btnPrior

document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dispatcher.executeDispatch(document, ".uno:PrevRecord", "", 0, Array())

oDoc = ThisComponent oDocView = oDoc.getCurrentController()

oForm = oDoc.drawpage.forms(0)

End Sub

Obs.: para novos leitores e usuários A macro acima foi adulterada do seguinte 'link': "https://forum.openoffice.org/en/forum...". O campo de texto utilizado pelo Grafeno faz parte do "impress-report", que pode ser instalado no Base, como alternativa ao padrão que já vem instalado. O que é mostrado na figura do Grafeno permite melhor organização dos campos, pois não é estático como o padrão instalado. Resultado abaixo: Descrição da imagem

editar assinalar como ofensivo Excluir Link mais

Comentários

@Levi, obrigado pelo feedback. Mas quanto ao "campo de texto utilizado pelo Grafeno", cabe um esclarecimento: o "Editor de Relatório" (libreoffice-report-builder) hoje é um pacote padrão nas versões que são baixadas diretamente do site do LibreOffice. Porém, ele requer que o ambiente de execução Java esteja instalado.

imagem do gravatar de GrafenoGrafeno ( 2019-04-30 04:33:04 +0200 )editar

Aqui tive que instalar o Base e report, posteriormente.

imagem do gravatar de LeviLevi ( 2019-04-30 19:58:36 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2019-04-24 18:22:34 +0200

Lidas: 72 vezes

Última atualização: May 02