Neste artigo, veja como criar uma ligação para editar um registro a partir de uma consulta utilizada em uma ligação de captura.

![](//img.zohostatic.com/zde/static/images/info.png)

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](https://www.scriptcase.com.br/docs/pt_br/v9/manual/14-macros/02-macros/#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.

![](//img.zohostatic.com/zde/static/images/file.png)

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**

![](https://help.scriptcase.net/galleryDocuments/edbsn8bd8375803f37de381a71219d422520024d280bfc489a8350b55f27f47bb2f1db48bc13899c0c91ee79fc9627567877e?inline=true)

2 - Na opção **Imagens Extras da Aplicação** clique no ícone para adicionar uma imagem:  ![](https://help.scriptcase.net/galleryDocuments/edbsndcdbda358c874c49a442574317173cc25aed9ac556eae255232f90596816c77af8e7c0f855d94706706ebd4c03ddd0c6?inline=true)

3 - No gerenciador de imagens, clique em **Projeto > Icons**

![](https://help.scriptcase.net/galleryDocuments/edbsnd1b5699cb0aa45afa28fa32c29f0b78958171f9254e03ed496176ebd96a325f6761a1fd2b55c05098593f87751441c69?inline=true)

4 - Clique em Arquivo > Upload e selecione o ícone que irá representar o botão de editar registro.

![](https://help.scriptcase.net/galleryDocuments/edbsn0aa99b86fe35f0f1cea2e38da176821390acb6a8f787ad34387352d7f3c0cb18af6c56a9a8a422c2c60769c6568ed043?inline=true)

![](//img.zohostatic.com/zde/static/images/info.png)

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**

![](https://help.scriptcase.net/galleryDocuments/edbsn86eb67cbd6a423437d32cea7dc74a9362ffa0c4389e3fe9f91d0dafaccaf75c1be048332468ed1e191d0b11930e94575?inline=true)

2 - Defina o nome do campo que **deve ser do** **tipo texto**.

![](https://help.scriptcase.net/galleryDocuments/edbsn11f4dec6e2227838a279b4a3c24b3885ebd598cbbc523422cd61b3d8f6d5f25424a8e6eeb91a8ade11f627c77ed68a09?inline=true)

3 - Remova a label do campo e defina o alinhamento do título como na imagem abaixo.

![](https://help.scriptcase.net/galleryDocuments/edbsn1d6e3b22493acb8783798b42c65af8a1bfd0fff00c3f21cf5b5b5b3184dc75f38168853ae15fd9528b2583d2fecb5a43?inline=true)

### 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.

![](https://help.scriptcase.net/galleryDocuments/edbsn86eb67cbd6a423437d32cea7dc74a9363b938c35a0ce6567f75e45c210a32932101a4bd49b61ce12404861ca837dc645?inline=true)

**Código utilizado no evento**

1. // Reseta a variável global que será passada como parâmetro para o formulário.
2. 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.

![](//img.zohostatic.com/zde/static/images/info.png)

Para mais detalhes sobre a macro sc\_link, [acesse nossa documentação](https://www.scriptcase.com.br/docs/pt_br/v9/manual/14-macros/02-macros/#sc_link).

![](https://help.scriptcase.net/galleryDocuments/edbsn65163eb12c4f4db3cca0f64e1d3a03679c873bf45e770ac67770742547b2f5b2e9af05c6dc9d237c010ba39886c217f5?inline=true)

**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**

  

1. // Define a imagem que irá representar o botão de editar o registro.
2. {link} = '![](../_lib/img/grp__NM__ico__NM__contract.png)';
4. // Lembrando que o parâmetro **id\_customer** será recebido como variável global no formulário.
5. sc\_link (link, form\_customers.php, id\_customer = {customerid}, "Clique aqui para editar o registro", "\_self");

## Aplicação Formulário

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]**

![](https://help.scriptcase.net/galleryDocuments/edbsn7174d93b11aeb121622c42e146386322dbf3c8b851ca2328e6fbe4d68888a4ee7c25a24cd0db7d50f2370533f02611e4?inline=true)

### 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:

1. 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.

1. 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.

![](https://help.scriptcase.net/galleryDocuments/edbsn45c401a139c82edd084be6b050f264f0c02165466ed20be439dd409cd4561d6c6ac372995fd2cbb29c71585376628072?inline=true)

**Código utilizado no evento**

1. //Valida se o parâmetro passado pela consulta possui um valor
2. if ( empty( [id\_customer] )) {
3. // 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.
4. [where] = '';
5. // Se [id\_customer] possuir um valor, entrará no else
6. } else {
7. // Neste caso, a variável [where] irá receber a query para exibir apenas registro selecionado na consulta.
8. [where] = "customerid = '[id\_customer]' ";
9. }

## Grid em funcionamento

Aplicação de consulta, aberta a partir de um link de captura com o botão de editar registro.

![](https://help.scriptcase.net/galleryDocuments/edbsn86eb67cbd6a423437d32cea7dc74a93689ec85598d8c0d7eaa14952d5a36076fc38e0b17ea24d966d7f17a750a940dc1?inline=true)