Sunteți pe pagina 1din 17

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

MINICURSO DE DELPHI APLICAO BSICA PARA BANCO DE DADOS

Observao: Vamos utilizar o banco de dados no Interbase - BDVENDAS. Vamos comear na !"ina # item $ %criao do alias ara o interbase e no ara o acesss&
MEU PRIMEIRO PROGRAMA

CONSTRUINDO O BANCO DE DADOS

CONTROLE DE VENDA N da Venda: ____________ Data:____________ Cliente:______________________________________________________ Endereo:____________________________________________________ Cidade: _____________________________________________________ ITENS DA VENDA Valor Subtotal _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ Total Final: ________

Produto ____________ ____________ ____________ ____________ ____________

Qtd ____ ____ ____ ____ ____

Deste formulrio de vendas, seguindo as regras de normalizao de dados podemos extrair as seguintes tabelas abaixo. Vamos fazer as seguintes etapas: 1. Vamos abrir o SQ Server !"""#$nterprise %anager e vamos &riar um novo ban&o de dados &om o nome: DbVendas e vamos &riar as tabelas abaixo: 'lientes ( 'd'liente, )m'liente, $ndere&o, 'd'idade, *elefone+

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

'idades ( 'd'idade, )m'idade, Sg$stado+ Vendas('dVenda, 'd'liente, DtVenda, *otal+ ,tensVendas ( 'dVenda, 'd-roduto, Qtd, Vl.nit, Sub*otal+ -rodutos ('d-roduto, )m-roduto, -re&o+

!. Vamos fazer um novo diagrama do ban&o de dados para implementar a integridade referen&ial: 3. Vamos abri o DELP ! e "amos sal"ar o no"o #ro$eto dentro da Pasta: Sistema %om o nome Pr$Vendas. &. Vamos %riar um datamodule' #ara (a)er o "in%ulo de todas as tabelas do #ro$eto "amos sal"a*lo %om o nome DtmDados+ ,. Vamos in%luir um DataSour%e e um Table #ara %ada uma das tabelas+

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

/. $stabele&endo &omuni&ao entre as ferramentas SQ Server !""" e Delp0i

1. V na pal0eta 'onfiguration e per&orra a seguinte rvore: configuration !rives native . 1&esse o drive %S1''$SS e ve2a nas &onfigura3es 4ue apare&em 5 direita se o &ampo D 6! est &om a D IDDA3532.DLL, &aso no este2a faa a alterao. !. Vamos agora &riar o 1 ,1S. V at7 a pal0eta Data8ases, e es&ol0a a opo "e# no menu $%&ect' 9utra forma 7 via boto direito do mouse. 6. $s&ol0a &omo )ome do Drive do 8an&o de Dados o %S1''$SS : MICROSOFT SQL SERVER 2000; . <. D= ao 1lias o nome de 8DV$)D1. 'onfigure o &ampo Data8ase )ame &om o &amin0o no 4ual vo&= salvou seu ban&o de dados 8DV$)D1.mdb >. Ve2a 4ue do lado do nome do 1lias tem um tri?ngulo, este signifi&a 4ue as &onfigura3es 4ue foram feitas ainda no esto salvas. -ara salv@las utilize a opo 1pplA , atrav7s do boto direito do mouse ou no menu 9b2e&t.

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

<

Conhecendo o BDE Explorer

CONSTRUINDO A APLICAO EM DELPHI


1bra o Delp0i e &rie uma nova apli&ao. 1tive o boto Save all e salve a .nit1 &omo .nt-rin&ipal.pas e o pro2e&t1 &omo 'ontroleVendas.dpr. -ropriedade )ame do formulrio dever ser frm r!nc!p"l. men#: .tilizando o &omponente $"!n$en#

A B"rr" de %err"men&"'( Vamos &riar uma barra de ferramentas para o nosso sistema. -ara isso vamos adi&ionar os &omponentes ,mage ist e *ool8ar ambos da pal0eta Bin6! ToolB"r( -ara adi&ionar os bot3es pro&eda da seguinte forma: &li&C &om o boto direito do mouse e pea um )eD 8utton :novo boto;. 9bserve a figura abaixo e ve2a 4uantos bot3es vo&= dever adi&ionar. -ara distan&iar um boto do outro &omo na figura, logo apEs o boto dese2ado dever adi&ionar um )eD Separator. A' !m")en'( -ara adi&ionarmos as imagens a &ada boto iremos usar o &omponente Im")el!'& . Sele&ione este &omponente e d= dois &li4ues no mesmo. Adc!on"ndo " *+ !m")en( 'li4ue no boto 1DD es&ol0a o seguinte diretErio: &:Far4uivos de programaFar4uivos &omunsFborland s0aredFimagesFbuttonsF. 'li4ue

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

>

em abrir. 9bserve 4ue foram &riadas duas imagens uma &olorida e uma &inza. 1pague a imagem &inza &riada. "''"ndo "' f!)#r"' p"r" o' ,o&-e'( 1t7 o momento apenas adi&ionamos as figuras no &omponente ,mag ist. -ara rela&ionarmos estas figuras &om &ada boto dese2ado vo&= dever primeiramente sele&ionar o &omponente toolbar. 1&esse a propriedade Im")e' es&ol0a, &om o auxGlio da seta o nome do &omponente 4ue &ont7m as imagens :,mage ist1;.
T-tulo %olo%ado na #ro#riedade Ca#tion do Formul.rio

Com#onente Panel %om a #ro#riedade %a#tion "a)ia' a #ro#riedade ali/n alClient' e 0order St1le bsSin/le

%enu Sair: )o evento Hon&li&CI do menu sair iremos &olo&ar o &Edigo: frm-rin&ipal.&loseJ , de a fe&0ar nossa apli&ao. -ara 4ue o boto da barra de ferramentas, &orrespondente ao menu, desempen0e o mesmo papel, basta es&ol0ermos a opo HSair1'li&CI no evento 9n'li&C do boto.

CRIANDO .$ DATA$OD.LE
1di&ione neste D1*1%9D. $ um table e um datasour&e para as tabelas de &idade e &lientes. -ara isso sele&ione a guia D"&"Acce'' da paleta de &omponentes e insira um &omponente T",le em 4ual4uer parte do formulrio. 1ltere as seguintes propriedades: D"&"B"'eN"me( nome do 1lias &riado no 8D$ N"me( *8 'lientes K nome dado ao &omponente T",leN"me( ' ,$)*$S. *abela do ban&o de dados 4ue este &omponente estar representando V novamente a pgina Data 1&&ess e insira o ob2eto D"&"So#rce. $ste &omponente tem a finalidade de estabele&er a &omuni&ao entre o &omponente *able e os &omponentes de &ontrole de dados : &omponentes onde os usurios entraro &omo os dados a serem &adastrados ;. 1ltere as seguintes propriedades:

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

D"&"Se&( *8 'lientes, N"me( D*S'lientes.

Con'&r#!ndo #m form#l/r!o p"r" c"d"'&ro de d"do'

1di&ionar um novo formulrio. Salvar a unit &om o nome de .nt'ad'liente e o nome do formulrio dever ser frm'ad'lientes. temos 4ue fazer este formulrio a&essar o formulrio do Data%odule. -ara isso basta ir ao menu Lile#.se.nit. Neste (ormul.rio iremos adi%ionar os se/uintes %om#onentes da #al2eta DataControls: DtbText #ara o %3di/o do %liente. Pro#riedades as serem %on(i/uradas: DataSource: de"er. %onter o datasour%e %orres#ondente 4 tabela em 5uest6o. Neste %aso DtsClientes DataField: de"er. %onter o %am#o da tabela 5ue este %om#onente estar. re#resentando. Neste %aso: CdCliente DbEdit o nome' o endereo e o tele(one do %liente. Pro#riedades a serem #reen%2idas: idem ao anterior. DbLookupCombox: #ara a %idade do %liente 7 %am#o CdCidade (a) re(er8n%ia a uma outra tabela' a de Cidades. Para 5ue o DbLoo9Combo0o: e:iba os dados da tabela de Cidades' altere as #ro#riedades do DbLoo9u#Combo0o: %omo a se/uir: DataSource * DTSClientes ;Tabela #rin%i#al * 7nde est. o %am#o CdCidade< DataField * CdCidade ;Cam#o 5ue ser. #reen%2ido na tabela #rin%i#al< ListSour%e * DTSCidades ;Tabela de ori/em dos dados a serem #es5uisados< ListField * NmCidade+S/Estado ;7s %am#os 5ue ser6o e:ibidos no Combo0o:. Pode*se usar m=lti#las %olunas' bastando #ara isto utili)ar o #onto e "-r/ula #ara se#arar os %am#os< KeyField * CdCidade ;Cam#o 5ue (ar. o rela%ionamento entre as tabelas<

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Para as le/endas utili)e o %om#onente Label ; #al2eta stantard < e altere a #ro#riedade Ca#tion do mesmo. DbNavigator * Para %onse/uirmos adi%ionar' alterar' e:%luir e sal"ar dados na tabela iremos utili)ar o %om#onente DbNa"i/ator. Pro#riedade a ser alterada: DataSour%e. BitBtn: bot6o #ara sair do (ormul.rio. Pro#riedades a serem alteradas: Ca#tion ; (e%2ar <' Name ; btn(e%2ar < e /l1#2 ; (i/ura dese$ada<. Panel: #ara uma mel2or inter(a%e. Pro#riedades: "e$a do (ormul.rio #rin%i#al. >?SC@A@ * usar o Field Editor! Para a%ess.*lo d8 um du#lo %li5ue sobre o %om#onente table de Clientes ;T0LClientes< Em se/uida d8 um %li5ue %om o bot6o direito do mouse sobre esta $anela e es%ol2a a o#6o "dd "ll Field ! @ $anela %om os %am#os (i%ar. tal 5ual a (i/ura ao lado. 7s %am#os do ti#o TStringField #ossuem a #ro#riedade Edit#a k #ara a %ria6o da m.s%ara desses. E"entos a serem alterados #ara (ormul.rio (un%ionar #er(eitamente: Evento C$digo %b&etivo 7n@%ti"ate ; do dtmDados.TblClientes.7#en+ @brir as tabelas a serem usadas (rmCadClientes < dtmDados.TblCidades.7#en+ 7nClose ; do (rmCadClientes < dtmDados.TblClientes.Close+ Fe%2ar as tabelas usadas dtmDados.TblCidades.Close+ 7nCli%9 ; do bot6o btn(e%2ar < Close+ Para (e%2ar o (ormul.rio 7nCli%9 ; do menu (rmCadCliente.S2oC>odal+ E:ibir o (ormul.rio de %liente CadastrarBCliente<

Con'&r#!ndo #m form#l/r!o $e'&re De&"lhe p"r" o con&role d"' Vend"'


'rie um novo formulrio e d= a ele o nome de frmVendas, para a legenda do formulrio es&reva: 'ontrole de Vendas. Salve a unit &om o nome de untVendas. ,nsira um "nel, e #m 0ro#pBox e #m "nel. -ara o 1M panel deles mude a propriedade 1lign para al8ottom, para o 6M panel mude a mesma propriedade para al8ottom. -ara o groupbox mude esta mesma propriedade para al'lient e a propriedade 'aption para o 4ue dese2ar. 1&ione o editor de &ampos do table *blVendas e altere a propriedade DisplaA abel de todos os &ampos. 'ada &ampo dever &onter uma legenda &onveniente. 'li&C no &ampo &dVenda e arraste@o sobre o formulrio frmVendas e solte. -ara o &ampo &Edigo do &liente foi usado um D8 ooCup'ombo8ox. 'onfigure@ o ade4uadamente. Ve2a 4ue um D8Nrid foi inserido para ser ligado ao *able *8 ,tensVenda. ,nsira o D8Nrid dentro desse Nroup8ox. ,nsira os bot3es :use bot3es do tipo 8it8tn; no seu formulrio e d= os seguintes nomes para elesJ btn,nserir, btn1lterar, btn$x&luir, btn'an&elar, btnSalvar e btn'onsultar.

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

Cr!"ndo o c"mpo Loo1#p( 1inda no Lields $ditor do table *bl,tensVenda &li&C &om o boto direito do mouse e pea : )$B L,$ D. 'omplete a &aixa de dilogo 4ue ir apare&er da forma exibida na figura ao abaixo.

A,r!ndo e fech"ndo "' &",el"'. 9bserve 4ue o formulrio de Vendas faz uso de < tabelas: *blVendas, *bl,tensVenda, *bl'lientes e *bl-roduto. )o $vento 9n1&tvate do formulrio de 'ontrole de Venda adi&ione o seguinte &Edigo: frmD"do'.T,lVend"'.Open2 frmD"do'.T,lI&en'Vend"'.Open2 frmD"do'.T,lCl!en&e'.Open2 frmD"do'.T,l rod#&o'.Open2

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

1"

embre@se 4ue devemos fe&0ar estas tabelas 4uando sairmos deste formulrio. $nto adi&ione o &Edigo abaixo no evento 9n'lose do formulrio de vendas. 3!&h frmD"do' do ,e)!n T,lVend"'.clo'e2 T,lI&en'Vend"'.Clo'e2 T,lCl!en&e'.Clo'e2 T,l rod#&o'.Clo'e2 end2

C4d!)o do' ,o&-e'(


'Edigo do $vento 9n'li&C do boto btn,nserir: frmD"do'.T,lVend"'.Append2 ##abre um registro em bran&o na tabela 'Edigo do $vento 9n'li&C do boto btn1lterar: frmD"do'.T,lVend"'..Ed!&2 ## abre o registro para edio :alterao; 'Edigo do $vento 9n'li&C do boto btn$x&luir: frmD"do'.T,lVend"'.Dele&e2 55 excl#! o re)!'&ro "&!6o !'&o 7, ' d"do' 8#e e'&9o "p"recendo. 'Edigo do $vento 9n'li&C do boto btn'an&elar: frmD"do'.T,lVend"'.C"ncel2 55 c"ncel" " :l&!m" oper";9o 8#e n9o &enh" '!do '"l6" 'Edigo do $vento 9n'li&C do boto btnSalvar: frmD"do'.T,lVend"'. o'&2 55 '"l6" "' "l&er";-e' 8#e for"m fe!&"' 0er"ndo #m form#l/r!o $e'&re De&"lhe: retorne ao delp0i e v ao table *8 ,tensVenda e &onfigure as propriedades %asterSour&e e %asterLields. -ara a primeira propriedade &olo4ue o datasour&e da tabela de vendas pois 7 a essa tabela 4ue o *8 ,tensVenda deve se rela&ionar. -ara a propriedade %asterLields ligue os &ampos 'dVendas &om o 'dVendas 1ssim 4ue o usurio for es&ol0er os itens da venda, pelo menos o &Edigo da venda ter 4ue estar salvo, pois a tabela ,tensdaVenda pre&isa desta informao. pro&edure *frmVendas.D8Nrid1$nter:Sender: *9b2e&t;J ,e)!n ,f frmDados.*blVendas.State in Rds$dit,ds,nsertSt0en (1 propriedade StateTds$dit indi&a 4ue a tabela est em modo de edio e ds,nsert em modo de insero, assim vo&= poder gravar altera3es.+ frmdados.*blVendas.postJ ##9 metodo -ost grava o registro &orrente da tabela de Vendas.

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

11

endJ

<",!l!&"ndo e de'",!l!&"ndo ,o&-e'


pro&edure *frmDados.DtsVendasState'0ange:Sender: *9b2e&t;J begin Dit0 LrmVendas do begin 8tn,nserir.$nabled:T :*8 Vendas.StateTds8roDse;J 8tn1lterar.$nabled:T :*8 Vendas.StateTds8roDse;J 8tnLe&0ar.$nabled:T :*8 Vendas.StateTds8roDse;J 8tn'an&elar.$nabled:T:*8 Vendas.State in Rds,nsert,ds$dit,dsSetUeAS;J 8tnSalvar.$nabled:T:*8 Vendas.State in Rds,nsert,ds$dit,dsSetUeAS;J 8tn$x&luir.$nabled:T:*8 Vendas.State in Rds,nsert,ds$dit,dsbroDseS;J endJ end

C"lc#l"ndo o S#,To&"l e o To&"l d" Vend"


-ara isso iremos pre&isar de &riar uma &onsulta. -ara &onstruirmos &onsultas no Delp0i existe um &omponente &0amado QuerA. )o formulrio frmDados adi&ione um &omponente *QuerA e &onfigure@o: N"me: QrA-re&o-rod D"&"B"'eN"me: 8dVendas S=L: sele&t -re&o from -rodutos as - , ,tensVendas as , D0ere -.'d-rodutoT,.'d-roduto and -.&d-rodutoT :-prod "r"m': informar o tipo do par?metro -prod: ft,nteger Sele&ione o &ampo 'd-roduto no LieldVs $ditor do table *bl,tensVendas e insira o &Edigo abaixo no evento OnCh"n)e. proced#re TfrmD"do'.T,lI&en'Vend"'Cd rod#&oCh"n)e>Sender( T%!eld?2 ,e)!n Dit0 QrA-re&o-rod do begin &loseJ ##observe 4ue o par?metro passado para a SQ 7 o nWmero do produto es&ol0ido paramsR"S.1s,nteger:T *bl,tensVendas'd-roduto.1s,ntegerJ openJ endJ ( se a tabela no estiver em modo de edio ento deve@se pass@la para este modo+ if *bl,tensVendas.State T ds8roDse t0en *bl,tensVendas.$ditJ ('opia o valor unitario da tabela de produtos para ,tensVendas+ *bl,tensVendasVlunit.value:T*bl-rodutos-re&o.valueJ

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

1!

endJ 1gora, &om o valor unitrio transferido para a tabela de ,tens da Venda podemos &al&ular o Sub*otal assim 4ue o usurio informar a 4uantidade ad4uirida. -ara isso iremos utilizar o evento 9n'0ange do &ampo Qtd da *abela ,tensVenda. proced#re TfrmD"do'.T,lI&en'Vend"'=&dCh"n)e>Sender( T%!eld?2 ,e)!n
*bl,tensVendasSub*otal.Value:T*bl,tensVendasQtd.ValueX*bl,tensVendasVl.nit.ValueJ

endJ C@LC.LO DO TOTAL %INAL -ara &al&ularmos o *otal Linal teremos 4ue nos pro&eder de forma semel0ante ao &l&ulo anterior. *oda vez 4ue um registro for salvo na tabela de ,tens da venda for salvo teremos 4ue re&al&ular o total. -ara isso utilizaremos o evento 1fter-ost do &omponente table *bl,tensVendas. $ste evento a&onte&e toda vez 4ue alguma informao foi salva na tabela. -re&isaremos utilizar novamente um &omponente de &onsulta QuerA. )o formulrio frmDados adi&ione um &omponente *QuerA e &onfigure@o: N"me: QrA*otalVenda D"&"B"'eN"me: 8dVendas S=L: S$ $'* 'dVenda, sum:Sub*otal; as *otal LY9% ,tensVendas BZ$Y$ :'dVenda T :-'dVenda; NY9.- 8[ 'dVenda "r"m': informar o tipo do par?metro -'dVenda: ft,nteger

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

16

Sele&ione o evento 1fter-ost do &omponente *bl,tensVendas. )ele vamos &olo&ar o &Edigo mostrado abaixo: proced#re TfrmD"do'.T,lI&en'Vend"'Af&er o'&>D"&"Se&( TD"&"Se&?2 ,e)!n ( $xe&uta a SQ da 4uerA QrA*otalVenda para &al&ular o total da venda em 4uesto+ Dit0 QrA*otalVenda do begin &loseJ ##observe 4ue o par?metro passado para a SQ 7 o nWmero da venda paramsR"S.1s,nteger:T *blVendas'dVenda.1s,ntegerJ openJ endJ ( se a tabela no estiver em modo de edio ento deve@se pass@la para este modo+ if *blVendas.State T ds8roDse t0en *blVendas.$ditJ ( 1tribui ao &ampo *otal o resultado do &al&ulo do total da venda gerado pela 4uerA QrA*otalVenda observe 4ue este resultado est no &ampo QrA*otalVenda*otal da 4uerA QrA*otalVenda + *blVendas*otal.Value:T QrA*otalVenda*otal.ValueJ endJ

Con'&r#!ndo con'#l&"'

'onsidere a seguinte &onsulta a ser realizada neste formulrio: H$xibir o nome e telefone de todos

os &lientes 4ue moram em uma determinada &idadeI SQ : sele&t '.)m'liente, '.*elefone from 'lientes ', 'idades 'id D0ere '.'d'idadeT'id.'d'idade and 'id.)m'idade liCe : -)m'id )o se es4uea de &onfigurar as propriedades: )ame, Data8ase)ame, S4l e -arams do &omponente QuerA.

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

1<

'Edigo para exe&uo da SQ dever ser &olo&ado no evento 9n&li&C do boto &onsultar. pro&edure *Lorm1.8utton1'li&C:Sender: *9b2e&t;J begin Dit0 QrA'liente'id do begin &loseJ paramsR"S.value:T edt'idade.textJ openJ end endJ

Con'&r#!ndo Rel"&4r!o'
Def!n!ndo #m Rel"&4r!o de Cl!en&e' 1. 'rie um novo formulrio, d= a ele o nome frmYelat'lientes , altere a propriedade 'aption do formulrio para YelatErio de 'lientes e grave@o &omo: untYel'lientes. !. -re&isamos ligar este formulrio ao nosso datamodule, onde en&ontramos nossas tabelas e &onsultas. V at7 o menu Lile e es&ol0a a opo .se .nit..., fazendo em seguida a ligao &om a unit do Datamodule, provavelmente .ntDados. 6. V at7 a pgina Qui&CYeports e a&res&ente um &omponente Qui&CYep. 1ltere seu nome para 4CrYel'lientes e ligue@o 5 tabela de &lientes :propriedade dataset do Qui&CYep;. <. ,nsira um &omponente =RB"nd. 1 propriedade mais importante deste &omponente 7 a B"ndTApe, pois 7 ela 4ue indi&a onde e &om 4ue fre4\=n&ia &ada band vai apare&er. $ste primeiro 8and ser o &abeal0o de nossa pgina, portanto defina sua propriedade 8and *Ape &omo r, ")e<e"der. >. ,nsira outro QY8and, &omo este ser o rodap7 de nossa pgina defina@o &omo r, ")e%oo&er. /. -re&isamos de mais um =RB"nd 4ue ser utilizado &omo &abeal0o de nossos registros, defina@o &omo r,Col#mn<e"der. O. 9 Wltimo QY8and a ser utilizado neste relatErio 7 o 4ue ser responsvel por apresentar nossos registros, defina@o &omo r,De&"!l. P. 1s propriedades dos &omponentes QY8and 4ue podem ser Wteis so as seguintes: Color @ &or do fundo do 8and. %r"me @ propriedade &om as seguintes sub@propriedades: Color @ &or das lin0as 4ue &omp3e o frame Dr"3Bo&&om, Dr"3Lef&, Dr"3R!)h&, Dr"3Top @ *rue#Lalse @ 1pare&er ou no a lin0a S&Ale @ $stilo da lin0a B!d&h @ largura das lin0as 4ue &omp3e o frame. Q. Sobre o 8and -ageZeader a&res&ente um &omponente =RL",el. 1ltere as seguintes propriedades: C"p&!on :tGtulo;, %on& e Tr"n'p"ren& :Wtil 4uando a&res&entamos um QY abel sobre um 8and 4ue tem &or de fundo;. 1".Sobre o 8and 'olunmZeader a&res&ente QY abels para os &ampos da tabela &lientes 4ue vo&= dese2a a&res&ent@los ao relatErio.

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

1>

11.Sobre o 8and Detail a&res&ente QYD8*ext para os &ampos da tabela &lientes 4ue vo&= dese2a a&res&ent@los ao relatErio, altere as seguintes propriedades para &ada um deles: DataSet e DataLield. .ma outra propriedade bastante Wtil 7 a propriedade A#&oS!Ce 4ue faz &om 4ue o &omponente se a2uste ao taman0o do texto &ontido no &ampo. 1!.Sobre o 8and -ageLooter a&res&ente dois &omponentes QYSAsData, suas prin&ipais propriedades so: D"&" @ *ipo da informao &ontida no &omponente :um 4rsDate e outro 4rs-age)umber; Tex& @ *exto &ontido antes da informao.

16.)o formulrio -rin&ipal &rie uma opo no menu para o YelatErio de 'lientes e ao evento 9n'li&C dele a&res&ente: TBLCl!en&e'.Open2 55 para abrir a tabela ou passe a propriedade a&tive para true. $m seguida a&ione o relatErio atrav7s do seguinte &Edigo: frmRel"&Cl!en&e'.81rRelCl!en&e'. re6!e32

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

1/

VALIDADEO DE DADOS E TRATA$ENTO DE EFCEDEO


a; 1 funo 1nalisa'ampos9brigatorios foi &riada para no permitir 4ue o usurio es4uea de preen&0er os &ampos 4ue no podem, de forma alguma, fi&arem sem algum valor. f#nc&!on *frm'ad'lientes.1nalisa'ampos9brigatorios:;:booleanJ ,e)!n result:TtrueJ !f :D8$dt'odigo.*extT]];and :D8$dt)ome.*extT]]; &hen ,e)!n S0oD%essage:]Laltando o &Edigo e nome do &liente^];J D8$dt'odigo.Setfo&usJ result:TfalseJ end el'e !f D8$dt'odigo.*extT]] &hen ,e)!n S0oD%essage:]Laltando o &Edigo do &liente^];J D8$dt'odigo.Setfo&usJ result:TfalseJ end el'e !f D8$dt)ome.*extT]] &hen ,e)!n S0oD%essage:]Laltando o nome do &liente^];J D8$dt)ome.Setfo&usJ result:TfalseJ end endJ

Minicurso_Delphi Conciexii26-05 - Deisymar Botega Tavares

1O

b; 1 funo 1nalisa'ampos9p&ionais foi &riada para advertir o usurio de &ampos 4ue no foram preen&0idos mas 4ue podem fi&ar sem algum valor. f#nc&!on *frm'ad'lientes.1nalisa'ampos9p&ionais:;:booleanJ ,e)!n result:TtrueJ !f :frmDados.*bl'lientes*elefone.ValueT]]; &hen !f %essage8ox:0andle,]Laltando o telefone. Dese2a &ontinuar_] , ]'onfirmao], mb`,&onBarning a mb`[es)oamb`Def8utton1 ;Tidno &hen ,e)!n D8$dt*el.Setfo&usJ result:TfalseJ endJ endJ &; 1s fun3es a&ima devero ser &0amadas a partir do evento 9n'li&C do boto Salvar, pois 7 nesse momento 4ue est se efetivando a in&luso de um 'liente ou a alterao de seus dados. 'aso este2a usando apenas o boto de navegao, este &Edigo pode ser &olo&ado 8efore-ost da *abela de &lientes. d; b no neste momento, onde estamos tentando salvar os dados, 4ue tamb7m o 8D retornar um erro de U$[ V,9 1*,9) e ento poderemos trat@lo. Ve2a 4ue o &omando usado para tratar este erro 7 o *Y[ $c'$-*. proced#re *frm'ad'lientes.8tnSalvar'li&C:Sender: *9b2e&t;J ,e)!n TrA !f 1nalisa'ampos9brigatorios:;&hen !f 1nalisa'ampos9p&ionais:; &hen frmDmDados.*bl'lientes.-ost J Excep& On $D8$ngine$rror do ,e)!n S0oD%essage:]d existe um 'liente &om este &Edigo.];J Db$dt'odigo.SetLo&us J endJ EndJ

S-ar putea să vă placă și