Partilhar via


Aceder a dados no SQL Server

Adicionar uma origem de dados

Acesso direto:

Se você selecionar a opção Iniciar com dados ao criar um aplicativo, a propriedade Itens da sua galeria usará uma fórmula Power Fx com um nome de fonte de dados que aponta diretamente para a tabela do banco de dados.

Por exemplo, se tiver uma BOOKLENDING tabela, verá esta fórmula:

Search([@'[dbo].[BOOKLENDING]'], SearchInput1.Text, author, author,book_name,category)

Vistas e procedimentos armazenados:

Um padrão profissional comum de acesso a dados é usar modos de exibição e, em seguida, procedimentos armazenados para criar, atualizar e excluir em vez de permitir acesso direto. Se pretender utilizar vistas ou procedimentos armazenados, altere a fórmula de exemplo. Da mesma forma, o formulário para o registro não usa a abordagem direta interna da SubmitForm() fórmula.

Acionadores:

Um padrão de base de dados é usar acionadores em tabelas. Se uma tabela tiver um gatilho, você não poderá usar o padrão Submit() direto para criar, atualizar e excluir. Submit() conflitos com a manipulação de gatilhos SQL e o comportamento interno do Power Apps, que usam o mesmo parâmetro de saída.

Você pode acessar diretamente a tabela para consultas, mas para manipular Create, Updateou Delete, chamar um procedimento armazenado.

Nota

O conector do SQL Server, como todos os conectores que trabalham com dados relacionais, pressupõe que as tabelas tenham uma chave primária. Uma chave primária é fundamental para localizar registos específicos a atualizar. Se uma tabela do SQL Server não tiver uma chave primária, os dados serão somente leitura. Se tiver direitos de acesso e edição para a tabela do SQL Server, considere adicionar uma chave gerada automaticamente.

Utilizar uma vista

Um modo de exibição é uma consulta salva que é mostrada como uma única tabela de dados.

As exibições aparecem na lista de tabelas que você pode selecionar ao adicionar uma fonte de dados. As vistas suportam apenas consultas, não atualizações. Para atualizar dados, use um procedimento armazenado.

Se você criar uma tabela com a Start with data opção, obterá telas e fórmulas que mostram registros em uma galeria e formulário. Você vê fórmulas e funcionalidades para criar, editar e excluir registros. Mas se você usar um modo de exibição, verá apenas uma tela de exibição para a galeria e o formulário.

Você pode querer telas geradas automaticamente para Start with data visualizações.

Para usar esta opção gerada automaticamente:

  1. Escolha Start with data com uma tabela básica.
  2. Elimine e substitua a origem de dados da tabela.

Examplo:

Por exemplo, se tiver uma BOOKLENDINGVIEW tabela e a adicionar como fonte de dados para o Power Apps, a fórmula pode ser tão simples como:

BOOKLENDINGVIEW

Você também pode substituir outras fórmulas de criação, atualização e exclusão por uma fonte de dados de exibição e chamadas para procedimentos armazenados.

Utilizar procedimentos armazenados

Ao adicionar uma ligação do SQL Server à sua aplicação, pode adicionar procedimentos armazenados e chamá-los diretamente no Power Fx.

Nota

Esta funcionalidade também funciona com ligações implícitas seguras.

Captura de ecrã que mostra listas de tabelas, vistas e procedimentos armazenados disponíveis para serem adicionados à sua aplicação.

Depois de selecionar um procedimento armazenado, um nó filho é exibido e você pode designar o procedimento armazenado como Seguro para uso em galerias e tabelas.

Um procedimento armazenado é seguro se não executar nenhuma ação que possa ser indesejada em determinados cenários. Por exemplo, se um procedimento armazenado coletar todas as contas de uma determinada cidade e, em seguida, enviar um e-mail para elas, talvez nem sempre você queira que os e-mails sejam enviados toda vez que o procedimento armazenado for chamado. Nesse caso, não marque o procedimento armazenado como seguro.

Verifique um procedimento armazenado como seguro apenas se:

  1. Não houver efeitos colaterais em chamar este procedimento a pedido.

    Você pode chamar o procedimento várias vezes ou sempre que o Power Apps atualizar o controle. Quando você o usa com uma propriedade Items de uma galeria ou tabela, o Power Apps chama o procedimento armazenado sempre que o sistema determina que uma atualização é necessária. Não é possível controlar quando o procedimento armazenado é chamado.

  2. O procedimento armazenado retorna uma quantidade modesta de dados.

    As chamadas de ação, como procedimentos armazenados, não têm um limite para o número de linhas recuperadas. Eles não são paginados automaticamente em incrementos de 100 registros, como fontes de dados tabulares, como tabelas ou exibições.

    Se o procedimento armazenado retornar muitos dados (muitos milhares de registros), seu aplicativo poderá ficar lento ou falhar. Por motivos de desempenho, traga menos de 2.000 registros.

Se você verificar um procedimento armazenado como seguro, poderá atribuí-lo como uma propriedade Items em galerias ou tabelas em seu aplicativo.

Importante

O esquema dos valores de devolução do procedimento armazenado deve ser estático, para que os valores não sejam alterados de chamada para chamada. Por exemplo, se um procedimento armazenado retorna duas tabelas, ele sempre retorna duas tabelas. Você pode trabalhar com resultados específicos ou dinâmicos.

A estrutura dos resultados também precisa ser estática. Por exemplo, se o esquema dos resultados for dinâmico, os resultados serão dinâmicos e você deverá fornecer um tipo específico para usá-los no Power Apps. Para obter mais informações, consulte resultados dinâmicos.

Espaço de nomes SQL anexado ao nome do procedimento armazenado

O nome do namespace do SQL Server, onde você armazena o procedimento, é adicionado ao início do nome do procedimento armazenado. Por exemplo, todos os procedimentos armazenados no espaço de nomes do SQL Server 'DBO' têm 'dbo' no início do nome.

Por exemplo, quando adiciona um procedimento armazenado, pode ver mais do que uma origem de dados no seu projeto.

Captura de ecrã que mostra origens de dados SQL.

Chamar um procedimento armazenado

Para usar um procedimento armazenado no Power Apps, adicione o nome do conector antes do nome do procedimento armazenado, como Paruntimedb.dbonewlibrarybook.

Nota

Quando o Power Apps traz o procedimento armazenado, ele combina o namespace e o nome do procedimento para que dbo.newlibrarybook se torne dbonewlibrarybook.

Os argumentos são passados como um registo do Power Apps com pares de valores nomeados:

<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >})

Sugestão

Converta valores, se necessário, à medida que os passa para o procedimento armazenado, uma vez que está a ler a partir de um valor de texto no Power Apps. Por exemplo, se você estiver atualizando um inteiro em SQL, converta o texto no campo usando Value().

Eis um exemplo da possível aparência dos procedimentos armazenados ao atribuí-los a uma propriedade OnSelect.

Captura de tela que mostra como chamar procedimentos armazenados diretamente usando pares chave/valor e notação de pontos.

Variáveis e todos os procedimentos armazenados

Acesse um procedimento armazenado para a propriedade Items de uma galeria depois de declará-lo seguro para a interface do usuário. Referencie o nome da origem de dados e o nome do procedimento armazenado seguido por ResultSets. Acesse vários resultados fazendo referência ao conjunto de tabelas retornadas, como Tabela 1, Tabela 2 e assim por diante.

Por exemplo, um procedimento armazenado da tabela Paruntimedb com o nome dbo.spo_show_all_library_books() tem esta aparência:

Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1

Esta consulta preenche a galeria com registos. No entanto, os procedimentos armazenados são comportamentos de ação no modelo tabular. Refresh() só funciona com fontes de dados tabulares e não funciona com procedimentos armazenados. Atualize a galeria quando um registro for criado, atualizado ou excluído.

Nota

Quando utiliza um Submit() num formulário para uma origem de dados tabular, este chama efetivamente Refresh() nos bastidores e atualiza a galeria.

Use uma variável na OnVisible propriedade da tela e defina o procedimento armazenado como a variável.

Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);

Pode então definir a propriedade Items da galeria como o nome da variável.

SP_Books

Depois de criar, atualizar ou excluir um registro com uma chamada para o procedimento armazenado, defina a variável novamente para atualizar a galeria.

Paruntimedb.dbonewlibrarybook({   
  book_name: DataCardValue3_2.Text, 
  author: DataCardValue1_2.Text,
    ...
});
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);

Utilize Power Automate para chamar procedimentos armazenados

O Power Automate lida melhor com ações assíncronas. Chamar procedimentos armazenados como parte de uma série de chamadas em um processo comercial.

Para chamar Power Automate e, em seguida, chamar procedimentos armazenados, crie variáveis de entrada como parte do seu fluxo.

Captura de ecrã que mostra a entrada do Power Automate.

Em seguida, transmita as variáveis de entrada para a chamada do procedimento armazenado.

Executar procedimento armazenado

Adicione este fluxo do Power Automate à sua aplicação e chame-o. Passe argumentos opcionais como um registro "{ ... }”. O exemplo a seguir inclui todos os argumentos opcionais.

Power Automate fluxo