Neste artigo, veja como criar uma ligação para editar um registro a partir de uma consulta utilizada em uma ligação de captura.
Não podemos utilizar a ligação de edição neste caso, pois o botão para editar não estará disponível quando acessamos a grid para a captura de um valor.
Levando em consideração que o link de captura já está configurado, siga os passos abaixo para configurar a consulta(utilizada na captura) e o formulário(utilizado na edição do registro)
Aplicação de Consulta
Na aplicação de consulta, iremos criar um link para a edição do registro utilizando a
macro sc_link.
Adicionando a imagem de edição na aplicação
Primeiramente devemos adicionar a imagem que será utilizada na consulta para simbolizar o botão de edição.
Por que adicionar as imagens na opção Imagens Extras da Aplicação?
Sempre devemos adicionar as imagens que serão utilizadas em códigos. Isso garante que ao realizar a publicação, a imagem será envia e além disso está armazenada no mesmo diretório, tanto na publicação como no ambiente de desenvolvimento, fazendo com a imagem não fique quebrada após a publicação.
1 - No menu lateral na aplicação de consulta, acesse: Aplicação > Configurações
2 - Na opção
Imagens Extras da Aplicação clique no ícone para adicionar uma imagem:
3 - No gerenciador de imagens, clique em Projeto > Icons
4 - Clique em Arquivo > Upload e selecione o ícone que irá representar o botão de editar registro.
As imagens adicionadas serão armazenadas neste diretório ../_lib/img/
Ao realizar o upload, alguns prefixos são adicionados ao nome da imagem, de acordo com o diretório onde será armazenada.
As Imagens podem ser salvas nos diretórios: Público, Projeto e Usuário.
- Público - sys__NM__
- Projeto - grp__NM__
- Usuário - usr__NM__
Dentro de cada diretório existem alguns sub-diretórios: background images, button images, general images, icons e menu images.
- background images - bg__NM__
- button images - btn__NM__
- general images - img__NM__
- icons - ico__NM__
- menu images - menu_img__NM__
Ao salvar uma imagem com o nome contract.png no diretório Projeto > Icons, como no tutorial, o nome da imagem deve está desta forma:
grp__NM__ico__NM__contract.png
Criando um campo virtual
Devemos criar um camp para receber o link de redirecionamento para o formulário.
1 - Clique na opção Novo Campo
2 - Defina o nome do campo que deve ser do tipo texto.
3 - Remova a label do campo e defina o alinhamento do título como na imagem abaixo.
Evento onScriptInit
Neste evento, iremos resetar o valor da variável global que será passada para o formulário.
Desta forma, garantimos que a variável sempre estará sem valor clicarmos no registro que será editado.
Código utilizado no evento
- // Reseta a variável global que será passada como parâmetro para o formulário.
- sc_reset_global([id_customer]);
Evento onRecord
No evento onRecord, iremos definir o link usando a macro sc_link e a imagem que será exibida no campo criando anteriormente, usando a tag img.
Código utilizado no evento
As imagens inseridas na opção Imagens Extras da Aplicação serão armazenadas no diretório ../scriptcase/app/projeto_name/_lib/img
Desta forma, para atribuirmos uma imagem a um campo, devemos usar a tag img informando o diretório da imagem e o nome desta forma:
../_lib/img/grp__NM__ico__NM__contract.png
- // Define a imagem que irá representar o botão de editar o registro.
- {link} = '<img src="../_lib/img/grp__NM__ico__NM__contract.png">';
- // Lembrando que o parâmetro id_customer será recebido como variável global no formulário.
- sc_link (link, form_customers.php, id_customer = {customerid}, "Clique aqui para editar o registro", "_self");
Na aplicação de formulário, iremos adicionar uma variável global no SQl da aplicação alem de um validação no evento onApplicationInit.
Configuração do SQL
Nas configurações do SQL do formulário, que será chamado para editar o registro, adicione uma variável global. No exemplo, estamos usando a variável [where]
Evento onApplicationInit
Neste evento, que é executado antes da montagem do SQL da aplicação, deve ser definido o valor da variável [where], para que o formulário seja executado corretamente.
É necessário validar se a variável [id_customer], passada como parâmetro na macro sc_link no onRecord da consulta, possui um valor.
Serão duas situações possíveis:
- Caso a variável [id_customer] esteja vazia - Nesta situação, a variável [where] deve receber uma sing vazia. Desta forma, o formulário irá retornar todos os registros normalmente.
- Caso a variável [id_customer] possua um valor - Isso implica que algum registro foi selecionado na grid para ser editado. Desta forma, a variável [where] deve receber a query que irá exibir apenas o registro selecionado na consulta.
Lembrando que devemos utilizar um campo chave para criar esta ligação.
Código utilizado no evento
- //Valida se o parâmetro passado pela consulta possui um valor
- if ( empty( [id_customer] )) {
- // Se [id_customer] estiver vazio, a variável [where] deve receber uma string vazia, fazendo com que o formulário exiba todos os seus registros.
- [where] = '';
- // Se [id_customer] possuir um valor, entrará no else
- } else {
- // Neste caso, a variável [where] irá receber a query para exibir apenas registro selecionado na consulta.
- [where] = "customerid = '[id_customer]' ";
- }
Grid em funcionamento
Aplicação de consulta, aberta a partir de um link de captura com o botão de editar registro.