Como representar relacionamentos m: n em um formulário no Libre Office?

3

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?

    
por rumtscho 13.02.2013 / 17:48

0 respostas