Conteúdo
Índice 🔎︎

# Dados

O separador Dados define as propriedades de formulário referentes à base de dados associada ao formulário.

Define a origem de dados em que o formulário se baseia ou especifica se os dados podem ser editados pelo utilizador. Para além das funções de ordenação e de filtro, poderá encontrar igualmente todas as propriedades necessárias à criação de um subformulário.

Para aceder a este comando...

Abra o menu de contexto de um elemento de formulário selecionado e escolha Formulário - Dados.

Abra a barra de ferramentas Controlos de formulário ou a barra de ferramentas Design de formulário e clique no ícone Controlo, separador Dados

## Adicionar apenas dados

Determina se o formulário permite apenas a adição de novos dados (Sim) ou se permite igualmente a adição de outras propriedades (Não).

Se Adicionar apenas dados for definido para "Sim", não é possível modificar ou eliminar dados.

## Analisar comando SQL

Especifica se a instrução SQL deve ser analisada pelo LibreOffice. Se estiver definida como Sim, pode clicar no botão ... junto à caixa de lista Conteúdo. Esta operação abrirá uma janela na qual pode criar graficamente uma consulta de base de dados. Ao fechar esta janela, a instrução SQL para a consulta criada será inserida na caixa de lista Conteúdo.

## Barra de navegação

Especifica se é possível utilizar as funções de navegação da barra de formulários inferior.

A opção "Formulário principal" é utilizada para subformulários. Se escolher esta opção para um subformulário, pode navegar utilizando os registos do formulário principal, caso o cursor se encontre no subformulário. Um subformulário é associado ao formulário principal através de uma relação 1:1, pelo que a navegação é sempre executada no formulário principal.

## Ciclo

Determina a forma como a navegação deve ser efetuada, utilizando a tecla Tab. Com a tecla Tab, é possível avançar no formulário. Se premir simultaneamente a tecla Shift, a navegação é efetuada no sentido oposto. Se atingir o último (ou o primeiro) campo e premir novamente a tecla Tab, podem ser verificados vários efeitos. Define o controlo de teclas com as seguintes opções:

Opção | Significado
Padrão | Esta definição define automaticamente um ciclo, que sucede a uma ligação existente à base de dados: se o formulário contiver uma ligação à base de dados, a tecla Tab inicia, por defeito, uma modificação ao registo anterior ou seguinte ao sair do último campo (ver Todos os registos). Se não existir qualquer ligação à base de dados, é apresentado o formulário seguinte/anterior (ver Página atual).
Todos os registos | Esta opção só se aplica a formulários de base de dados e é utilizada para navegar através de todos os registos. Se usar a tecla Tab para sair do último campo de um formulário, o registo atual é modificado.
Registo ativo | Esta opção só se aplica a formulários de base de dados e é utilizada para navegar no registo atual. Se utilizar a tecla Tab para sair do último campo de um formulário, o registo atual é modificado.
Página atual | Ao sair do último campo de um formulário, o cursor avança para o primeiro campo do formulário seguinte. Este é o padrão para formulários HTML; por este motivo, esta opção é especialmente relevante para formulários HTML.

## Conteúdo

Determina o conteúdo a utilizar no formulário. O conteúdo pode ser constituído por uma tabela ou uma consulta existente (previamente criada na base de dados) ou pode ser definida através de uma instrução SQL. Antes de introduzir um contexto, é necessário definir o tipo exato em Tipo de conteúdo.

Se tiver selecionado "Tabela" ou "Consulta" em Tipo de conteúdo, a caixa apresenta todas as tabelas e consultas definidas na base de dados selecionada.

## Filtrar

Introduza as condições necessárias à filtragem dos dados do formulário. As especificações de filtro seguem regras de SQL, sem ser utilizada a cláusula WHERE. Se, por exemplo, pretender mostrar todos os registos com o nome "Mike", digite no campo de dados: Forename = 'Mike'. Também pode combinar condições: Forename = 'Mike' OU Forename = 'Peter'. Serão mostrados todos os registos correspondentes a estas duas condições.

A função de filtro está disponível em modo de utilizador através dos ícones Filtro automático e Filtro padrão existentes na barra Navegação em formulários.

## Ligar campos principais

Se criar um subformulário, introduza o campo de dados do formulário ascendente que é responsável pela sincronização entre ascendente e subformulário. Para introduzir vários valores, prima Shift + Enter após cada linha de entrada.

O subformulário é baseado numa consulta de SQL; mais especificamente, numa Consulta de parâmetros. Se for introduzido o nome de um campo na caixa Ligar campos principais, os dados incluídos nesse campo do formulário principal são lidos para uma variável, que é necessário introduzir em Ligar campos subordinados. Numa instrução SQL apropriada, esta variável é comparada com os dados de tabela a que o subformulário faz referência. Em alternativa, é possível introduzir o nome da coluna na caixa Ligar campos principais.

Considere o seguinte exemplo:

A tabela de base de dados em que o formulário se baseia corresponde, por exemplo, a uma base de dados de clientes ("Customer"), na qual foi atribuído a cada cliente um número exclusivo num campo de dados com o nome "Cust_ID". Os pedidos de um cliente são mantidos noutra tabela da base de dados. Neste momento, pretende verificar os pedidos de cada cliente após a respetiva introdução no formulário. Para tal, é necessário criar um subformulário. Em Ligar campos subordinados, introduza o campo de dados da base de dados de clientes que identifica o cliente de forma evidente, ou seja, Cust_ID. Em Ligar campos subordinados, introduza o nome de uma variável que deve aceitar os dados do campo Cust_ID, por exemplo, x.

O subformulário deve mostrar os dados apropriados da tabela de pedidos ("Orders") para cada ID de cliente (Customer_ID -> x). Este procedimento só é possível se cada pedido for exclusivamente atribuído a um cliente na tabela de pedidos. Em alternativa, é possível utilizar outro campo com o nome Customer_ID; no entanto, para garantir que este campo não é confundido com o mesmo campo do formulário principal, o campo tem o nome Customer_Number.

Compare o Customer_Number na tabela "Orders" com o Customer_ID da tabela "Customers". Para tal, é possível utilizar, por exemplo, a variável x com a seguinte instrução SQL:

SELECT * FROM Orders WHERE Customer_Number =: x (se pretender que o subformulário apresente todos os dados da tabela de pedidos)

ou:

SELECT Item FROM Orders WHERE Customer_Number =: x (se pretender que o subformulário da tabela de pedidos apresente apenas os dados incluídos no campo "Item")

A instrução SQL pode ser introduzida no campo Origem de dados, ou é possível criar uma consulta parametrizada apropriada, que pode ser utilizada para criar o subformulário.

## Ligar campos subordinados

Se criar um subformulário, introduza a variável na qual possam ser armazenados valores possíveis do campo do formulário ascendente. Se um subformulário tiver como base uma consulta, introduza a variável que definiu na consulta. Se criar um formulário utilizando uma instrução SQL introduzida no campo Origem de dados, introduza a variável que utilizou na instrução. É possível escolher qualquer nome de variável. Se pretender introduzir vários valores, prima Shift + Enter.

Se especificou, por exemplo, o campo Customer_ID da base de dados como campo ascendente em Ligar campos principais, é possível definir, em Ligar campos subordinados, o nome da variável na qual os valores do campo Customer_ID da base de dados devem ser armazenados. Se especificar, agora, uma instrução SQL na caixa Origem de dados utilizando esta variável, os valores relevantes são apresentados no subformulário.

## Ordenar

Especifica as condições de ordenação dos dados no formulário. A especificação das condições de ordenação segue regras de SQL, sem ser utilizada a cláusula ORDER BY. Por exemplo, se pretender que todos os registos de uma base de dados sejam ordenados de forma ascendente num campo e de forma descendente noutro campo, introduza Forename ASC, Name DESC (presumindo que Forename e Name são os nomes dos campos de dados).

Pode utilizar os ícones apropriados da barra Navegação em formulários, em Modo de utilizador para ordenar: Ordem ascendente, Ordem descendente, Ordenar.

## Origem de dados

Define a origem de dados a que o formulário deve fazer referência. Se clicar no botão ..., é apresentada a caixa de diálogo Abrir, na qual é possível selecionar uma origem de dados.

## Permitir adições

Determina se é possível adicionar dados.

## Permitir eliminações

Determina se é possível eliminar os dados.

## Permitir modificações

Determina se é possível modificar os dados.

## Tipo de conteúdo

Define se a origem de dados deve ser constituída por uma base de dados ou uma consulta existente, ou se o formulário deve ser gerado com base numa instrução SQL.

Se escolher "Tabela" ou "Consulta", o formulário fará referência à tabela ou consulta que especificar em Conteúdo. Se pretender criar uma nova consulta ou um subformulário, tem que escolher a opção "SQL". Em seguida, pode introduzir a instrução para a consulta de SQL ou para o sub-formulário no separador Dados, na caixa Conteúdo de lista das propriedades de controlo.

## O que é um subformulário?

Os formulários são criados com base numa tabela de base de dados ou numa consulta de base de dados e mostram os dados de uma forma visualmente atrativa e podem ser utilizados para introduzir ou editar dados.

Se necessitar de um formulário que possa fazer referência aos dados de uma tabela ou consulta e, adicionalmente, mostrar dados de outra tabela, deve criar um subformulário. Por exemplo, este subformulário pode consistir numa caixa de texto que mostre os dados de outra tabela de base de dados.

Um subformulário é um componente adicional do formulário principal. O formulário principal pode ser designado por "formulário ascendente" ou "principal". Os subformulários são necessários a partir do momento em que pretenda aceder a mais do que uma tabela de um formulário. Cada tabela adicional requer o seu próprio subformulário.

Após a criação do formulário, este pode ser alterado para um subformulário. Para tal, ative o modo de design e abra o navegador de formulários. No navegador de formulários, arraste um formulário (que irá tornar-se num subformulário) para qualquer outro formulário (que irá tornar-se no formulário principal).

O utilizador do documento não conseguirá visualizar que o formulário tem subformulários. O utilizador visualiza apenas um documento no qual são introduzidos ou exibidos dados.

Especifique o campo principal de ligações a partir dos campos principais do modelo global. No subformulário, a ligação de campos subordinados pode ser definida como um campo, ao qual será feita a correspondência com o conteúdo da ligação de campos principais.

Quando o utilizador navega através dos dados, o formulário mostra sempre o registo de dados atuais. Se existem subformulários definidos, o seu conteúdo é exibido após um espaço de tempo de aproximadamente 200 ms. Este espaço de tempo permite a pesquisa rápida através dos registos de dados do modelo global. Se a navegação até ao próximo registo principal de dados ocorrer dentro desse espaço de tempo, não é necessária a recuperação e exibição dos dados de subformulário.