Prezados,
Estou usando um LO 5.2.2.2.2 em um Ubuntu 16.10 (mas volta e meia preciso trabalhar com o mesmo projeto em um Ubuntu 12.04, LO 4.4.7.2), com banco HSQLDB externo. Anexo a este post seguem uma base de exemplo e um screenshot do diagrama.
Eu possuo duas tabelas no formato principal - detalhes. Ou seja, uma tabela que possui os dados principais, como ID de pedido, cliente, datas etc. em cada linha, e uma outra, detalhes, relacionada à primeira, com N linhas para cada linha da primeira tabela, como os itens de um pedido.
Para editar essas duas tabelas eu montei um formulário, vamos chamá-lo de pai, e dentro deste um subformulário, o filho. Para isso usei o wizard do LibreOffice Base, que deu bom resultado - a navegação funciona direitinho.
No subformulário é usado um controle de tabela, que reflete o conteúdo da tabela filho. O formulário todo acabou assim:
Eu preciso alterar via LO Basic (ou seja, programaticamente) um campo do Table Control. Como eu faço isso? Neste exemplo é um campo formatado, que recebe o resultado da conta Qtd * Preço * (1-Desc). No caso real vai ser um campo texto no qual eu vou inserir uma combinação dos outros campos, montando uma frase.
Por exemplo, preciso ler um dos campos do formulário-pai, ler o conteúdo do “Source Column” no Table Control (que está no subform), combiná-los e guardar o resultado no “Select” do Table Control. Como esse campo está atrelado a uma coluna da tabela filho, eu também preciso fazer esse conteúdo ser gravado nela.
Graças à ajuda do Grafeno, aqui no Fórum, eu aprendi a fazer isso em formulários simples, ou seja, a combinar o conteúdo de vários controles em um outro, e fazê-lo gravar no campo de tabela associado a este outro controle. Agora preciso fazer o mesmo com controles em subformulários. Para piorar, não é qualquer controle: é um TableControl. Fiz algumas buscas na web mas não consegui entender/usar o pouco que achei sobre esse controle, menos ainda sob subforms e praticamente nada dos dois combinados.
Grato pela atenção,
Fábio
Anexos:
- Base de exemplo: BeltranoOLTP.odb
- Screenshot do diagrama de relacionamentos: BeltranoOLTP_Relacionamentos.png