Partilhar via


Aceder a dados no SQL Server

Acesso direto:

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

Por exemplo, se você tiver uma BOOKLENDING tabela, verá a seguinte fórmula:

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

Vistas e procedimentos armazenados:

Um padrão comum de acesso a dados profissionais é utilizar vistas e procedimentos armazenados para criar, atualizar e eliminar, em vez de permitir o acesso direto. Se pretender utilizar vistas ou procedimentos armazenados, tem de alterar a fórmula de exemplo. Da mesma forma, o formulário para o registo também não utiliza a abordagem direta incorporada da fórmula SubmitForm().

Acionadores:

Um padrão de banco de dados é usar gatilhos em tabelas. Se uma tabela tiver um acionador, não poderá utilizar o padrão direto Submit() para criar, atualizar e eliminar. Submit() tem um conflito entre o processamento de acionadores SQL e o comportamento incorporado do Power Apps, que utiliza o mesmo parâmetro de saída.

Pode, no entanto, aceder diretamente à tabela para fins de consulta, mas para processar Create, Update ou Delete deve chamar um procedimento armazenado.

Adicionar uma origem de dados

Utilizar uma vista

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

As vistas aparecem na lista de tabelas que pode selecionar quando adiciona um origem de dados. As visualizações suportam apenas consultas, não atualizações. Deve utilizar um procedimento armazenado para atualizações.

Se criar uma tabela com a opção Start with data, obtém ecrãs e fórmulas que apresentam registos numa galeria e num formulário. Você pode ver fórmulas e funcionalidades para criação, edição e exclusão. No entanto, se você usar um modo de exibição, verá apenas uma tela de exibição para a galeria e o formulário.

Pode pretender os ecrãs gerados automaticamente a partir de Start with data para vistas.

Para esta opção gerada automaticamente:

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

Examplo:

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

BOOKLENDINGVIEW

Você também pode substituir outras fórmulas de criação, atualização e exclusão por uma exibição origem de dados e chamadas de procedimento armazenado.

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ó subordinado aparece e pode designar o procedimento armazenado como Seguro para uso para 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 recolhesse todas as contas de uma determinada cidade e lhes enviasse um e-mail. Talvez nem sempre queira que os e-mails sejam enviados sempre que o procedimento armazenado é chamado. Portanto, o procedimento armazenado não deve ser marcado como seguro.

Verifique um procedimento armazenado como seguro apenas se:

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

    Deve ser capaz de chamar o procedimento várias vezes ou sempre que o Power Apps atualizar o controlo. Quando usado com uma propriedade de Itens 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. Você retorna uma quantidade modesta de dados no procedimento armazenado.

    As chamadas de ação, como procedimentos armazenados, não têm um limite para o número de linhas recuperadas. Não são automaticamente paginados em incrementos de 100 registos, como origens de dados tabulares, tais como tabelas ou vistas.

    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 marcar um procedimento armazenado como seguro, pode atribuí-lo como uma propriedade Items em galerias para as tabelas utilizarem na sua aplicação.

Importante

O esquema dos valores de retorno 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. Pode trabalhar com resultados digitados ou não digitados.

A estrutura dos resultados também precisa ser estática. Por exemplo, se o esquema dos resultados for dinâmico, os resultados não serão digitados e terá de fornecer um tipo para os utilizar no Power Apps. Para obter mais informações, consulte Resultados não tipados.

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

O nome do espaço de nomes do SQL Server, onde armazena o procedimento, é anexado ao 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 você adiciona um procedimento armazenado, você pode ver mais de um origem de dados em seu projeto.

Captura de ecrã que mostra origens de dados SQL.

Chamando um procedimento armazenado

Para utilizar um procedimento armazenado no Power Apps, prefixe o nome do procedimento armazenado seguido pelo nome do conector associado, como Paruntimedb.dbonewlibrarybook.

Nota

Quando Power Apps traz o procedimento armazenado, ele concatena 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

Lembre-se de converter valores, se necessário, ao passá-los para o procedimento armazenado, uma vez que está a ler um valor de texto no Power Apps. Por exemplo, se estiver a atualizar um número inteiro em SQL deve converter o texto no campo utilizando Value().

Veja um exemplo de como os procedimentos armazenados podem parecer ao atribuí-los a uma OnSelect propriedade.

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

Pode aceder a um procedimento armazenado para a propriedade Items de uma galeria depois de a declarar segura para a IU. Faça referência ao nome de origem de dados e ao nome do procedimento armazenado seguido por ResultSets. Pode aceder a vários resultados referenciando o conjunto de tabelas devolvidas, tais como Tabela 1, Tabela 2, etc.

Por exemplo, um procedimento armazenado acedido a partir da tabela Paruntimedb com o nome dbo.spo_show_all_library_books() tem o seguinte aspeto:

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 pode ser usado com procedimentos armazenados. Deve atualizar a galeria quando um registo é criado, atualizado ou eliminado.

Nota

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

Utilize uma variável na propriedade OnVisible para o ecrã e defina o procedimento armazenado para 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

Power Automate lida melhor com ações assíncronas. Pode chamar procedimentos armazenados como parte de uma série de chamadas num processo de negócio.

Para chamar o Power Automate seguido de uma chamada para procedimentos armazenados, crie variáveis de entrada como parte do seu fluxo.

Captura de tela que mostra a Power Automate entrada.

Em seguida, passe 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. Os argumentos opcionais são passados como um registro "{ ... }”. O exemplo a seguir tem todos os argumentos opcionais.

Power Automate fluxo