Eu tenho um banco de dados embutido no Libre Office. Eu estou construindo uma forma e me metendo em um problema.
Eu tenho uma tabela chamada "Autor" e outra tabela chamada "Publicação", conectada por uma terceira tabela "AuthorsAndPublications" (é um relacionamento m: n). Eu quero criar um formulário baseado em torno da tabela "Publicação", mas deve mostrar todos os autores da publicação atual em uma caixa de listagem não editável.
Como a fonte de dados para a caixa de listagem, eu escrevi a consulta SQL
SELECT "Author"."Surname" FROM "Author", "AuthorsAndPublications" WHERE "AuthorsAndPublications"."FK_Author" = "Author"."ID" AND "AuthorsAndPublications"."FK_Publication" = :publicationid
Agora, desejo que o parâmetro publicationid tenha automaticamente o valor do campo txtPublicationID, que está localizado no mesmo formulário que minha caixa de listagem. Então, quando o formulário é aberto e mostra a publicação com o ID 1, o listbox deve mostrar os autores da publicação 1, então quando eu navegar para a próxima publicação, os autores devem mostrar os autores da próxima publicação.
Depois de pesquisar documentação e exemplos, não consegui encontrar uma boa descrição do modelo de objeto do Libre Office. Eu não encontrei um exemplo abordando o meu caso, mas depois de ver outros semelhantes, o melhor que consegui foi:
SELECT "Author"."Surname" FROM "Author", "AuthorsAndPublications" WHERE "AuthorsAndPublications"."FK_Author" = "Author"."ID" AND "AuthorsAndPublications"."FK_Publication" = [ThisDatabaseDocument.FormDocuments.GetByName("PublicationForm").GetByName("txtPublicationID").currentvalue]
Mas esta consulta não funciona, só recebo o erro "Erro de sintaxe na expressão SQL".
Como faço para referenciar corretamente o valor da caixa de texto dentro da fonte de dados para a caixa de listagem?