Estao ZN
Estamos estudando e o resultado disso postamos aqui. Sinceramente desejamos que o
contedo aqui semeado possa ser til para muitas pessoas.
Seja bemvindo e fique vontade para contribuir da forma que puder e quiser.
Bola pra frente ... :)
Groove ZN by
Grooveshark
por GMotta ZN
Estou com muita pressa, portanto serei o mais sucinto o possvel ...
O objetivo deste artigo documentar uma soluo desenvolvida para
atender um cliente.
Vamos criar um servio de consulta que dever fornecer dados para
um requisio Ajax. Para isso construiremos uma aplicao servidora
(Delphi/Webbrocker) a qual acessar uma base de dados MS SQL
Server (especificamente o banco de dados para exemplos
Northwind), para executarmos uma consulta parametrizada (valor
que vir na requisio cliente) cujo os dados retornados sero
devidamente formatados para Json (Wik) (No vou usar XML). Ou
seja, como resposta a requisio mencionada, a aplicao servidora
retornar os dado que sero consumidos pelo Ajax/Json.
ServerSide development
Inicie um projeto Webbrocker no Delphi. Menu File New Other
Web Server Application.
Pesquisar
Contedo
Aleatrio
Cyber Culture
Games
Multimdia
Msica
Programao
WEB
Colaboradores
ralencar
Pedro
Felipe Guero
A tecnologia de service web que vamos usar ser API do IIS (ISAPI). No
WebModule1 adicione os componentes de acesso a dados:
TADOConnetion, TADODataSet, TDataSetProvider, TClientDataSet. No
editor de string de conexo (Edit Connection String) do
ADOConnection, configure a conexo com o SQL Server e em seguida
associe os Datasets (Como Associar? veja no Estao ZN). O Comando
SQl que definiremos no ADODataSet1 ser:
Daniel Bezerra
Bruno Lichot
GMotta ZN
Amigos do EstaoZN
Muito obrigado!
Participardestesite
GoogleFriendConnect
Membros(41) Mais
Arquivo do blog
2011 (6)
2010 (2)
2009 (25)
Ago (2)
Mai (6)
Abr (6)
Controle de Verso
"Seus problemas
acabaram!"
Ajax/JSON & Delphi
technologies
Webbrocker, Intra...
Navegar? Pois , eu
preciso ...
O Cara o Kutiman
Mdias na Web A
questo de
propriedade
intelectu...
Evento OnAction da Action ZnConsClientes:
Validao de CPF e
CNPJ com Javascript
Delphi/In...
Mar (5)
Fev (2)
Jan (4)
2008 (80)
2007 (125)
tags
.NET
ADO
AJAX
Apache
Arquitetura de Software
uses
Math, StrUtils;
procedure TWebModule1.WebModule1ZnConsClientesActi
on(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; va
r Handled: Boolean);
const
ZnTag = '%s:%s';
var
StrStatment: String;
i, CodRetorno: Integer;
begin
with ClientDataSet1 do
ASP.NET
Audio
Automao OLE
Banco de Dados
BDS
C#
Componentes
begin
Params[0].AsString := '%' + Request.QueryField
s.Values['znNomeCli']+ '%';
try
Open;
CodRetorno := IfThen(IsEmpty, -1, 1);
StrStatment := StrStatment +
Format(ZnTag, ['codretornoZn',
IntToStr(CodRetorno)]);
if CodRetorno = 0 then Exit;
for i := 0 to Pred(FieldCount) do
begin
StrStatment := StrStatment + ','+
Format(ZnTag, [LowerCase(ClientDataSet1.
Fields[i].FieldName),
IfThen((ClientDataSet1.Fields[i].AsStr
ing = ''), QuotedStr('-'),
QuotedStr(ClientDataSet1.Fields[i].A
sString))]);
end;
finally
Close;
Response.Content := Format('{%s}',[StrStatme
nt]);
end;
end;
end;
Controle de Verso
CSS
Cyber Culture
DBA
Delphi
Diversos
English
Ferramentas Case
Flash
HTML
Humor
IDE
Internet
Internet Explorer
Intraweb
Introduo a Programo
Introduo Harmonia
Funcional
Java
Javascript
JCL
Json
Linq
Linux
Literatura Delphi
Mencoder
Modelagem
Mplayer
Multimidia
Multimdia
Music
MySQL
Msica
Navegadores
NetBeans
Novidades
OLE DB
Oracle
Partituras
PHP
PL/SQL
POO
RPC
ClienteSide development
Meu querido leitor do Estao ZN, neste momento vamos comear
esta segunda parte do artigo construindo uma pgina html. Hum,
hhh?!?!? Como?? Mas o assunto no Delphi? Sim, o assunto gira em
torno das tecnologias para web existentes no Delphi. O que ns vamos
fazer agora demonstrar tambm como o framework Intraweb pode
interagir com projetos onde as pginas web so desenvolvidas a parte
do Delphi. Existem vrias situaes onde isso poder ser
extremamente vantajoso. Por exemplo, imagine um projeto onde
exista uma nfase grande na parte de design e por isso as pginas do
site so desenvolvidas especificamente pela equipe de designers e
diante disto a equipe de desenvolvimento deve integrlas a parte de
lgica e persistncia desenvolvida no Delphi. Este cenrio no
contexto Delphi at bem comum, penso que sim.
Portanto, antes de qualquer coisa execute seu editor preferido de
pginas htm e Javascript e bola pra frente. Abaixo, segue o cdigo d
pagina que desenvolvi para este exemplo:
RSS
Script
Shell Script
Sibelius
Slackware
SQL
Subversion
Suporte
SVN
Tableless
Tortoise
Tratamento de Excees
Tcnicas de desenvolvimento
UDF
UML
Variedades
VB6
VdeoGame
WAP
Web
Web 2.0
Web 3.0
Webservice
Windowhttp://www.blogger.
com/img/blank.gifs
Windows
Windows API
WML
XML
XSL
Zn Ringtones
ZN Media Player
");
ZnSpan.innerHTML = "Estaa Zn: Buscando dados do
Cliente pelo nome fornecido: " + ZnMyName.value +
" ....";
var url = "http://localhost/ajaxjsonzn/?znNomeCli
="+ ZnMyName.value;
ZnXmlAjaxHttpObj.open("GET", url, true);
ZnXmlAjaxHttpObj.onreadystatechange = ZnDynPro
cessaReqBuscaCliente;
ZnXmlAjaxHttpObj.send(null);
}
Links
Willian Rodrigues
Web 4
Shimatai
Pensamentos de um
Profissional de TI
Malta on Delphi
function ZnDynProcessaReqBuscaCliente() {
var ZnSpan2 = document.getElementById("IWLABEL
2");
var ZnElement = document.getElementById("IWEDIT1
");
ZnSpan2.innerHTML = 'Processando ................
..';
if (ZnSpan2.innerHTML.indexOf("buscando dados",0)
>= 0){ZnSpan2.innerHTML = "Processando ...";}
else {ZnSpan2.innerHTML = "<b>buscando dados do
Cliente: </b>" + ZnElement.value + " ....";}
Linguagem de Mquina
if (ZnXmlAjaxHttpObj.readyState == 4) {
if (ZnXmlAjaxHttpObj.status == 200) {
processJsonEstacaoZn(ZnXmlAjaxHttpObj.respo
nseText);
}
}
else return false;
}
function processJsonEstacaoZn(obj1) {
Rom Msica17/05/2007
var ObjLandjah;
eval('ObjLandjah = ' + obj1);
var Aux =
" <br /> customerid: "+ ObjLandjah.custome
rid +
" <br /> contactname: "+ ObjLandjah.contac
tname +
" <br /> contacttitle: "+ ObjLandjah.conta
cttitle +
" <br /> companyname: "+ ObjLandjah.compan
yname +
" <br /> country: "+ ObjLandjah.country +
" <br /> CEP/postal code: "
+ ObjLandjah
.postalcode
+
"<br /> Regio: "
+ ObjLandjah.region +
"<br /> Cidade: " + ObjLandjah.city +
"<br />Logradouro: " + ObjLandjah.address +
" <br /> fax: " + ObjLandjah.fax +
" <br /> phone: "+ ObjLandjah.phone;
alert(Aux);
document.getElementById("cj").innerHTML += '- <b>
Ningum vai subir #@#@%#@%#%@ ... vai ficar todo m
undo quietinho ae.</b>';
document.getElementById("cj").innerHTML += Aux;
document.getElementById("IWMEMO1").innerHTML += '
\n <b>100% Quatorze? </b>';
document.getElementById("IWMEMO1").innerHTML +
= ' \n ************************************';
//**********************************************
******
var insertData = "<b> Resultado Consulta www.est
acaozn.blogspot.com:</b>";
try {
//alert('Cod Retorno: ' + ObjLandjah.codretornoZn
);
switch (ObjLandjah.codretornoZn * 1) {
case 1:
Helio Delmiro
Beijo Partido10/09/2008
Inai26/05/2007
Um Novo Tempo
Msica20/05/2007
document.getElementById("IWMEMO1").innerHTML +=
' \n - Cavera meu Capito. ';
document.getElementById("IWMEMO1").innerHTML +=
' \n ************************************';
insertData += " <br /> customerid: "+ ObjLandjah
.customerid +
" <br /> contactname: "+ ObjLandjah.contac
tname +
" <br /> contacttitle: "+ ObjLandjah.conta
cttitle +
" <br /> companyname: "+ ObjLandjah.compan
yname +
" <br /> country: "+ ObjLandjah.country +
" <br /> CEP/postal code: "
+ ObjLandjah
.postalcode
+
"<br /> Regio: "
+ ObjLandjah.region +
"<br /> Cidade: " + ObjLandjah.city +
"<br />Logradouro: " + ObjLandjah.address +
" <br /> fax: " + ObjLandjah.fax +
" <br /> phone: " + ObjLandjah.phone;
//alert("Case, estou aqui");
// Abaixo, veja como atribuir valor do JavaScrip
t Object Notation ao IWMemo e aos IWEdits
document.getElementById("IWMEMO1").innerHTML +=
' \n ************************************';
document.getElementById("CEP").value = ObjLandja
h.postalcode;
document.getElementById("CEP").disabled =
true;
document.getElementById("IWMEMO1").innerHTML +=
" \n CEP: " + ObjLandjah.postalcode;
document.getElementById("CONTACTNAME").value = O
bjLandjah.contactname;
document.getElementById("CONTACTNAME").dis
abled = true;
document.getElementById("IWMEMO1").innerHTML +=
" \n Contato: " + ObjLandjah.contactname;
document.getElementById("CONTACTTITLE").value =
ObjLandjah.contacttitle;
document.getElementById("CONTACTTITLE").disabled
= true;
document.getElementById("IWMEMO1").innerHT
ML += " \n Contato: " + ObjLandjah.contacttitle;
document.getElementById("CIDADE").value = ObjLan
djah.city;
document.getElementById("CIDADE").disabled
= true;
document.getElementById("IWMEMO1").innerHTML
+= " \n Cidade: " + ObjLandjah.city;
document.getElementById("BAIRRO").value = "Bl
a!";
document.getElementById("BAIRRO").disabled
= true;
document.getElementById("FAX").value = ObjLandja
h.fax;
document.getElementById("FAX").disabled =
true;
document.getElementById("IWMEMO1").innerHTML +=
"\n Fax: " + ObjLandjah.fax;
document.getElementById("LOGRADOURO").value = Ob
jLandjah.address;
document.getElementById("LOGRADOURO").disa
bled = true;
document.getElementById("IWMEMO1").innerHTML +=
"\n Logradouro:" + ObjLandjah.address;
document.getElementById("COMPANYNAME").value =
ObjLandjah.companyname;
document.getElementById("COMPANYNAME").dis
abled = true;
document.getElementById("IWMEMO1").innerHTML +=
"\n Nome da Empresa:" + ObjLandjah.companyname;
document.getElementById("COUNTRY").value = ObjLa
ndjah.country;
document.getElementById("COUNTRY").disable
d = true;
document.getElementById("IWMEMO1").innerHTML +=
"\n Pais:" + ObjLandjah.country;
document.getElementById("UF").value = ObjLandjah
.region;
document.getElementById("UF").disabled = t
rue;
document.getElementById("IWMEMO1").innerHTML
+= " \n Regio: " + ObjLandjah.region;
document.getElementById("PHONE").value = O
bjLandjah.phone;
document.getElementById("PHONE").disabled
= true;
document.getElementById("IWMEMO1").innerHTML +=
" \n Tel: " + ObjLandjah.phone;
document.getElementById("IWMEMO1").innerHTML +=
'\n ************************************';
break;
case -1: insertData += "Cliente no encontrado!"
; break;
case -2: insertData += "Valor digitado invlido!
"; break;
case -3: insertData += "Ta com nojinho 02?."; b
reak;
case -4: insertData += "AH ESSA ALTURA DO CAMPEO
NATO VC TA SEM AH BANDOLEIRA ??!"; break;
default: "PEDE PRA SAIR 01. Pede pra sair.";
}
}
catch(Error) {
insertData = "<br> <font color=#FF0000> eRrO.
TIRA ESSA ROUPA PRETA QUE VC NO CAVEIRA. </font
> As Landjhas de mirandjas!!!"
}
document.getElementById("IWLABEL2").innerHTM
L += insertData;
document.getElementById("IWLABEL1").innerHTML +
= " <br /><b> Os senhores esto bem? Os senhores e
sto feridos? Algum dos senhores esto baleados? "
+
" Ento, no prximo post vcs vo aprender a car
regar corpos!!! </b>"
document.getElementById("IWMEMO1").innerHTML +=
' \n ';
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action
="">
<div id="PosControles" style="position: absolute;
top: 32px; left: 12px; width: 887px; height: 92px;
background-color: #3399CC;
font-size:16px; font-weight:400" align="justify"
><br />Digite o Nome do Cliente: {%IWEdit1%} | {%I
WButton1%}
<br>
{%Logradouro%}{%Bairro%}{%Cidade%} {%UF%}{%CEP%} {
%CompanyName%}
{%ContactName%}
{%ContactTitle%}
{%Phone%}
{%Fax%}
{%Country%}
{%IWLink1%} <a href="http://localhost/estacaozncl
iente">Reload Page</a></div>
<div id="PosSpan" style="position: absolute; top:
128px; left: 12px; width: 440px; height: 580px; ba
ckground-color: #99FF99;">
{%IWLabel1%} {%IWLabel2%}
<span id="cj">
</span>
</div>
<div id="PosMemo" style="position: absolute; top:
128px; left: 458px; width: 440px; height: 580px; b
ackground-color: #99FF99;"
align="center"><p>
{%IWMEMO1%}
testando!!
</div>
</form>
</body>
</html>
IWTemplateProcessorHTML1: TIWTemplateProcessor
HTML;
IWLabel1: TIWLabel;
IWEdit1: TIWEdit;
IWButton1: TIWButton;
IWMemo1: TIWMemo;
CEP: TIWEdit;
UF: TIWEdit;
Bairro: TIWEdit;
Logradouro: TIWEdit;
Cidade: TIWEdit;
IWLabel2: TIWLabel;
CompanyName: TIWEdit;
ContactName: TIWEdit;
ContactTitle: TIWEdit;
Phone: TIWEdit;
Fax: TIWEdit;
Country: TIWEdit;
<head>
<script language="JavaScript" src="ZnJavaScriptF
ile.js"></script>
</head>
unit IWUnit1;
{PUBDIST}
interface
uses
IWAppForm, IWApplication, IWTypes, IWCompMemo, I
WCompButton, IWCompEdit,
Controls, IWControl, IWCompLabel, Classes, IWLay
outMgr,
IWTemplateProcessorHTML, IWHTMLControls;
type
TformMain = class(TIWAppForm)
IWTemplateProcessorHTML1: TIWTemplateProcessor
HTML;
IWLabel1: TIWLabel;
IWEdit1: TIWEdit;
IWButton1: TIWButton;
IWMemo1: TIWMemo;
CEP: TIWEdit;
UF: TIWEdit;
Bairro: TIWEdit;
Logradouro: TIWEdit;
Cidade: TIWEdit;
IWLabel2: TIWLabel;
CompanyName: TIWEdit;
ContactName: TIWEdit;
ContactTitle: TIWEdit;
Phone: TIWEdit;
Fax: TIWEdit;
Country: TIWEdit;
procedure IWAppFormCreate(Sender: TObject);
public
end;
implementation
{$R *.dfm}
uses
ServerController, IWForm;
//ajaxconcorretor
procedure TformMain.IWAppFormCreate(Sender: TObjec
t);
begin
Self.TemplateProcessor := IWTemplateProcessorHTM
L1;
IWLabel1.Caption := '';
IWMemo1.Font.Enabled := False;
IWMemo1.Font.CSSStyle := 'AreaTexto';
CEP.Width := 80;
UF.Width := 40;
Cidade.Width := 120;
Logradouro.Width := 180;
Bairro.Width := 90;
IWButton1.ExtraTagParams.Add('onClick=return ZnG
etClienteWsAjx(IWEDIT1);');
IWMemo1.RawText := True;
IWMemo1.Lines.Add('');
IWEdit1.Text := 'Cactus Comidas para llevar';
end;
end.
unit Unit1;
interface
uses
SysUtils, Classes, HTTPApp, DBClient, Provider,
DB, ADODB;
type
TWebModule1 = class(TWebModule)
ADOConnection: TADOConnection;
ADODataSet1: TADODataSet;
DataSetProvider1: TDataSetProvider;
ClientDataSet1: TClientDataSet;
ClientDataSet1CustomerID: TWideStringField;
ClientDataSet1CompanyName: TWideStringField;
ClientDataSet1ContactName: TWideStringField;
ClientDataSet1ContactTitle: TWideStringField;
ClientDataSet1Address: TWideStringField;
ClientDataSet1City: TWideStringField;
ClientDataSet1Region: TWideStringField;
ClientDataSet1PostalCode: TWideStringField;
ClientDataSet1Country: TWideStringField;
ClientDataSet1Phone: TWideStringField;
ClientDataSet1Fax: TWideStringField;
procedure WebModule1ZnConsClientesAction(Sende
r: TObject;
Request: TWebRequest; Response: TWebResponse
; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
WebModule1: TWebModule1;
implementation
{$R *.dfm}
uses
Math, StrUtils;
procedure TWebModule1.WebModule1ZnConsClientesActi
on(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; va
r Handled: Boolean);
const
ZnTag = '%s:%s';
var
StrStatment: String;
i, CodRetorno: Integer;
begin
with ClientDataSet1 do
begin
Params[0].AsString := '%' + Request.QueryField
s.Values['znNomeCli']+ '%';
try
Open;
CodRetorno := IfThen(IsEmpty, -1, 1);
StrStatment := StrStatment +
Format(ZnTag, ['codretornoZn',
IntToStr(CodRetorno)]);
if CodRetorno = 0 then Exit;
for i := 0 to Pred(FieldCount) do
begin
StrStatment := StrStatment + ','+
Format(ZnTag, [LowerCase(ClientDataSet1.
Fields[i].FieldName),
IfThen((ClientDataSet1.Fields[i].AsStr
ing = ''), QuotedStr('-'),
QuotedStr(ClientDataSet1.Fields[i].A
sString))]);
end;
finally
Close;
Response.Content := Format('{%s}',[StrStatme
nt]);
end;
end;
end;
end.
Nenhum comentrio:
Postar um comentrio
Digiteseucomentrio...
Comentarcomo:
Publicar
Alexandre(Google)
Visualizar
Sair
Notifiqueme
Pgina inicial
BlogBlogs.Com.Br