Relatório com Label referenciando os dados de uma consulta

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 Base na imagem que postarei:

Complemento 2

Por exemplo, dê uma olhada nessa imagem abaixo:


Não consigo criar um botão de navegação customizado, não consigo inserir na barra de status um texto dinâmico…
Ou seja, fico apenas criando os relacionamentos nos formulários. É prático na hora de criar consultas, é, mas, por exemplo: já usei o Kexi, já usei o Gambas 1. O Gambas era muito bom, mas o Gentoo era muito complicado de usar e terminei por danificar o meu HD. O Gambas, perdoem-me se exagero, é excelente e muito fácil de começar a aprender mesmo sem ler um tutorial! Tem um autocompletar fantástico. O Kexi é muito bom no começo, tem muita coisa que o pessoal do LibreOffice poderia imitar do mesmo, todavia, não lembro agora, faltava-lhe umas coisas, e isso me fez desistir do mesmo. Já pesquisei em: AndrewMacro.odt, BasicGuide_Ooo3.2.0.odt, BH35BaseHandbook.odt, BH009Macros.pdf, GS5013-Introducao-a-Macros-ptbr.pdf, introducao-solucoes-material-para-avaliacao.pdf, LibOBasic-6-Dialogs-Flat-A4-EN-v103.pdf, mas nada encontrei que ensine como deve ser feito de um modo prático. Já macros escritas de formas diferentes para a mesma coisa: uma com padrão muito complexo, outra tão prática e rápida. Os tutorias que citei anteriormente, um chega a dar uma volta pela API LibreOffice para chegar em um comando para fechar uma simples janela. Queria explicar melhor o que estou procurando: além do básico de apenas criar uma tabela, gerar uma consulta, jogar os campos de dados num formulário e imprimir um relatório. Parece-me que os próprios desenvolvedores não se interessam em que aprenda a usar. Verifiquei que apenas oferecem certificação para funcionários de empresas que contratem os serviços de ensino e tem que ser de acordo com a quantidade que estipulam. Dez anos na luta e esmorecendo!

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

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

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,

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)

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’: “How Do I Create a Form Button to Add a New Record? (View topic) • Apache OpenOffice Community 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:

@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.

Aqui tive que instalar o Base e report, posteriormente.