Aplicações Web com Webbroker – Parte III
Veja neste artigo de Fabricio Desbessel, a terceira parte sobre aplicações Web com Webbroker.
Aplicações Web – Webbroker – Parte III
Nesse terceiro artigo vamos criar a parte de alteração de registro. Primeiramente abra seu editor de HTML, e crie um documento que contenha um formulário com campos para alterar o registro e um botão. Veja como deve ficar a página na Figura 1.
Figura 1. Pagina HTML para alteração
Para um layout mais correto, crie uma tabela de 5 linhas e 2 colunas. Na primeira coluna coloque o texto referente ao campo e na segunda coloque um TextField . Também é necessário colocar um Name nos TextField’s. Coloque os nomes conforme os campos da tabela de países. Como essa página nos trará os campos preenchidos, pois, queremos alterar um registro, precisaremos criar Tag’s que o Delphi reconheça no Value dos TextField’s. Dependendo do seu editor Htlm talvez seja necessário alterar isso através do código.
Veja como fica o código Html do TextField nome:

Todos os campos do formulário deverão seguir esse padrão: com o nome igual ao campo da tabela e com uma tag (<#NOME>) que o Delphi possa reconhecer. Para o campo nome ainda é necessário defini-lo com leitura pois o mesmo é o nosso campo da chave da tabela e não poderemos alterá-lo. Para isso é necessário acrescentar readonly na definição do campo. Então o código inteiro ficará:

Lembrando, readonly é só no campo nome. No Action do Form Html coloque: Country.exe/alterarGravar
Salve o arquivo como alterar.htm dentro da pasta da aplicação. Agora no Delphi, adicione mais um componente PageProducer da paleta Internet. Mude sua propriedade Name para pgpAlterar e na propriedade HTMLFile encontre o arquivo alterar.htm salvo anteriormente.
Precisaremos criar componentes de acesso aos dados que nos traga somente o registro que deve ser alterado. Então teremos uma consulta com parâmetro. Coloque e configure o seguinte componente:
SqlDataSet (Paleta DBExpress)
-Mude a propriedade SQLConnection para SqlConnection1
-CommandType para ctQuery
-CommandText para Select * From COUNTRY Where NAME = :NAME
-Name para sdsPais
-PARAMS defina o DataType para ftString do parâmetro NAME
-Clique duas vezes sobre o componente
-No FieldEditor (tela que se abriu quando clicou duas vezes), clique com o botão direito do mouse (abrindo o menu de contexto) e escolha Add fields... (ou CTRL+A). Nesse momento serão adicionados os campos existentes na tabela Country.
Como precisamos somente as informações de um único registro, não precisamos utilizar o Provider e nem o ClientDataSet. Também teremos que criar a ação alterar no WebModule. Clique duas vezes no WebModule e no ActionList, clique no botão Add New. Na propriedade PathInfo coloque /alterar. No evento onAction dessa ação coloque o seguinte código:
Listagem 1. Código da ação /alterar
sdsPais.Params.ParamValues['NAME']:=
Request.QueryFields.Values['NAME'];
sdsPais.Open;
Response.Content:=pgpAlterar.Content;
sdsPais.Close;
Esse código preenche o parâmetro com a informação passada no link, através de um campo de consulta (Request.QueryFields). Abre a consulta e chama o Response do Page Producer. No Page Producer colocaremos o código para substituir os values dos campos conforme o resultados da consulta. Coloque o seguinte código no evento OnHtmlTag do pgAlterar:
Listagem 2. Código do evento OnHtmlTag do pgAlterar
if TagString='nome' then
ReplaceText:=sdsPaisNAME.Value;
if TagString='capital' then
ReplaceText:=sdsPaisCAPITAL.Value;
if TagString='continente' then
ReplaceText:=sdsPaisCONTINENT.Value;
if TagString='area' then
ReplaceText:=FloatToStr(sdsPaisAREA.Value);
if TagString='populacao' then
ReplaceText:=FloatToStr(sdsPaisPOPULATION.Value);
Note que para cada campo é necessário verificar a TagString e sobrepor o texto conforme a informação solicitada. Com isso, já estamos exibindo a informação que queremos alterar. Agora falta tratarmos da ação que receberá os campos alterados e salvará na base de dados. Para executar a alteração vamos criar uma instrução SQL de Update em um Componente SQLDataSet. Então adicione esse componente no Data Module e configura suas propriedades como segue:
-Mude a propriedade SQLConnection para SqlConnection1
-CommandType para ctQuery
-CommandText para :
Update COUNTRY Set
CAPITAL=:Capital,
CONTINENT=:Continente,
AREA=:Area,
POPULATION=:Populacao
Where
NAME=:Nome
-Name para sdsAlterar
-Params defina o DataType para ftFloat para os parâmetros Área e População e, para os outros defina como ftString.
Agora é necessário criar a outra ação alterar no WebModule. Clique duas vezes no WebModule e no ActionList, clique no botão Add New. Na propriedade PathInfo coloque /alterarGravar. No evento onAction dessa ação coloque o seguinte código:
Listagem 3. Código da ação /alterarGravar
sdsAlterar.Params.ParamValues['Nome']:=
Request.ContentFields.Values['nome'];
sdsAlterar.Params.ParamValues['Capital']:=
Request.ContentFields.Values['capital'];
sdsAlterar.Params.ParamValues['Continente']:=
Request.ContentFields.Values['continente'];
sdsAlterar.Params.ParamValues['Area']:=
StrToFloat(Request.ContentFields.Values['area']);
sdsAlterar.Params.ParamValues['Populacao']:=
StrToFloat(Request.ContentFields.Values['populacao']);
sdsAlterar.ExecSQL();
Response.Content:=pgpLista.Content;
Esse código busca as informações dos campos da página (Request.ContentFields) e passa para os parâmetros da SQL. Com o ExecSQL a instrução é executada no banco de dados e depois respondemos a página que listas os Países. No próximo artigo veremos como excluir um registro.
Até breve!
Figura 2. Tela de alteração em funcionamento

Space do autor


Estudo comparativo entre banco de dados IBM Informix e Microsoft SQL


0
1
Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!