Delphi - Segredos e Solues

CAPTULO 13

Uma Viso dos Recursos de Banco de Dados

Neste captulo, ns lhe daremos uma viso rpida de alguns dos pontos
fortes em banco de dados do Delphi, enfatizando o papel dos componentes
de tratamento de dados.  (Os componentes de tratamento de dados podem
ser utilizados para recuperar ou enviar dados para/e de um banco de
dados depois que o Delphi se conecta a ele. ) Enfatizamos  que este
captulo pode apenas ser uma introduo, porque voc rapidamente
descobrir que se quiser realizar algum trabalho srio com bancos de
dados utilizando o  Delphi, vai precisar e desejar o poder adicional que
os programas de bancos de dados lhe fornecem. E descobrir ento com a
mesma rapidez que ter que consultar  mais livros especializados. A
programao de bancos de dados, seja ela feita a partir do Delphi ou de
um gerenciador de banco de dados maduro como Paradox da Borland,  no 
simples. Seria necessrio um livro pelo menos o dobro deste para
explicar qualquer parte substancial do poder de programao da base de
dados disponvel a  voc com o Delphi.

NOTA: Se voc tem a edio cliente/servidor do Delphi, ter at mais
poder  sua disposio - ns no abordamos os recursos de
cliente/servidor do Delphi neste livro.

NOTA: A escolha Database Desktop sob o menu Tool  uma ferramenta
prtica para manter e criar bancos de dados. O Database Desktop
permite-lhe criar, reestruturar,  indexar, modificar, copiar e
questionar tabelas de bancos de dados. Voc tambm pode utilizar o
Database Desktop para copiar dados e estruturar informaes de um
formulrio de banco de dados para um outro formulrio de banco de dados.

Algumas Palavras Genricas a Respeito dos Bancos de Dados Modernos

Antes que voc comece a trabalhar com bases de dados utilizando o
Delphi,  uma boa idia ter uma noo a respeito dos bancos dados
modernos. Esta seo tenta, sem  excesso de detalhes tcnicos, explicar
o que normalmente  chamado de modelo relacional para um banco de dados.
Esse  o modelo utilizado por Delphi, Paradox, Microsoft  Access e
muitas outros bancos de dados PC programveis, como dBase e FoxPro. Mas
primeiro, antes de descrevermos o modelo relacional mais sofisticado,
vamos comear com bancos de dados mais simples. Um rolodex  um bom
exemplo para se lembrar  desse tipo de banco de dados mais simples,
chamado de banco de dados arquivo plano. Esse tipo de banco de dados 
simplesmente um conjunto indexado de "fichas".  Para construir esse tipo
de banco de dados, os arquivos tipificados so ideais porque so fceis
de instalar e manusear e no precisam de muitos recursos. Observe  que
nesses tipos de banco de dados os dados existem em um formulrio
especificado. As indexaes so acrescentadas como uma maneira para
chegar rapidamente a determinados  registros mas no so essenciais -
especialmente para conjuntos de dados pequenos. O problema em utilizar
apenas arquivos tipificados para todas os bancos de dados  que so
muito limitados. Suponha, por exemplo, que voc est cuidando de uma
atividade  comercial. Essa atividade comercial mantm uma lista de
clientes em um sistema indexado e uma lista de faturas em outro. Muda o
endereo de algum; idealmente voc  gostaria que o endereo mudasse
automaticamente nos dois locais. Isso  possvel apenas com muito
trabalho, uma vez que os dados para cada situao sejam mantidos  em
bancos de dados separados. Bancos de dados mais sofisticados, como
aqueles que voc pode comear a construir com o Database Desktop (e
construir completamente com Paradox ou o poder do banco  de dados de
Delphi), no se encaixam no modelo de fichas indexadas. O problema de
atualizao descrito antes  evitado com mais facilidade assim. Eles
tambm tm  muitas outras vantagens, embora o poder adicional seja
conseguido a um certo preo. O custo adicional normalmente ser a
necessidade de computadores mais poderosos  e mais cdigo. No existe
realmente nenhuma maneira conveniente para descrever a estrutura
subjacente dos bancos de dados que voc pode construir utilizando o
Borland Database  Engine (BDE) fornecido com o Delphi;  esse que
normalmente se encontra no disco rgido do usurio. De fato, por ora,
pense no banco de dados como uma grande quantidade  de dados que existe
em um formato que no  fixo; simplesmente est "l fora" em algum tipo
de globo nebuloso. Entretanto, os dados so controlados por um orculo
de grandes poderes. Esses poderes deixam o orculo transformar o caos em
ordem. Por exemplo, vamos supor que o banco de dados contivesse os dados
sobre todos os livros de computadores j publicados (ou at mesmo todos
os livros publicados).  Voc quer fazer a esse orculo uma pergunta
especfica a respeito de livros de computao. H muitos livros sobre
computadores l fora, freqentemente muitos sobre  o mesmo assunto com o
mesmo ttulo (como os autores bem sabem).  muita informao para
classificar. O orculo, por ser muito poderoso com bastante espao de
armazenamento,  tem todas as informaes possveis a respeito de livros
que tratam de computao armazenadas de uma forma ou de outra e, alm do
mais, conhece tudo que h l fora.  Assim, o orculo conhece os autores,
os ttulos, a contagem de pginas, a editora e muito mais. A informao
mantida pelo orculo pode ser utilizada de vrias formas.  Voc pode
precisar de todos os livros de um determinado autor, todos os livros com
uma determinada string no ttulo, todos os livros de uma determinada
editora,  ou todos os livros que satisfaam s trs condies. Imagine
agora que voc faz ao orculo um pedido como: "Apresente-me todos livros
publicados pela Osborne/McGraw-Hill em 1994. Mostre-me o ttulo, o autor
e a contagem  de pgina". O orculo percorre todos os seus da dose
depois lhe apresenta um arranjo em forma de tabela dos livros que
satisfazem o pedido que voc acabou de fazer.  Observe que voc no sabe
nem se preocupa em saber como o orculo faz isso. Voc tambm no sabe
nem se preocupa como a informao realmente  armazenada e processada
pelo orculo. Voc acaba com um tabelamento que pode manusear
facilmente. Em seguida, observe que um arquivo tipificado no pode
realmente cuidar desse tipo de situao. Se voc tivesse um nico
registro associado a cada autor, simplesmente  no teria como saber
quantos campos acrescentar para todos os livros do autor. Esse poderia
continuar a escrever sem parar. Evidentemente que voc poderia ter um
registro separado para cada livro, mas isso obriga a muita duplicao -
as estatsticas vitais do autor tm de ser repetidas todas as vezes, por
exemplo. Mas, se os dados simplesmente se encontram l fora em alguma
massa disforme, o orculo pode utilizar uma grande quantidade de truques
de controle para evitar redundncias,  para compactar os dados, para
pesquisar dados e assim por diante.

NOTA: Na moderna terminologia dos bancos de dados, as perguntas que voc
faz so chamadas de consultas e a grade a que voc  apresentado  uma
tabela ou uma vista.

As diferena entre uma tabela e uma vista  que uma tabela  construda
nas estruturas do banco de dados e uma vista  uma maneira de olhar uma
informao que pode  envolver vrias tabelas. O orculo (no Delphi,  o
BDE) responder a consultas diferentes com tabelas (vistas) diferentes,
embora continue a haver apenas um banco  de dados (potencialmente
grande) l fora. A linguagem normal para fazer consultas em um banco de
dados relacional  chamada SQL. SQL significa linguagem de consulta
estruturada e normalmente  pronunciada  "seekel" ou "sequel" (algumas
pessoas simplesmente pronunciam cada letra "S-Q-L"). Essencialmente,
essa linguagem faz parte do Delphi. Na vida real, os orculos no
existem e os dados no podem ser nebulosos. Assim, conforme voc vai ver
na prxima sesso, os dados so armazenados essencialmente  em tabelas
(grades) sobrepostas que so unidas conforme necessrio pelo ncleo do
banco de dados (BDE). As colunas dessas tabelas (grades) so chamadas de
campos  e as linhas, de registros.

A Arquitetura de Banco de Dados no Delphi

O Delphi pode acessar diversos tipos de bancos de dados. Utilizando
formulrios e relatrios que voc cria, o BDE pode acessar bancos de
dados locais, como o Paradox  e dBASE, bancos de dados de servidores SQL
de rede, como o InterBase e Sybase, e qualquer fonte de dados acessvel
por meio da ODBC (conectividade de base de dados  aberta). Das mesma
forma que em aplicativos que no so bancos de dados, o Delphi tem
componentes para criar aplicativos de bancos de dados. Componentes de
bancos de dados  tm propriedades que podem ser especificadas durante o
projeto ou por meio de cdigo durante o processamento. O Delphi tambm
tem duas pginas de ferramentas de  bancos de dados disponveis na
paleta Componente. Aqueles na pgina Data Access permitem-lhe se
conectar ao banco de dados; aqueles na pgina Data Controls so
utilizados  para realmente exibir a informao.



Os Componentes Data Access

Os componentes na pgina Data Access permitem-lhe conectar-se a bancos
de dados. Esses componentes simplificam o processo de apontar para um
banco de dados, uma  tabela e registros. Nenhum dos componentes Data
Access so visveis durante o processamento. Para construir um
aplicativo de bancos de dados, voc coloca os componentes Data Access em
um formulrio e estabelece propriedades para especificar o banco de
dados,  a tabela e os registros que devem ser utilizados. Eles fornecem
uma ligao entre os componentes Data Control e a fonte de dados. A
Tabela 13.1 relaciona os componentes Data Access e sua finalidade.

Tabela 13.1 Componentes Data Access e Suas Finalidades.

cone - Componente - Finalidade
                                                               
DataSource -  o conector entre Table, Query, e StoredProc e Data
Controls. Table - Recupera dados de uma tabela e os envia a componentes
cientes de dados via um componente DataSource. Envia dados de
componentes cientes de dados ao banco  de dados. Query - Utiliza
declaraes SQL para recuperar dados de uma tabela e os envia a
componentes cientes de dados via um componente DataSource. Envia dados
de componentes  cientes de dados para o banco de dados. StoredProc -
Permite acesso a procedimentos armazenados em servidor. Envia dados de
componentes cientes de dados para o banco de dados. Database - Utilizado
principalmente com bancos de dados remotos. Cria uma conexo persistente
a um banco de dados. BatchMove - Move e copia estruturas e dados de
tabelas de um banco de dados para outro. Report - Utilizado para
imprimir e observar relatrios via ReportSmith.

         Os componentes Table e Query so os componentes Data Access
utilizados com mais freqncia que voc coloca em um formulrio para
criar um elo com um banco  de dados. Voc estabelece o elo a partir dos
componentes Table e Query a componentes cient exibem os dados ao
usurio.


O Componente Table

O componente Table  uma maneira rpida e fcil de estabelecer um elo
com uma fonte de dados. Para utilizar o componente Table faa o
seguinte:

       1. Coloque um componente Table no formulrio.
       2. Especifique a propriedade DataBaseName com o diretrio do
banco de dados.
       3. Especifique a propriedade TableName com a tabela no banco de
dados.
       4. D um clique duplo no componente Table no formulrio para
formatar a sada da Tabela com os componentes cientes de dados.

NOTA: Dar um clique duplo em um componente Table em seu formulrio
exibir a janela Field Editor. Normalmente, dar um clique duplo em um
componente em um formulrio  exibir a janela Code Editor e um
procedimento de evento padro. O componente DataSource  o nico
componente Data Access que age dessa forma.





O Componente Query

O componente Query permite um acesso SQL, como uma declarao SELECT,
para devolver um subconjunto de dados de uma fonte de dados. Para
utilizar o componente Query:
 
      1. Coloque um componente Query no formulrio.
      2. Especifique a propriedade DatabaseName com o diretrio dos
banco de dados.
      3. Especifique a propriedade SQL com a declarao SQL desejada. D
um clique no boto de lista para abrir a caixa de dilogo String Editor.
       4. D um clique duplo no componente Query no formulrio para
formatar a sada do componente Query com os componentes de tratamento de
dados.

O componente DataSource

O componente DataSource fornece um condutor para os dados de um
componente Table ou Query at um componente de tratamento de dados. Para
utilizar o componente DataSource:

       1. Coloque um componente DataSource no formulrio.
       2. Especifique a propriedade DataSet em um componente Table ou
Query. Se existe no formulrio qualquer componente Data Access, ele ser
exibido na caixa  de lista suspensa DataSet.

Os Componentes na Pgina Data Controls

Os componentes Data Controls ajudam voc a exibir, editar e enviar dados
de volta a um banco de dados. Muitos desses componentes so verses
cientes de dados de  componentes padro. Todos os componentes Data
Controls so visveis durante o processamento. Parte da construo de um
aplicativo de banco de dados  evidentemente a exibio de dados que um
componente Table ou Query devolver ao programa. O que acontece   que o
engenho do banco de dados construdo no Delphi passa os dados por meio
de um componente DataSource aos componentes de tratamento de dados que
voc coloca  em um formulrio. Os componentes de dados fornecem o elo
visual entre a fonte de dados e o usurio. A Tabela 13.2 relaciona os
componentes Data Controls e sua finalidade.

Tabela 13.2 Componentes Data Controls e Sua Finalidade.

        cone - Componente - Finalidade

DBGrid - Componente tipo planilha que permite observar e editar dados de
uma forma tabular. DBNavigator - Barra de boto tipo-VCR utilizado para
navegar dentro de uma tabela. Pode mover o ponteiro de registros atual
para frente ou para trs" inserir ou  editar um registro, cancelar ou
editar" ou regenerar os dados exibidos. DBText - Componente Label para
exibir dados que o usurio no consegue editar diretamente. DBEdit -
Componente Edit box para permitir ao usurio DBMemo - Componente Memo
para editar texto BLOB do registro atual. (BLOB significa "objeto grande
binrio" e normalmente  utilizado para grficos.) DBImage - Componente
caixa de Image para exibir e editar um BLOB mapa de bits a partir do
registro atual. DBListBox - Componente caixa de List que pode exibir
dados a partir de uma coluna da tabela. DBComboBox - Componente caixa de
Combo que pode exibir ou editar dados a partir das coluna de uma tabela.
        DBCheckBox - Componente caixa de Check que pode exibir ou editar
um campo Booleano a partir do registro atual.
        DBRadioGroup - Componente grupo de Radio contendo botes de
rdio para exibir ou especificar dados de coluna em uma tabela.
        DBLookupList - Componente caixa de List que exibe dados mapeados
utilizando uma outra tabela durante o processamento.
        DBLookupCombo - Componente caixa de Combo que exibe dados
mapeados utilizando uma outra tabela durante o processamento.

Database Form Expert

O Database Form Expert simplifica os passos necessrios para criar um
formulrio tabular ou de entrada de dados utilizando uma fonte de dados
existente. Projetistas  de bancos de dados experientes e sem experincia
podem se beneficiar do Database Form Expert. O expert pode criar
formulrios simples ou formulrios mestre/de detalhes que contm dados
de uma tabela mestre, ou pode criar dados de uma tabela de detalhes
utilizando  os componentes Table e Query Data Access. Para iniciar
Database Form Expert, escolha Database Form Expert do menu Help. Fazendo
perguntas, o Database Form Expert deixar voc:

*Fazer um formulrio mestre ou de detalhe. *Obter dados de um componente
Table ou Query. *Determinar onde os dados esto localizados. *Adicionar
campos e o formato para exibir os dados.

Em particular, o Database Form Expert colocar os componentes do banco
de dados necessrios no formulrio, conectar os componentes DataSource
aos componentes Data  Access (Table ou Query) e os componentes de
tratamento de dados. Ele vai at especificar uma ordem de tabulao para
os componentes.

Uma Observao Final

Este captulo lhe mostrou apenas uma pequena parte das ferramentas de
banco de dados Delphi e suas capacidades. Sempre ser o caso de que
utilizar o componente de  banco de dados do Delphi automatiza muitas
tarefas que precisariam de muita codificao. Apesar disso, voc
eventualmente ter que escrever um cdigo para ir alm  do mais simples
dos aplicativos de banco de dados. Quando for chegado o momento, o
Delphi no o desapontar - sua linguagem contm uma quantidade de poder
incrvel  apenas esperando que voc o libere.


#ࡱ#################>###
#######################S#u#m#m#a#r#y#I#n#f#o#r#m#a#t#i#o#n###########
##########(######################################
#######################################################
#############################################
###########################
##############################################
######################################################
###################
##################################################@####y###
########################################################################
#######################@#####
####################################Microsoft Word
6.0######################################################2##############
#####################################################



################################ ### ###########
###########################################################






######################################
####################################
########################################################################
########################################################################
####################################
########################################################################
########################################################################
####################################
######################################################################c
#########################`#################### ## ##' ##(
##############{###|################ ### ##F ##Y ##f ##g
###########################9###:####################"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r##
"r###"r###"r###"r###"r###
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r#########"r###"r#
##"r###"r###"r###"r###"r#
##"r###"r###"r#############-############T###U###s###########
###############6###C###D###"###########3###?###[###|##############
# #######################
#########M#######################T#####"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r###
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r##
###########-T###U########################### ## ## ## ##
##
###!##;!##e!##w!##!##!##!##!##!##G"##3$##4$##I$##J$##'##D(##E(##Q(
##i(##{(##(##(##(##(##(###)##
")##3)##O)##)####"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r###
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r#############-)##)##)##)##
[*##\*##~*##*###+###+##&+##B+##c+##v+##+##+##+##+##+###,##",###,##
,##,##,##,##-##n/##J0##K0##W0##p0##0##0##0##0##0###1##`1##1##
1##1##&2##\2##|2##2####"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r###
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r#############-2##2##
2##
3##%3##23##33##4##66##q7##r7##7##7##y8##z8##8##8##9##9##9##9##
:##:##:##:##;##;###=###=###=###=###=##;=##<=##A##A##C##C##D##
D##E##E##dF##eF##G##G####"r##
#"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r
###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r##
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r######
#######-G##G##G##I##I##VJ##WJ##K##M
##N##P##P##P##P##P##P##P##P##P##P##P##Q##Q##Q##Q##gR##hR
##R##R##R##R##R##R##S##S##S##S##lU##mU##U##U##U##U###V##1V
##]V####"r###"r## "r## #"r###"r###"r###"r##
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r###"r###"r#############-]V##^V##qV##
rV###W###W##$W##%W##W##W##+X##,X##
X##X##X##X##{Y##|Y##}Y##~Y##Y##Y##Y##Z###]##o^##`##pc##d##d##
d##d##Af##Zg###h##ih##h##Ei##i##j##k##k##l##l##n##_p####"r#
##"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###
"r###"r###"r###"r###"r###"r###"r## "r###"r## "r##
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r##
"r###"r#############-_p##iq##q##q###r###r##r##s##s##s##s##u##
u##u##"v##0v##lv##v##v##v###w##&w##Uw##bw##cw##x##x##!y##"y##y##
y##y##y##6z##7z##@{##S|##T|##j|##
k|##|##|##l~##m~##~##~####"r###"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###
"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r###"r###"r#############-~##
~##~#####f##g##}##~######=##>####|##Â##Ă##߂####,##
-######D##[####ى##ډ######h##i##Ê########)##*####
##݋##P##Ԍ#######,##r####
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###
"r###"r###"r###"r## "
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###
##########-########T##U###
###########R##S##l##m##############s####m##n##v
##w##5##(##############
#####<##ɨ##########˫##U##}##~##@####"r###"r###"r###
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r
###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###
"r###"r###"r#########"r###"
r#############-@########y##z######N##O##]##^########
#######
##)##5##6##^##_##G##H######Կ##$##y##z##########s
##t#############%##1##2######"r###"r###"r###"r#
##"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r###"r###"r###"r###"r##
"r###"r###"r###"r##
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r#############-####
#########3##B################"###############7
##D##E##############g##h#############$######
######9##:##########"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r### "r###"r###"r###"r###"r##
"r###"r###"r###"r###"r##
"r###"r###"r###"r###"r###"r###"r###"r###"r#############
-##############
########$########################
#####U##V##h############.##/#####$##C##D##c##d##j
##k##m##n####\######"r###"r###"r###"r###"r###"r###
"r###"r###"r###"r##
"r###"r###"r###"r###"r###"r###"r###"r##
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r#
##"r#############-############
###############1##2##n##o##D##E##z##{##########
####>##l##z##########!##$##%##W##X############
##'##(##H####"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r#############-H##I##c
##d##"###############
######N######.##/##p##q#########?######*##+##U
##V###########-##.##I##J######################"r
###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###
"r###"r###"r###"r###"r##### ####"r##
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r#############-#######################3###4#########
#######%###&######### ## ## ### ### ##R ##S ## ##:###### ###w####
###
########}###~###F###G#############################"r###"r#
#
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r##
"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r#############-#####################,###
L###M#####################%###&###L####### ##
##.!###"##m"##"##"##"##"##_$##f$##g$##$##$##$##
x&##y&##&##&##&##&##&###(##
(##U(##c(####"r###"r###"r###"r##
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r#
##"r#############-c(##(##(##(##(###)###)###)###)##J)##K)##)##<*##=
*##j*##k*##*##*###+###+##G+##{+##+##_,##,##-##-##^.##.##.##.##
.##"/###/##/##0##0##0##0##0##
0##0###1###1##N1##O1####"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r###
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r#############-O1##{1##|
1##1##l2##m2##3##3##3##3##b4##c4##4##4##4##4###5##5##5###6##w
6##x6##7##9##9###:###:##;##P<##Q<##<##<##<##<##&=##X=##=##=##
=##=##7@##B##D##F##F##F####"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r##
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r## "r###"r## "r##
"r###"r###"r#############-F##F##G##H##H##H##H##I##I##I##
I###J##-J##:J##;J##J##J##|K##,L##-L##cL##dL##N##O###P##iQ##kQ##Q##
Q
###R###R##?R##@R##U##V##V###W###W##GW##HW##W##W##W##W##W##Y###
#"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###
"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r##
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r#############-Y
##[##[##[##W\##X\##7^##8^##Y^##Z^##\_##]_##_##_##_###`##$`##%`##Aa
##Ba##a##a##a##a##a##!b##db##b##b##b##b##zd##mg##og##g##g##g
###h###h##Dh##`h##xh##h##h##h##h ###
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
############-h###i##,i##9i##:i##i#
#i###j###j##_k##`k##k##k##k##k###l##Il##l##l##l##m##m##m##n#
#n##n##n##
p##r##r##r##r##u##x##z##z##K{##Y{##v{##{##{##{##T}######
####"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r### "r###"r###"r###"r## "r##
"r###"r###"r###"r###"r###"r###"r###"r###"r## "r##
"r###"r#############-Á###########i##j########d##ڃ##Q##
######
#####݅##ޅ########K##L############ӈ########0##W##d
##e######:##;##O##P######,##-##z####"r###"r###"r#
##"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r
###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r#############-z########ƍ##Ǎ########c##########
##w##x######א#####B##C##U
##V##############!######؞########ܠ##*##n##
####"#####/##0####"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###
"r###"r###"r###"r###"r## "r###"r## "r###"r##
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r#############-0##Y##Z##I##J##########
Ĩ##Ũ##_##G#
#V##O######ܹ##########S##T##ž####O##P##z##{###
##################k##l###########`####"r###
"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r## "r## "r## "r###"r##
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r###"r###"r###"r##
"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"
r#
##"r###"r###"r###"r#############-`#######b####-##u##v##
##########x##y#######S######
#################%##&#########W####}##~######B##C
##~##:##;##b##c##a##P####"r###"r###"r###"r###"r###"r
###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r##
#"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###
"r###"r###"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r##
"r#############-P##Q###############W####"######S#
###N####L##M##b##c##f##:######
#####G##{##|##################"r###"r###"r###"
r###"r###"r###"r###"r###"r###"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r#
##"r###"r###"r###"r###"r###"r###"r###"r###"r###"r###
"r###"r###"r###"r##
"r###"r###"r#######################################################
#
########################################################$########K######
####@#####Normal#######a##################### #A@# ##Fonte parg.
padro##################
###R##!###!###!###!###!###!###!###!###! ##!
##!###!###!
##!###!###!###!###!###!###!###!###!###!###!###!#
##!###!###!###!###!###!###!
##!!##!"##!###!$##!%##!&##!'##!(##!)##!*##!+
##!,##!-##!.##!/##!0##!1##!2##!3##!4##!5##!6##!7
##!8##!9##!:##!;##!<##!=##!>##!?##!@##!A##!B##!C
##!D##!E##!F##!G##!H##!I
##!J##!K##!L##!M##!N##!O##!P##!Q##!R########_######6
###k######<###'##,##1##7##R>##D##K##O##T##Z##a##2i##Kp##u##&
{######%####w######V##O
#####g####################>##c#######l#######
###########y###'##-##1##8##Z?##*F##%L##R##X##^###e##i##p##Kx
############V##ɜ##J##G##I#########O##:##"##{######
w################ #####a###########l##########e### #w###
#######U#########
###########j##########E#####T################F#####L###########p####
############c##### #####'###############
#|###!#####"#K#####t###$#####%#####&#x###'#####(#.###)#####*#4###+#####,
####-#####.#w###/#A###0#####1####2#$###3#S###4#####5#=###6#h###7#W###8
####9####:## ###;#c###<#
###=#####>####?#.###@#####A#####B#####C#q###D#6###E####F####G####H##
###I#V###J####K####L####M####N#####O#j###P#####Q################
###T###)##2##G##]V##_p##~####@
########H#######c(##O1##F##Y##h##Á##z##0##`##P####
############################### # #####
###dahmmse;0x#-+'`.,,LC##AUTOR#COMENTRIOS#DATACRIAO
EDITARHORA#NOMEARQUIVO#TAMANHOARQUIVO PALAVRASCHAVE
GRAVADOPOR#NUMCARAC#NUMPG#NUMPALAVRAS DATAIMPRESSO#PRIVADO#DR
NUMREVISO#DATAGRAVAO#ASSUNTO#VARINDAN#MODELO#TTULO VARINDREM
ALFABTICO#ARBICO#MAISCMINSC#EXTENSO#FORMATOCARAC#TEXTOVAR
INICIALMAISC#HEX MINSCULAS#FORMATOMESCLAR#ORDINAL#TEXTORDINAL#ROMANO
MAISCULAS#ABS#ARRED#DEF#INT#E#FALSO#MX#MN#MOD#MDIA#CONT#NO#OU#PRODU
TO#SE#SINAL#SOMA VERDADEIRO ##Ronald Peixoto#A:\DELPHI4.DOC@Epson
FX-1050#LPT1:#EPSON9#Epson
FX-1050########################@##f##############x##################
###############################
#########################################@#MSUD##Epson
FX-1050##################################d#####Epson
FX-1050########################@##f##############x#################
########################################################################
#@#MSUD##Epson
FX-1050##################################d############
############1######Times New
Roman######Symbol##&###Arial#"###################|##############
########################################$#0########Ronald
Peixoto#Ronald Peixoto###########ࡱ#################>###
#############################################u######



R#o#o#t# #E#n#t#r#y##############
########################################
############F#####(##ٸ######@#########C#o#m#p#O#b#j###########
##########################################
########################################q#######W#o#r#d#D#o#c#u#m#e#n#
t###############################################################
######################+###4######O#
b#j#e#c#t#P#o#o#l#######################################################
##########################################################
############## ### ###########
###########;#######
"###%###&###'###(###)###*###,###-###.###/###0###1
###2#######4###5###6###7###8###9###:
#######<###=###>###?###@###A###B###C###D###E###F###$###





########################################################################
###
###!###"#######$###%###&###'###(###)###*###+###,###-###.###/###0###1###2
###3###4###5###6###7###8###9###:
###;###<###=###>###?###@###A###B###C###D###E###F###G###H###I###J###K###L
###M###N###O###P###Q###R###S###T###U###V###W###X###Y###Z###[###\###]###^
###_###`###a###b###c###d###e###f###g
###h###i###j###k###l###m###n###o###p###q###r###s###t###v###w###x###y
###z###{###|###}###~###########S#u#m#m#a#r#y#I#n#f#o#r#m#a#t#i#o#n###
##################(###
########################################################
##############################################
###########################
####################################################
################################################
###########################
###############################################
######################################################
###########################
######################################################
######################################################
###########################
######################################################
######################################################
###########################3
########################
####### ###
###########






#########################@
####y###########################
#######################################################################@
##### ####################################Microsoft Word
6.0######################################################3##############
##################################################


 ### ###
############F####Microsoft Word 6.0 (Documento)#
###MSWordDoc#####Word.Document.6#9q#############ࡱ###########_##
####################Oh###+'0######
#############################$#######H### ###l#################
################# ###
###D#######h###lorBlock#heading#footing#headSep#footSep########C:\WINWOR
D\MODELOS\NORMAL.DOT#######################################Ronald
Peixoto######################Ronald
Peixoto##############@####Ќ##########################@####Y##!'#
#!(##!)##!*##!+##!,##!-##!.##!/##!0##!1##!2##!3#
#!4##!5##!6##!7##!8##!9##!:##!;##!<##!=##!>##!?#
#!@##!A##!B##!C##!D##!E##!F##!G##!H##!I##!J##!K#
#!L##!M##!N##!O##!P##!Q#
#!R########_######6###k######<###'##,##1##7##R>##D##K##O##T
##Z##a##2i##Kp##u##&{######%####w######V##O#####g###
#################>##c## #####l#######
###########y###'##-##1##8##Z?##*F##%L##R##X##^###e##i##p##Kx
############V##ɜ##J##G##I#########O##:##"##{######
w################ #####a###########l##########e### #w###
#######U#########
###########j##########E#####T################F#####L###########p####
############c##### #####'###############
#|###!#####"#K#####t###$#####%#####&#x###'#####(#.###)#####*#4###+#####,
####-#####.#w###/#A###0#####1####2#$###3#S###4#####5#=###6#h###7#W###8
####9####:## ###;#c###<#
###=#####>####?#.###@#####A#####B#####C#q###D#6###E####F####G####H##
###I#V###J####K####L####M####N#####O#j###P#####Q##########'#######
###T###)##2##G##]V##_p##~####@
########H#######c(##O1##F##Y##h##Á##z##0##`##P####
############################### # #####
###dahmmse;0x#-+'`.,,LC##AUTOR#COMENTRIOS#DATACRIAO
EDITARHORA#NOMEARQUIVO#TAMANHOARQUIVO PALAVRASCHAVE
GRAVADOPOR#NUMCARAC#NUMPG#NUMPALAVRAS DATAIMPRESSO#PRIVADO#DR
NUMREVISO#DATAGRAVAO#ASSUNTO#VARINDAN#MODELO#TTULO VARINDREM
ALFABTICO#ARBICO#MAISCMINSC#EXTENSO#FORMATOCARAC#TEXTOVAR
INICIALMAISC#HEX MINSCULAS#FORMATOMESCLAR#ORDINAL#TEXTORDINAL#ROMANO
MAISCULAS#ABS#ARRED#DEF#INT#E#FALSO#MX#MN#MOD#MDIA#CONT#NO#OU#PRODU
TO#SE#SINAL#SOMA VERDADEIRO ##Ronald
Peixoto#A:\DELPHI4.DOC@################################################
########################################################################
################
########################################################################
########################################################################
####################################
########################################################################
########################################################################
####################################
########################################################################
########################################################################
####################################
########################################################################
########################################################################
#########################Epson  FX-1050#LPT1:#EPSON9#Epson
FX-1050########################@##f##############x##################
########################################################################
@#MSUD##E pson FX-1050##################################d#####Epson
FX-1050########################@##f##############x##################
#################################################
#######################@#MSUD##Epson
FX-1050##################################d############
########################## ####### ####1######Times New
Roman######Symbol##&###Arial#"###################|##############
########################################$#0########Ronald
Peixoto#Ronald  Peixoto###########ࡱ#################>###
#############################!###############
#######


ܥe#5######e############
#####4#########################
###############################h#######h####'#######'#######'#######'###
####'######A,######A,######A,######A,######A,######A,##
###K,#####A,######84##1###,######,######,######,######,######,###
###,######,######.######62######62######62######Q2#####%3#####3###
###i4##T###4##0####4##!############
########'######.##############,######,######################.#####
#.#######4######.#######'#######'######,######################,#####
#.######.######.######.#######'#
#####,#######'######,######.#######################'#####
)##8####'#######'#######'#######'######,#####.######.##
###.##############################################
##############################################onde TextFile informa ao
Delphi que voc ir trabalhar com um arquivo de texto. A no ser que o
nome de arquivo esteja  no diretrio atual, voc tem de fornecer
informao suficiente para identificar seu caminho. Tambm, o valor de
uma varivel de texto tem de ser um nome de arquivo  legal.
        Eis uma tabela com algumas operaes comuns em uma fita cassete
e as operaes anlogas em um arquivo de texto seqencial que foi
atribudo a uma varivel  de texto denominada ArqTxt:

        Operao - Equivalente Delphi 

        Coloca a mquina no modo de reproduo e pressiona pause -
Reset(ArqTxt);
        Coloca a mquina no modo de gravao e pressiona pause -
Rewrite(ArqTxt); Pressiona stop - CloseFile(ArqTxt);
        Inicia gravao no final da fita - Append(ArqTxt);

        Todas as vezes que o Delphi processa um comando Reset, Rewrite
ou Append, ele est pronto para enviar ou retirar informaes do
arquivo. (O jargo  que  ele "estabelece um canal" para se comunicar
com o arquivo.) O que segue o comando Reset, Rewr Rewrite realmente
apaga qualquer arquivo com o mesmo nome que existia antes.
        Normalmente, o comando CloseFile esvazia o buffer e informa ao
DOS para atualizar a tabela de alocao de arquivo (FAT). Mas, por causa
das tcnicas de buffer  do prprio Windows, isso poder no acontecer
exatamente quando o Delphi processa o com est com um arquivo aberto
quase sempre leva  perda de informao e ocasionalmente at a um disco
corrompido. (O comando CHICDSIC/f, ou a utilizao de SCANDISIC,  
freqentemente necessrio quando isso acontece.)

NOTA: O procedimento Flush permite-lhe obrigar o Delphi a salvar o
buffer de sada no disco antes que seja preenchido.

Ao processar arquivos grandes, o buffer padro tem apenas 128 bytes.
Isso, com freqncia, faz com que seu aplicativo fique visivelmente mais
lento. O Delphi fornece  o procedimento SetTextBuf para mudar o tamanho
do buffer de um arquivo de texto. (Um tamanho grande provavelmente
acelerar bastante os programas que se utilizam  muito do disco.)

Enviando Informao a um Arquivo

O comando Writeln  provavelmente a maneira mais comum de enviar
elementos de informao individuais a um arquivo. Eis o exemplo de um
fragmento que envia um elemento  de informao a um arquivo denominado
TEST.DAT:

        {Escrevendo em um arquivo}
        var:
          ArqTxt: TextFile;
        begin
          AssignFile(ArqTxt, 'TEST.DAT');
          Rewrite(ArqTxt);
          Writeln(ArqTxt, 'TESTING,12 3'); CloseFile(ArqTxt);
        end;

        Depois da declarao de comentrio usual, a declarao da
varivel informa ao Delphi que voc est preparando uma varivel de
arquivo de texto denominada  ArqTxt. A declarao AssignFile associa
essa varivel de arquivo, ArqTxt, ao arquivo denomin o ponteiro de
arquivo no comeo deste. A declarao Writeln realmente envia a
informao ao arquivo. O que aparece no arquivo so os caracteres entre
apstrofes  - o arquivo no contm aspas. O comando Writeln tambm envia
uma combinao retorno de carro/nova linha - um CR (retorno de carro),
ASCII 13, e um LF (nova linha),  ASCII 10, ao arquivoomponente Table ou
Query. *Determinar onde os dados esto localizados. *Adicionar campos e
o formato para exibir os dados.

Em particular, o Database Form Expert colocar os componentes do banco
de dados necessrios no formulrio, conectar os componentes DataSource
aos componentes Data  Access (Table ou Query) e os componentes de
tratamento de dados. Ele vai at especificar uma ordem de tabulao para
os componentes.

Uma Observao Final

Este captulo lhe mostrou apenas uma pequena parte das ferramentas de
banco de dados Delphi e suas capacidades. Sempre ser o caso de que
utilizar o componente de banco de dados do Delphi automatiza muitas
tarefas que precisariam de muita codificao. Apesar disso, voc
eventualmente ter que escrever um cdigo para ir alm do mais simples
dos aplicativos de banco de dados. Quando for chegado o momento, o
Delphi no o desapontar - sua linguagem contm uma quantidade de poder
incrvel apenas esperando que voc o libere.
 
