Dev (Back & Front)ARTIGO

Delphi para Internet, parte 3: Acessando dados XML com Intraweb

Leia mais artigos dessa série:

Delphi para Internet, parte 1

Delphi para Internet, parte 2

Olá pessoal

Tenho recebido vários emails pedindo a continuidade dos artigos sobre Intraweb, por isso criei esta terceira parte abordando o cadastro e consulta de dados em arquivos XML utilizando o framework Intraweb como interface.

Vamos primeiramente criar nosso XML,  seguindo a estrutura abaixo:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><br /><DATAPACKET Version="2.0"><br /><METADATA><br /><FIELDS><br /><FIELD attrname="NOME" fieldtype="string" WIDTH="20"/><br /><FIELD attrname="CIDADE" fieldtype="string" WIDTH="15"/><br /><FIELD attrname="PAIS" fieldtype="string" WIDTH="15"/><br /></FIELDS><br /><PARAMS/><br /></METADATA><br /><ROWDATA><br /><ROW NOME="JOAO" CIDADE="SAO PAULO" PAIS="BRASIL"/><br /><ROW NOME="EUFRAZIO" CIDADE="SANTOS" PAIS="BRASIL"/><br /><ROW NOME="ROONEY" CIDADE="MANCHESTER" PAIS="INGLATERRA"/><br /><ROW NOME="MALDINI" CIDADE="MILAO" PAIS="ITALIA"/><br /></ROWDATA><br /></DATAPACKET>

Note que no exemplo acima estão previamente cadastrados alguns registros, mas isso não é uma regra. Você pode muito bem criar apenas a estrutura sem nenhum registro.

Copie este XML e cole em um bloco de notas ou um editor de sua preferência, salvando-o como Dados.xml.

Feito o XML, crie um novo projeto Intraweb: File/New/Other/VCL for the web, de um nome para seu projeto e salve-o, de preferência no mesmo diretório de seu arquivo XML para uma melhor organização.

Criado o projeto e com seu WebForm na tela adicione os seguintes componentes:

Componente Nome Valor
*IWRegion rgCadastro
iwDbEdit DBENome
iwDbEdit DBECidade
iwDbEdit DBEpais
Iwlabel lblNome Nome:
Iwlabel lblCidade Cidade:
Iwlabel LblPais País:
IwDbNavigator Navegacao

*Nota: O IwRegion é semelhante a um Panel que estamos acostumados a ver em aplicativos Win32, neste exemplo colocaremos todos os controles ao lado dentro deste container.

Feito a parte de cadastro vamos para a parte de consultas, adicionando logo abaixo os seguintes componentes:

Componente Nome Valor
IwDbGrid DbgResultado
IwLabel lblPesquisa
Iwedit EdtPesquisa
IwButton btPesquisa

Coloque os componentes e o resultado final de seu layot deverá fica semelhante a figura abaixo:

Bem, nossa parte de layout está pronta vamos agora programar as funcionalidades de nossa página que é algo nada complicado.

Adicione um ClientDataSet e o renomeie como CDSCadastro, e na propriedade FileName busque o arquivo DADOS.XML, e logo após adicione os campos.

Concluída a parte de conexão com nosso XML adicione um datasource com o nome de dsCadastro e na propriedade Dataset selecione seu CDSCadastro como de costume numa aplicação win32.

Agora vamos linkar o CDSCadastro com os campos e com nosso dbNavigator:

Componente Propriedades
EdtNome Datasource=dsCadastro / Datafield=NOME
edtCidade Datasource=dsCadastro / Datafield=CIDADE
EdtPais Datasource=dsCadastro / Datafield=PAIS
Navegacao Datasource=dsCadastro / Datafield

 

*Detalhe importante: Setar a propriedade Active de seu CDS como true.

Agora compile seu projeto e veja o resultado, podemos navegar nos registros previamente criados, além de adicionar outros, excluir e alterar através de nosso iwDBnavigator.

Vamos para nossa parte de consulta, que será exibida em nosso Grid. Para isto dê um ctrl-c e ctrl-v no CDSCadastro e no dsCadastro renomeie para CDSConsulta e DsConsulta (não utilizei o mesmo CDS por questões óbvias, o ponteiro de consulta iria aparecer nos campos do cadastro), não é necessário setar a propriedade Filename pois já está setada.

Faça o link do dbgConsulta com o dsConsulta, através da propriedade Datasource, e agora é só programar a consulta no botão btConsulta através do evento Onclick ou AsyncClik caso você queira utilizar o Ajax.

procedure TIWForm2.btPesquisaClick(Sender: TObject);<br />begin<br />CDSConsulta.Close;<br />CDSConsulta.Filter := 'NOME = '+ QuotedStr(edtPesquisa.Text);<br />CDSConsulta.Filtered := true;<br />CDSConsulta.Open;<br />end;

Note que na consulta estamos filtrando apenas por nome, informando ao comando Filter o campo do XML a ser pesquisado, o resultado é este:

Bom pessoal finalizamos mais este artigo abordando um pouco mais profundamente o Intraweb.

É importante ressaltar que apesar destas aplicações web serem feitas de forma bem semelhante a aplicações WIN32, é preciso ter um certo cuidado, pois quanto mais carregada sua tela for de componentes, ou quanto mais pesadas forem suas consultas a banco de dados, mais lenta sua página será, pois tudo isso será gerado pelo código de sua página. É altamente recomendável, separar as consultas e regras de Negócio da Interface Web, deixando-os em camadas diferentes justamente para não ter problemas de lentidão.

Um abraço a todos e o meu agradecimento ao Bruno Lichot, da CodeGear, que sempre que possível esclareceu minhas duvidas.

Até a próxima!

é Analista Desenvolvedor Delphi, C#, VB.Net. Graduando em Informática Gestão de negócios pela FATEC. Experiência em desenvolvimento sistemas ERP, banco de dados SQL Server, trabalha atualmente na Locaralpha aluguel de carros como desenvolvedor de sistemas.

Ver perfil