Captulo 8
Adicionando Componentes de Banco de Dados  uma Aplicao

Overview
Os componentes de banco de dados e suas capacidades descritas neste captulo fornecem as ferramentas necessrias para a criao de aplicaes que utilizem bancos
de dados local, baseado em PC e remotos, baseados em servidores SQL.
Este captulo aplica os componentes de banco de dados (descritos no captulo anterior) no desenvolvimento de uma aplicao. Estes componentes esto nas pginas
Data Access e Data Controls da Component Palette.
Conceito de um DataSet no Delphi
Introduo
Para manipular e consultar bancos de dados, voc precisa entender o conceito de dataset. Um dataset no Delphi  um objeto que consiste de uma srie de registros,
cada um contendo qualquer quantidade de campos e um ponteiro para o registro atual. O dataset pode ter uma correspondncia direta, um-para-um, com uma tabela fsica,
ou, como um resultado de uma query, pode ser um subconjunto de uma tabela ou uma juno de diversas tabelas.
Tipo de Objeto TDataSet
Um dataset no Delphi  o tipo de objeto TDataSet e  uma classe abstrata. Uma classe abstrata  uma classe  de onde voc pode derivar outras classes, mas no pode
criar uma varivel desta classe. Por exemplo, ambos os componentes Query e Table classificam-se como componentes TDataSet porque cada um foi derivado do objeto TDataSet.
Note que voc no encontrar nenhum componente chamado TDataSet na Component Palette. O TDataSet contm as abstraes necessrias para manipular diretamente uma
tabela.  a ferramenta utilizada para abrir uma tabela e navegar por suas colunas e linhas.
Os componentes neste captulo so referenciados pelo seu tipo de objeto (identificado no Delphi pelo seu nome com o prefixo T). O termo componente DataSet  utilizado
para referenciar um componente Table, Query, ou StoredProc. TTable, TQuery, e TStoredProc so descendentes de TDataSet, ou seja, eles herdam as propriedades de TDataSet.

O conceito de herana  discutido em detalhes no captulo Object-Oriented Programming in Delphi de seu manual.

Diagrama dos componentes DataSet
O diagrama a seguir mostra o conceito dos componentes DataSet, que so componentes derivados do tipo de objeto TDataSet:

Utilizando o Componente e DataSource
Introduo
O componente DataSource atua como intermedirio entre o componente DataSet (TTable, TQuery, ou TStoredProc) e os componentes Data Control. Dentre os componentes
Data Control incluem DBGrid, e DBText entre outros. Esta seo explica:
* Qual o papel do componente  DataSource em uma aplicao de banco de dados
* Como utilizar propriedades e eventos do DataSource
* Como adicionar componentes DataSource  sua aplicao

Papel de um Componente DataSource
Um Componente DataSource gerencia o relacionamento entre uma tabela de banco de dados e a representao deste dado em seu form.  um intermedirio entre os componentes
DataSet e DataControl. Componentes DataSet gerenciam a comunicao com o Borland Database Engine (BDE), e o componente DataSource gerencia a comunicao com componentes
data-aware Data Control.
Em uma tpica aplicao de banco de dados, um componente DataSource  associado com um componente DataSet (Table ou Query) e um ou mais componentes Data Control
(tais como DBGrid).
O diagrama a seguir mostra este relacionamento:

Utilizando Propriedades e Eventos DataSource
As propriedades e eventos chave do componente DataSource so:
* Propriedade DataSet
* Propriedade Enabled
* Propriedade AutoEdit
* Evento OnDataChange
* Evento OnUpdateData
* Evento OnStateChange

Cada uma destas propriedades e eventos so discutidas nas sees a seguir:
Utilizando a propriedade DataSet do Componente DataSource
A propriedade DataSet identifica o nome de um componente DataSet.
Voc pode atribuir  propriedade DataSet atravs de programao ou utilizando o Object Inspector.
O valor atribuido  propriedade DataSet  o nome de um objeto TDataSet.
Por exemplo, a linha de cdigo a seguir atribui um nome ou objeto TQuery  propriedade DataSet de um componente ou objeto DataSource.

DataSource1.DataSet        : =     Query1

Voc pode inserir diversos componentes Query, Table, e StoredProc em um form a atribuir a propriedade DataSet baseado em uma condio no programa. Voc tambm pode
atribuir a propriedade DataSet a um nome ou objeto TQuery, TTable, ou TStoredProc encontrado em outro form utilizando  o identificador da unit do form. Por exemplo,
aps incluir a Unit1 na clusula uses, voc pode digitar o seguinte:

DataSource1.DataSet          : =     Unit1.Form1.Table1;

Utilizando a Propriedade Enable do TDataSource
A propriedade Enable inicia ou termina a comunicao entre os componentes TDataSource e DataControl.
Os valores da propriedade Enable so:
* True
 Os componentes Data Control  conectados ao TDataSource "enxergam"as alteraes do dataset.
* False
 Voc pode manipular o TDataSet atravs de programao sem que os componentes Data Control "enxerguem" as alteraes.

Por exemplo, o cdigo a seguir desabilita o TDataSource, procura por um valor coincidente de nmero do cliente, e depois habilita o TDataSource para que ou a linha
do cliente ou a ltima linha seja exibida.

DataSource1.Enabled : = False;
Table.First;
     While not  Table1.EOF  do
begin
      if  Table1.FieldByName('NoCliente').AsString = LookupCust then
       Break;
       Table1.Next;
     end;
DataSource1.Enabled  : = True;

Utilizando a propriedade Enable permite que voc desconecte temporariamente o componente visual Data Control do TDataSource.
No exemplo anterior, se a tabela contiver  2000 linhas e o TDataSource estiver habilitado, o usurio de sua aplicao veria 2000 linhas rolando na tela durante esta
operao. Desabilitando TDataSource  uma maneira mais eficiente de se pesquisar em um grande nmero de linhas, pois o componente Data Control no atrasar a procura
exibindo cada linha conforme esta for sendo alterada.
Utilizando a Propriedade AutoEdit de TDataSource
A propriedade AutoEdit controla como  a  edio  iniciada nos componentes Data Control.
Os valores das propriedades AutoEdit so:
* True
 O modo de edio  iniciado sempre que o usurio comece a digitar dentro de um componente Data Control.
* False
 O modo de edio  iniciado quando o mtodo Edit   invocado, por exemplo, aps o usurio dar um clique sobre o boto  Edit do Navigator. Este parmetro controla
a edio.

Dentro do seu cdigo, voc pode utilizar os seguintes mtodos para controlar as alteraes nos dados da tabela quando AutoEdit estiver como False:
* Edit
* Post
* Cancel

O cdigo a seguir  um exemplo utilizando o mtodo Post:

DataSource1.DataSet.Edit;    {Start edit mode}
DataSource1.DataSet.Fields [3] .AsString : = "Hello";
DataSource1.DataSet.Post;
Utilizando o Evento OnDataChange de TDataSource
O evento OnDataChange ocorre sempre que:
* A propriedade State do TDataSource mudar do estado dsInactive
* Ocorrer uma alterao de campo, registro, tabela, query ou layout

Este evento  associado com alteraes na exibio de dados, tais como rolar para um novo registro ou ativando TDataSource. Este evento  til para monitorar  alteraes
nos componentes Data Control.
Utilizando o Evento OnUpdateData de TDataSource
O evento OnUpdateData ocorre quando:
* O registro atual no TDataSet estiver para ser atualizado
* Uma alterao estiver para ser confirmada

Este evento  til na monitorao de alteraes nos dados de uma tabela. Por exemplo, voc pode utilizar este evento para criar auditor de alteraes  nos dados
em sua aplicao.

Utilizando o Evento OnStateChange de TDataSource
O evento OnStateChange ocorre sempre que a propriedade State de DataSource for alterada. Este evento  til para monitorao de alteraes na propriedade State.
A propriedade State pode ter os seguintes valores:
* dsInactive
* dsBrowse
* dsEdit
* dsInsert
* dsSetKey
* dsCalcFields
Passos para Adicionar um Componente DataSource
Execute os passos a seguir para adicionar um componente DataSource ao form:

Passo
Ao
1
Utilizando a pgina Data Access da Component Palette, adicione o componente DataSource ao form.
2
Utilize o Object Inspector para definir a propriedade DataSet ou escreva o cdigo apropriado.
3
Defina as propriedades AutoEdit e Enabled, ou ambas, apropriadamente.
4
Escreva event handlers para um ou todos os seguintes eventos:
* OnDataChange event
* OnUpdateData event
* OnStateChange event
Utilizando o Objeto TDataSet
Introduo
Geralmente, quando voc manipula um componente Table ou chama um mtodo TTable, voc est utilizando um mtodo derivado do objeto TDataSet. TDataSet oferece um grande
nmero de propriedade, mtodos e eventos.

Voc pode aprender mais sobre TDataSet utilizando o Help Online.
Esta seo discute um pouco sobre propriedades, mtodos e eventos do objeto TDataSet.

Propriedades do Objeto TDataSet
A tabela a seguir descreve as propriedades mais importantes do objeto TDataSet:

Propriedade
Descrio
Active
Abre ou fecha um componente DataSet. Abrir um componente DataSet estabelece a conexo entre o componente e o banco de dados. Voc pode definir a propriedade Active
no Object Inspector durante o design ou diretamente em seu cdigo, como segue:

if  DeActivate = true then
      Table1.Active  : = True
Else
       Table1.Active  : = False;

Os mtodos Open e Close tambm definem a propriedade Active de TDataSet.
EOF
(End of File)
BOF
(Beginning of File)
Propriedades somente de leitura (read-only) com os seguintes valores:
* EOF  definido para True quando voc tenta mover para alm da ltima linha do dataset
* BOF  definido para True quando o componente DataSet  aberto ou quando o  ponteiro do DataSet para a linha atual estiver posicionado na primeira linha.
Fields
Um array do objeto TField. Voc pode definir e ler dados dos campos da linha atual utilizando esta propriedade. Por exemplo:

Table1.Fields[0]. AsString : =
         'Hello';
Table1.Fields[1] .AsString : =
           'World';
Mtodos do Objeto TDataSet
O objeto TDataSet fornece ao componente Table diversos mtodos.
Alguns dos mtodos mais importantes so mostrados na tabela a seguir:

Mtodo
Descrio
Open
Close
Refresh
Operam nos datasets, como segue:
* O mtodo Open  equivalente a definir a propriedade Active para True.
* O mtodo Close define a propriedade Active para False
* O mtodo Refresh permite ler novamente o dataset do banco de dados . Se voc precisa se assegurar que os dados so os mais atuais, contendo quaisquer alteraes
feitas por outros usurios, utilize o mtodo refresh. Um componente Table, Query, ou StoredProc deve estar aberto com open quando Refresh for chamado.
Um exemplo destes mtodos  :

Table1.Open;
Table1.Close;
Table1.Refresh;
First
Last
Next
Prior
MoveBy
Permite navegar ou alterar a linha atual do dataset. A seguir, um exemplo utilizando vrios destes mtodos:

Table1.First
While not Table1.EOF do
begin
      {Seu   cdigo aqui}
Table1.Next;
end;

O mtodo MoveBy move um nmero especificado de linhas. Por exemplo:
* Table1.MoveBy(3) move 3 linhas para cima.
* Table1.MoveBy(-2) move 2 linhas para trs.

Insert
Edit
Delete
Append
Post
Cancel
Permite modificar os dados em uma  tabela de banco de dados, como segue:
* O mtodo Insert permite adicionar uma linha  tabela. Por exemplo:

Table2.Insert;
Table2.Fields[0] .AsInteger : = 20;
Table2.Fields[1] .AsString : = 'News';
Table2.Fields[ 2] .AsString : = '5 Horas';
Table2.Post;

* O mtodo Post faz com que a operao Insert Update ou Delete ocorra.
* O mtodo Cancel faz com que uma operao Insert Delete, Edit ou Append no ocorrida seja cancelada.
FieldByName
Fornece uma maneira de acessar dados de uma coluna especificando no nome da coluna do banco de dados. Como no exemplo a seguir:

s : = Table2.FieldByName ('area') .AsString;
SetKey
GotoKey
Procura atravs dos datasets, como segue:
* SetKey alterna a tabela para o modo de pesquisa (search). Enquanto neste modo, a propriedade Fields tem uma utilizao especial.
* GotoKey inicia a pesquisa por um valor coincidente com o valor encontrado em Fields[n]. Fields[n] contm o valor a ser pesquisado por valores em outras colunas
definindo a coluna Fields correspondente.
O exemplo a seguir mostra um exemplo da utilizao de SetKey e GotoKey:

Table1.SetKey;
Table1.Fields[0] .AsString
        Edit1.Text;
Table1.GotoKey;
SetRangeStart
SetRangeEnd
ApplyRange
Permite ser mais seletivo nos dados que sua aplicao seleciona ou utiliza na tabela. Geralmente uma tabela  grande e voc quer selecionar somente uma srie de
valores da tabela. O mtodo Range permite fazer tal seleo. Exemplo:

Table1.SetRangeStart
Table1.Fields[0] .AsString : =
         Edit1.Text;
Table1.SetRangeEnd
Table.Fields[0] .AsString : =
           Edit2.Text;
Table1.ApplyRange;

A primeira chamada  SetRangeStart o coloca no modo range e a propriedade Fields toma um significado especial. Utilize a propriedade Fields para especificar o valor
de incio para a srie. A chamada para SetRangeEnd inicia um modo onde os valores digitados na propriedade Fields so utilizadas como o valor final da srie. ApplyRange
faz com que o comando seja processado. Um dataset  criado contendo os valores entre os valores de incio e final.
FreeBookmark
GeTBookMark
GotoBookmark
Permite criar um marcador de linha em uma tabela ou query e depois retornar  esta linha posteriormente. Os mtodos Bookmark utilizam um tipo de objeto chamado TBookMark.
Por exemplo:

Var
   Marker : TBookMark;
begin
    Marker : = Table2.GeTBookMark;
    Table2.GotoBookmark(Marker);
    Table2.FreeBookmark(Marker);

O mtodo GeTBookMark aloca um marcador para linha da tabela. O mtodo GotoBookmark altera a localizao na tabela para a linha indicada pelo Bookmark alocado anteriormente.
Utilize o mtodo FreeBookmark para liberar o espao  alocado para  o marcador.
 Eventos do Objeto TDataSet
O objeto TDataSet permite responder a  um grande nmero de eventos. A tabela a seguir descreve diversos deles:

Eventos
Descrio
OnOpen

OnClose

OnNewRecord
BeforeInsert

AfterInsert

BeforeEdit

AfterEdit

BeforePost

AfterPost

OnCancel

OnDelete

Permite construir e controlar o comportamento de aplicaes de bancos de dados. Exemplos de utilizao seguem:
* Evento BeforePost para validar os campos de um registro antes de inser-lo ou atualiz-los
* Evento AfterPost para gravar um registro de auditoria quando necessrio
* Evento OnDelete para gravar cdigo que efetue a deleo em cascata quando apropriado
Utilizando o Objeto TFields
Introduo
O objeto TField, como o objeto TDataSet, no  encontrado na Component Palette.  uma propriedade do objeto TDataSet (e Componente Table). Algumas propriedades no
Object Inspector so objetos com seu prprio conjunto de propriedades. TFields  um deles.
Esta seo descreve a propriedade Fields, que  objeto TFields com seu prprio conjunto de propriedades.
Propriedades Fields do Objeto TDataSet
Uma das propriedades do Objeto TDataSet (portanto, os componentes Table, Query, e StoredProc)  a propriedade Fields.
Como discutido anteriormente neste captulo, a propriedade Fields permite acessar os campos individuais do dataset. A propriedade Fields   um array dos objetos
TFields. Este array ou lista  gerada dinamicamente durante a execuo ( e portanto, no aparece na lista de propriedades do Object Inspector). O array representa
cada uma das colunas no componente Table.
Objetos estticos TFields so visveis no Object Inspector. Sees posteriores deste captulo explicam como criar uma lista esttica de objetos TField, mas primeiro,
voc deve entender algumas das propriedades destes objetos.
Propriedades do Objeto TField
Voc deve entender em diversos exemplos o uso do mtodo AsString. O objeto TField no faz nenhuma suposio sobre o tipo de dado que ele contm. Ele possui diversos
mtodos que permitem definir ou recuperar os valores de um campo. Alguns destes mtodos so:
* AsBoolean
* AsFlot
* AsInteger
* AsString

O cdigo a seguir mostra alguns exemplos para a utilizao de cada um deles:

Fields[0] .AsString : = sto  uma string';
FieldByName ('Casado') .AsBoolean : = False;
SomaDespesas : = Fields[5] As.Float;
NoPedido ; = Fields[3] .AsInteger;
Outras Propriedades do Objeto TField
A tabela a seguir descreve diversas outras propriedades importantes do objeto TField:

Propriedade
Descrio
EditMask
Permite definir uma mscara de input para o campo
IsNull
Determina se um  campo no possui valor.  uma propriedade read-only.
Size
Determina o tamanho de um campo.  uma propriedade read-only.
Text
Permite definir ou recuperar um valor de string de um campo
FieldName
Fornece o nome do campo do banco de dados.  uma propriedade read-only.
Utilizando o Componente Table
Introduo
O componente Table  um componente TDataSet que comunica com uma tabela de banco de dados atravs do BDE. A tabela do banco de dados pode ser tanto local ou em
um servidor remoto. Esta seo discute:
* O papel do componente Table
* Propriedades, eventos e mtodos do componente Table
* Passos para adicionar um componente Table  sua aplicao
O Papel do Componente Table
O diagrama a seguir mostra que TTable  derivado de TDBDataSet por herana e, por sua vez, TDBDataSet  derivado de TDataSet.
Muito da funcionalidade do componente Table  baseado neste relacionamento.
TTable herda de TDataSet a capacidade de manipular datasets. Ele fornece mtodos, tais como Next, First, Last, Edit, SetRange e Insert.
TDbDataSet permite que TTable suporte trabalhar com senhas e outras tarefas associadas com a ligao de sua aplicao com um banco de dados. TTable adiciona mtodos
e atributos para manipulao de ndices, e para armazenar o relacionamento entre esta tabela e outra  em sua aplicao .

Propriedades do Componente Table
Como vimos, muito da funcionalidade do componente Table vm do objeto TDataSet. O componente Table permite utilizar as propriedades, mtodos e eventos TDataSet,
mas possui diversas propriedades prprias relativas a tabelas de banco de dados. Por exemplo, o componente Table permite que voc:
* Especifique ndices a serem utilizados
* Crie um cursor "Linkado"

Cursores "Linkados" coordenam dois ou mais componentes DataSet para criar forms master-detail.
A tabela a seguir descreve as propriedades mais importantes do componente Table:

Propriedade
Descrio
DatabaseName
Especifica o seguinte:
* O diretrio local de um banco de dados que contenha a tabela a ser visualizada
* O alias de um banco de dados remoto
TableName
Especifica o nome do banco de dados a ser visualizado
Exclusive
Controla o acesso de usurio ao banco de dados. Os valores so:
* True
 Assegura que nenhum outro usurio acesse ou modifique a tabela enquanto voc a mantiver aberta
* False
 Permite que outros usurios acessem ou modifiquem a tabela enquanto voc a mantiver aberta. Este  o default.

IndexName
Identifica um ndice secundrio para Table.
Voc no pode alterar IndexName enquanto a tabela estiver ativa
MasterFields
Especifica o nome dos campos ligados ou campos na
propriedade MasterFields para criar um cursor "linkado"a uma tabela secundria
Para especificar diversos campos, voc deve separar os nomes de campos com uma barra vertical (|)  .
MasterSource
Especifica o TDataSource de onde TTable obter os dados para a tabela master
ReadOnly
Pe a tabela em modo somente-leitura. Os valores so:
* True
 Previne o sistema de gravar alteraes ao banco de dados onde a tabela resida
* False
Permite que o sistema grave alteraes ao banco de dados onde a tabela resida

Voc  no pode alterar a propriedade ReadOnly enquanto a tabela estiver ativa.

Passos para Adicionar um Componente Table
Execute os passos a seguir para adicionar um componente table  ao form:

Passo
Ao
1
Utilizando a pgina Data Access da Component Palette, adicione um componente Table ao form.
2
No Object Inspector , localize a propriedade DatabaseName e digite o diretrio onde o banco de dados reside, ou digite um nome de alias do banco de dados.
3
Localize a propriedade TableName e digite o nome da tabela ou selecione uma tabela da lista drop-down.
4
Adicione um componente DataSource e defina o valor da propriedade de DataSet igual ao do componente Table.
5
Adicione componentes Data Control e conecte-os ao componente DataSource para exibir dados da tabela do banco de dados.
Tutorial: Criando uma Aplicao Utilizando Mtodos TDataSet do Componente Table
Introduo
Este processo  um tutorial de exemplo. Voc construir uma aplicao de exemplo utilizando uma tabela chamada COUNTRY.
Esta tabela exibe informao sobre pases do mundo inteiro. Ao invs de utilizar o DBNavigator, voc utilizar botes padro e mtodos DataSet para fornecer a funcionalidade
do DBNavigator.
Este tutorial mostra como utilizar:
* Os mtodos First, Next, Prior e Last
* Os mtodos BOF e EOF
* Os mtodos Edit, Insert e Cancel
Estgios do Tutorial
O processo deste tutorial envolve os seguintes estgios:

Estgio
Processos
1
Adicionar e definir propriedades para os componentes TDataSet
2
Adicionar e definir propriedades para componentes DBGrid e Button
3
Criar event handlers OnClick para componentes Button
4
Executar e testar a aplicao
Passos para o Estgio 1
Execute os passos a seguir para adicionar e definir propriedades para os componentes TDataSet:

Passo
Ao
1
Abra  um novo projeto e grave-o.
Quando solicitado, grave a unit como UDSEVENT.PAS e o projeto como PDSEVENT.DPR.
2
Utilizando a pgina Data Access da Component Palette, adicione o seguinte ao seu form:
* Um componente Table
* Um componente DataSource
3
Defina as propriedades para os componentes Table e DataSource como segue:

Nome do Componente
Propriedade
Valor
Table1
DatabaseName
TableName
Active
DBDEMOS
COUNTRY.DB
True
DataSource1
DataSet
AutoEdit
Table1
False

Passos para o Estgio 2
Execute os passos a seguir para adicionar e definir propriedades para os componentes DBGrid e Button:

Passo
Ao
1
Utilizando a pgina Data Control da Component Palette, adicione um componente DBGrid.
Arranje os componentes para  que seu form  esteja similar  figura a seguir:

Passo
Ao
2
Utilize a tabela a seguir para definir propriedades do DBGrid para que utilizem o componente DataSource do form:

Nome do Componente
Propriedade
Valor
DBGrid1
DataSource
DataSource1

Passo
Ao
3
Adicione oito botes ao form, e arranje-os para que seu form esteja similar  prxima fgura:

Passo
Ao
4
Utilize o Object Inspector para definir as seguintes propriedades aos componentes Button:

Nome do Componente
Propriedade
Valor
Button1
Caption
Primeiro
Button2
Caption
ltimo
Button3
Caption
Prximo
Button4
Caption
Anterior
Button5
Caption
Editar
Button6
Caption
Post
Button7
Caption
Cancelarr

Button8
Caption
Inserir

Passos para o Estgio 3
Execute  os passos a seguir para criar event handlers OnClick para os componentes Button:

Passo
Ao
1
Digite o cdigo a seguir para os event handlers OnClick nos botes apropriados.

Nome do Componente
Evento
Cdigo
Button1
OnClick
Table1.First;
Button2
OnClick
Table1.Last;
Button3
OnClick
if  not Table1.EOF then
     Table1.Next;
Button4
OnClick
if  not Table1.BOF then
      Table1.Prev;
Button5
OnClick
Table1.Edit;
Button6
OnClick
if Table1.State in
     [dsEdit, dsInsert] then
        Table1.Post;
Button7
OnClick
Table1.Cancel;
Button8
OnClick
Table1.Insert;
Passos para o Estgio 4
Execute os passos a seguir para executar e testar a aplicao:

Passo
Ao
1
Compile e grave a aplicao.
Execute e teste cada boto para verificar se o mtodo funciona.
2
Quando tiver completado o teste, grave e feche o projeto.
Utilizando o Fields Editor
Introduo
O Fields Editor permite criar uma lista de campo de banco de dados.
Quando um componente DataSet  como os componentes Table ou Query  ativado pela primeira vez, uma lista de campo  gerada dinamicamente para dataset baseado nas
colunas da tabela ou cdigo SQL. O Fields Editor permite especificar e posteriormente modificar uma lista esttica de componentes Field.
Possibilidades do Fields Editor
O Fields Editor permite que voc:
* Crie um modelo esttico das colunas de uma tabela
* Especificar a ordem das colunas no DataSet
* Especificar o tipo das colunas
*  Adicionar a lista esttica de campos
* Remover campos da lista
* Modificar propriedades Display de TFields estticos
* Definir campos calculados
* Definir novos componentes Field baseados nas colunas existentes na tabela

Criando um Modelo Esttico de uma Tabela de Banco de Dados
Utilize o Fields Editor quando quiser criar um modelo esttico das tabelas do banco de dados. Um modelo esttico no  alterado quando modificaes so feitas na
tabela fsica no banco de dados.
Quando voc adiciona colunas utilizando o Fields Editor, objetos TFields so criados para cada campo adicionado ao DataSet. Aps adicionar campos utilizando o Fields
Editor voc pode visualizar estes campos no Object Inspector. Cada objeto TField possui um conjunto de propriedades, eventos e mtodos que voc pode utilizar em
sua aplicao.
Passos para iniciar o Fields Editor
Execute os passos a seguir par iniciar o Fields Editor:

Passo
Ao
1
Adicione um componente Table ou Query ao seu form.
2
Defina a propriedade DatabaseName do componente Table ou Query.
3
Execute um dos seguintes:
-Defina a propriedade TableName do componente Table
-Defina a propriedade SQL do componente Query.
4
Selecione o componente DataSet no form, e pressione o boto direito do mouse para exibir o SpeedMenu.
5
No SpeedMenu, selecione Fields editor.
A primeira janela do Fields Editor aparecer, como segue:

Passos para Criar  uma Lista Esttica de Campos
Execute os passos a seguir para criar uma lista esttica de campos aps abrir o Fields Editor:

Passo
Ao
1
No quadro de dilogo Fields Editor, d um clique em Add.
Cada uma das colunas na tabela ou query aparecem selecionadas no quadro de dilogo Add Fields, como segue:

Passo
Ao
2
Selecione os campos que voc queira adicionar e d uma clique em OK.
O quadro de dilogo a seguir  exibido:

Passo
Ao
3
D um clique em Add para adicionar campos estticos, adicionar  lista de campos no dataset.
4
D um clique em Define para criar um novo campo baseado em um campo existente, ou criar um campo calculado.
5
D um clique em Remove para deletar um campo esttico da lista de campos no  dataset.
Propriedades do Componente Field
Aps utilizar o Fields Editor, quaisquer campos adicionados ao dataset so refletidos no Object Inspector. A figura a seguir mostra o tipo de objeto TStringField
(componente Field) e suas propriedades associadas.

Descendentes de TField
Quando voc utiliza o Fields Editor, o Delphi cria objetos estticos que correspondem aos campos visveis no Object Inspector. Estes objetos so descendentes do
tipo de objeto TField. A tabela a seguir descreve os objetos descendentes TField:

Descendente
Descrio
TStringField
Dado texto de tamanho fixo, at 255 caracteres
TIntegerField
Nmeros inteiros de -2,147,483,648 a 2,147,483,647
TSmallField
Nmeros inteiros de -32678 a 32767
TWordField
Nmeros inteiros de 0 a 65535
TFloaTField
Nmeros reais com grandezas absolutas de 1,2x10e-324 a 1.7x10e308 com preciso de 15 a 16 dgitos
TCurrencyField
Valores monetrios. Nmeros reais com grandezas absolutas de 1.2x10e-324 a 1.7x10e308 com preciso de 15 a 16 dgitos
TBCDField
Nmeros reais com nmero fixo de casas decimais. Com preciso de 18 dgitos. O intervalo dos valores depende do nmero de casas decimais.
TBooleanField
Valor True (verdadeiro) ou False (falso)
TDateTimeField
Valor de data e hora
TDateField
Valor de data
TTimeField
Valor de tempo
TBlobField
Campo de dado arbitrrio, sem limite de tamanho
TBytesField
Campo de dado arbitrrio, sem limite de tamanho
TVarBytesField
Campo de dado arbitrrio de at 65535 caracteres, com tamanho real armazenado nos primeiros dois bytes
TMemoField
Texto de tamanho arbitrrio
TGraphicField
Grfico de tamanho arbitrrio, tal como bitmap
Eventos do Objeto Tipo TStringField
A figura a seguir mostra eventos que um objeto tipo TStringField pode reconhecer:

Campos Estticos
Quando voc utiliza o Fields Editor, so adicionados campos estticos ao tipo de objeto TForm1 do form . Na figura a seguir, o Fields Editor adicionou os seguintes
campos ao TForm 1:
Table1Name, Table1Size, Table1WIGHT, Table1AREA, e Table1BMP:

Utilizando o Componente Database Grid
Introduo
Como voc j pode ter observado, o componente DBGrid (databasegrid) fornece uma maneira conveniente de se exibir diversas linhas de dados de um componente Table
ou Query. Sua aplicao pode utilizar o DBGrid para inserir, deletar, editar ou exibir dados de um banco de dados. Combinado com o DBNavigator, o DBGrid permite
protipar e exibir rapidamente dados do banco de dados.
At agora, voc  tem visto exemplos utilizando o componente DBGrid.

Este tpico oferece sugestes para:
* Definir a propriedade Options do Componente DBGrid
* Definir caracteristicas de exibio de campo para o componente DBGrid

Uma lista completa das propriedades, mtodos e eventos do DBGrid encontram-se no Help Online.

Propriedades de Options do DBGrid
A figura a seguir mostra um conjunto de propriedades que compem a propriedade Options do componente DBGrid. O conjunto aparece quando voc clica o sinal (+) na
frente da propriedade Options.

Descrio da Propriedade Options
Voc pode alterar a aparncia e comportamento de uma grade alterando valores da propriedade Options, utilizando o Object ou escrevendo cdigo. A tabela a seguir
descreve as definies de Options do componente DBGrid:

Propriedade Options
Descrio Quando Definido para True...
dgEditing
O usurio pode editar dados na  grade.
Quando a propriedade ReadOnly do DataSet for True e dgEditing tambm for True, os usurios podem utilizar a tecla Insert para inserir uma linha em branco, ou pressionar
a tecla de seta para baixo quando posicionado no final da grade para adicionar uma linha em branco, embora no possam digitar texto na nova linha.
dgTitles
Os ttulos das colunas  so visveis.
dgIndicator
Um pequeno ponteiro fica visvel para indicar a coluna atual.
dgColumnResize
As colunas podem ser reajustadas.
dgColLines
As linhas entre as colunas ficam visveis
dgRowLines
As linhas entre as linhas ficam visveis.
dgTabs
Os usurios podem pressionar a tecla Tab e Shift+ Tab para se moverem entre as colunas da grade.
 Propriedade Options como Tipo Set
A propriedade Options do componente DBGrid  um tipo set. Voc pode modificar a propriedade Options utilizando operadores set. As linhas a seguir so comandos Object
Pascal vlidos:
DBGrid1.Options : = DBGrid1.Options + [dgTitles];
DBGrid1.Options : = DBGrid1.Options - [dgTitles, dgRowLines];
Definindo Caractersticas de Exibio de Campo para o Componente DBGrid
Geralmente no desenvolvimento de uma aplicao, voc precisa controlar o comportamento de campos no componente DBGrid. O comportamento default do DBGrid  determinar
dinamicamente o tamanho do campo e permitir ao usurio o uso do mouse para reajustar o tamanho do campo. A chave para obter o controle das caractersticas de exibio
do DBGrid ou outro componente data-aware  criar uma lista esttica de componentes  Field. Uma vez criados componentes para cada um dos campos no dataset, voc pode
definir o seguinte:
* Tamanho de exibio
* Formato de exibio
* Mscara de Edio
* Rtulos de exibio
Passos para Definir Tamanho de Exibio
Execute os passos a seguir para criar campos de exibio de tamanho fixo no componente DBGrid:

Passo
Ao
1
Abra o Fields Editor para o componente TDataSet que ser exibido no componente DBGrid.
2
Adicione cada um dos campos de banco de  dados que voc queira no dataset.
Este passo cria componentes TFields estticos para os campos a serem exibidos no DBGrid.
3
Localize o componente DBGrid no Object Inspector, e defina a opo  dgColumnReSize para False.
Como alternativa, voc pode escrever comandos Object Pascal em sua aplicao para alterar esta propriedade.
4
Altere o tamanho da coluna exibida de uma destas maneiras:
-Utilize o mouse para arrastar e reajustar o tamanho das colunas no DBGrid
-Defina a propriedade DisplayWidth para cada um dos componentes Field que o Fields Editor adicionou.
Definindo a Propriedade DisplayLabel
Uma vez que voc utilizou o Fields Editor para gerar um conjunto de  objetos TField para o dataset, voc pode utilizar o Object Inspector para definir a propriedade
DisplayLabel do componente Field. O componente DisplayLabel do componente Field.
Definindo Propriedade DisplayMask
Campos, Float, Integer e Date possuem uma propriedade DisplayMask. Voc pode utilizar esta propriedade para formatar a exibio em um DBGrid ou outro componente
Data Control. Por exemplo, o formato de exibio mm-dd-yy pode ser utilizado para exibir um campo data.
Definindo a Propriedade EditMask
Os componentes Field possuem uma propriedade EditMask que voc pode definir sempre que digitar dados em um DBGrid ou outro componente Data Control. Para definir
uma propriedade EditMask, localize o componente Field no Object Inspector, e clique a propriedade EditMask. O quadro de dilogo Input Mask Editor   exibido, como
segue:

Para testar sua mscara de edio, digite um valor no campo Test Input.
Utilizando o Componente Query
Introduo
At agora, este captulo cobriu as seguintes informaes:
* As capacidades do objeto DataSet e suas propriedades, mtodos e eventos
* O Fields Editor, que permite definir objetos correspondentes aos campos no dataset

O componente Query, como Table,  derivado do objeto TDataSet.Desta forma, tudo sobre TDataSet aplica-se ao componente Query.
Esta seo explica o seguinte:
* O componente Query
* Propriedades, mtodos e eventos importantes do componente
* Uma aplicao de exemplo utilizando o componente Query
Componente Query
O componente Query permite utilizar comandos SQL para executar o seguinte:
* Especificar ou criar datasets que possam ser exibidos
* Inserir linhas
* Editar a atualizar colunas
* Deletar linhas

O componente Query gerencia a comunicao com o BDE e serve como interface entre o BDE e os componentes DataSource (TDataSource) em seus forms
O Componente Query Relacionado com o Componente DataSource
Como com o componente Table, um componente DataSource  anexado ao componente Query para gerenciar a comunicao entre o componente Data Control e o componente Query.
Entre os componentes Data Control incluem DBGrid, DBEdit, e DBLooup.
Uma aplicao tpica possui um componente DataSource para cada componente Query.
Propriedade do Componente Query
A tabela a seguir descreve diversas propriedades importantes do componente Query:

Propriedade
Descrio
Active
Abre ou fecha uma query. Os valores so:
* True
 Abre uma query, o que faz com que o comando SQL seja executado, como no exemplo:
{Abre a query}
Query1.Active : = True;
* False
 Fecha uma query, como segue:
{Fecha a query}
Query1.Active : = False;
DatabaseName
Identifica o alias do banco de dados ou  o drive e diretrio de um banco de dados local. A propriedade DatabaseName pode ser definida somente quando a query no
estiver ativa, como no exemplo a seguir:
{Fecha o DBDataSet}
Query1.Active : = False;
Query1.DatabaseName : = 'Demos';
Query1.Active : = True;
Fields
Suportam os campos no componente Query.  uma propriedade somente durante execuo e  utilizada para examinar ou modificar um determinado campo, como no exemplo
a seguir:
Query1.Fields[3]  .AsString : = K';
DataSource
Fornece valores para  queries parametrizadas. Uma query parametrizada  uma onde um ou  mais  valores na condio de seleo no  conhecida
Params
Guardam os parmetros para uma query parametrizada. Uma query parametrizada envolve um ou mais valores na condio de seleo que no so conhecidas at a execuo,
como no exemplo a seguir:
Select * from Orders
   Where CustNo = : SomeNo
Esta  uma propriedade de somente-leitura, durante a execuo.
Consulte o Help Online para maiores informaes sobre queries parametrizadas.
SQL
Guarda o texto do comando de query SQL
EOF (End of File)
BOF (Beginning of File)
Propriedade somente-leitura com valores a seguir:
* EOF  True quando voc tenta mover para alm da ltima linha do dataset.
* BOF  True quando o componente DataSet  aberto, ou quando o ponteiro do TDataSet da linha atual estiver na primeira linha.
Mtodos do Componente Query
A tabela a seguir descreve alguns mtodos do componente Query:

Mtodo
Descrio
ExecSQL
Executa comando SQL atribuido  propriedade SQL se o comando no retornar dados. Quando estiver inserindo, atualizando ou deletando dados, voc deve utilizar este
mtodo. Se estiver executando um comando de seleo, utilize o mtodo Open. A seguir um exemplo da utilizao do mtodo ExecSQL:
Query1.Close;
Query1.Clear;
Query1.SQL.Add (  'Delete emp where empno =      1010');
Query1.ExecSQL;
Open
Abre o componente Query.  equivalente a definir a propriedade Active para True. A seguir um exemplo utilizando o mtodo Open:
Query1.Open;
Close
Fecha o componente Query fazendo com que quaisquer atualizaes pendentes sejam efetuadas no banco de dados. Chamar Close  equivalente a definir a propriedade Active
para False. A seguir mostramos um exemplo utilizando o mtodo Close:
Query1.Close;
 Prepare
Traduz a propriedade SQL para criar a propriedade Text para Submeter ao servidor. O mtodo Prepare tambm envia a requisio ao servidor para propsito de otimizao,
embora nenhum valor parametrizado  esteja incluido. A requisio inteira com parmetros no  submetida at que o mtodo Open ou ExecSQL sejam chamados. Se voc
no chamar Prepare explicitamente, o Delphi chama Prepare implicitamente quando utilizar o comando em ExecSQL. A seguir um exemplo utilizando o mtodo Prepare:
Query1.Close;
Query1.SQL : =
       'Delete emp where empno = : empno';
Query1.Prepare;

Mtodos TQuery Herdados de TDataSet
O objeto   TDataSet fornece ao componente Query uma grande variedade de mtodos. Alguns dos mais importantes so mostrados na tabela a seguir:

Mtodo
Descrio
First
Last
Next
Prior
MoveBy
Permite navegar ou alterar a linha atual do dataset. A seguir um exemplo utilizando  diversos destes mtodos:
Query1.First
While  not Query1.EOF do
begin
      {Seu cdigo aqui}
       Table1.Next;
End;
O mtodo MoveBy move um nmero determinado de linhas. Por exemplo:
* Query1.Moveby(3) move 3 linhas para cima.
* Query1.Moveby (-2)move 2 linhas para trs
Insert
Edit
Delete
Append
Post
Cancel
Permite modificar o conjunto resultante de uma query. O mtodo Insert permite adicionar linhas  tabela, como no exemplo a seguir:
Query2.Insert;
Query2.Fields [0] .AsInteger : = 20;
Query2.Fields [1] .AsString : = 'News';
Query2.Fields [2] .AsString : = '5 horas';
Query2.Post;
* O mtodo Post faz com que as operaes Insert, Update, ou Delete ocorram.
* O mtodo Cancel faz com que um Insert, Delete, Edit ou Append no completado seja cancelado.
SetKey
GotoKey
Pesquisa atravs dos datasets, como segue:
* O mtodo SetKey alterna o dataset para o modo de procura. Neste modo, a propriedade Fields tem uso especial.
* O mtodo GotoKey inicia uma procura por um valor  que coincida com o valor encontrado em Fields[n]. Fields[n] contm o valor que voc est procurando e que ocorre
na primeira coluna da tabela ou dataset. Voc pode procurar por valores em outras colunas definindo a coluna correspondente.

O exemplo a seguir mostra a utilizao dos mtodos SetKey e GotoKey:
Query1.SetKey;
Query1.Fields [0] .AsString : = Edit1.Text;
Query1.GotoKey;
FreeBookmark
GeTBookMark
GotoBookmark
Permite criar um marcador em uma linha na tabela ou query e retornar posteriormente para esta linha, como segue:
* O mtodo FreeBookmark libera  espao alocado para o marcador
* O mtodo GeTBookMark aloca um marcador para a linha atual da tabela.
* O mtodo GotoBookmark altera a localizao na tabela para a linha indicada por um marcador alocado prviamente  .

Os mtodos Bookmark utilizam o objeto tipo TBookMark, como no exemplo a seguir:
Var
     Marker : TBookMark;
begin
      Marker : = Query2.GeTBookMark;
      Query2.GotoBookmark (Marker);
       Query2.FreeBookmark (Marker);

Eventos do Componente Query Derivados de TDataSet
O componente Query responde aos eventos herdados do objeto TDataSet. A tabela a seguir descreve estes eventos:

Eventos
Descrio
OnOpen
OnClose
OnNewRecord
BeforeInsert
AfterInsert
BeforeInsert
AfterEdit
BeforePost
AfterPost
OnCancel
OnDelete
Permite construir e controlar o comportamento da aplicao de banco de dados. Por exemplo:
*  O event handler BeforePost valida os campos de um registro antes de inserir ou atualizar os dados
* O evento AfterPost  til para gravar um registro de auditoria quando necessrio.
* O evento OnDelete  til para escrever cdigo que efetue a deleo em cascata quando apropriado.
Tutorial: Criando uma aplicao Utilizando o Componente Query
Introduo
Esta seo fornece um aprendizado na utilizao do componente Query. O componente Query possui muitas caractersticas avanadas. Entretanto, este exemplo focaliza
as caractersticas bsicas deste componente.
Este tutorial demonstra como utilizar um componente Query para criar um dataset, e mtodos TDataSet para executar operaes no dataset.
Estgios do Tutorial
Este tutorial envolve os seguintes estgios:

Estgio
Processo
1
Construir uma aplicao e exibir os dados utilizando um comando SQL
2
Modificar uma aplicao para consultar um banco de dados, baseado no campo CustID
Passos para o Estgio 1
Execute os passos a seguir para construir uma aplicao de clientes e exibir dados do cliente utilizando um comando SQL:

Passo
Ao
1
Abra um novo projeto e grave-o.
Quando solicitado, grave a unit como EX7SQL.PAS e o projeto como EX7P.DPR.
2
Utilizando a pgina Data Access page da Component Palette, adicione os seguintes ao seu form:
* Um componente Query
* Um componente DataSource
3
Defina as propriedades dos  componentes Query e DataSource, como segue:

Nome do Componente
Propriedade
Valor
Query1
DatabaseName
RequestLive
DBDEMOS
True
DataSource1
DataSet
Query1

Passo
Ao
4
Utilizando a pgina Data Controls da Component Palette, adicione os seguintes ao seu form:
* Um componente DBGrid
Um componente DBNavigator
5
Utilize a tabela a seguir para definir propriedades dos componentes DBNavigator e DBGrid para que utilizem o componente DataSource do form:

Nome do Componente
Propriedades
Valor
DBGrid1
DataSource
DataSource1
DBNavigator
DataSource
DataSource1

6
Crie um event handler OnActivate para o form utilizando o Object Inspector. Digite o cdigo abaixo no handler OnActivate:
Query1.SQL.Add ('Select * from customer');
Query1.Open;
Este cdigo adiciona uma instruo SQL  propriedade SQL do componente Query. Voc pode definir esta instruo SQL como uma propriedade utilizando o Object Inspector.
Aps adicionar a instruo SQL, seu event handler deve ser:
Query1.SQL.Add( 'Select * From Customer' );
Query1.Open;
7
Quando sua aplicao for compilada satisfatoriamente. grave-a. Depois, execute sua aplicao e teste-a utilizando o Navigator para atualizar e inserir linhas no
dataset.
8
Quando tiver terminado, feche a aplicao.
Passos para o Estgio 2
Execute os passos a seguir para modificar uma aplicao para consultar uma base de dados, baseado em uma identificao do  cliente:

Passo
Ao
1
Utilizando a pgina Standard do Component Palette, adicione os seguintes ao form:
* Dois componentes boto
* Um componente Edit
* Um componente Label

2
Utilize a informao da tabela a seguir para definir propriedades destes componentes:

Nome do Componente
Propriedade
Valor
Button1
Caption
Query
Button2
Caption
Exec Query
Edit1
Text
Visible
(Empty)
False
Label
Caption
Visible
IdCliente
False

Passo
Ao
3
Adicione o seguinte event para o evento OnClick do Button1:
Edit1.Visible : = True;
Label1.Visible : = True;
4
Adicione o seguinte event handler para o evento OnClick do Button2
Query1.Close;
Query1.SQL.Clear;
Query.SQL.Add
('Select * from customer where '+'CustNo = '+ Edit1.Text);
Query.Open;
Edit1.Visible : = False;
Label1.Visible : = False;
Passo
Ao
5
Compile e grave sua aplicao.
Execute e teste-a atravs do seguinte:
* Selecione um nmero de cliente da lista de clientes e d um clique em Query.
* Digite o nmero e d  um clique em Exec Query para exibir um nico cliente no grid.
Utilizando o Visual Query Builder
Introduo
O Visual Builder (VQB)  uma ferramenta para construo de queries baseadas em SQL. Com esta ferramenta, voc pode construir queries complexas com pouco ou nenhum
conhecimento de SQL. O VQB permite  construir estas queries complexas  iniciando com um query simples, permitindo executar a query e fornecer ferramentas para refin-la
. Voc constri queries incrementalmente adicionando expresses, tabelas, campos e relacionamentos  at obter os resultados desejados.
Ativando o Visual Query Builder
Para ativar o Visual  Query Builder , voc deve utilizar um componente Query. Uma vez inserido um componente Query em seu form, voc pode ativar o Visual Query Builder
selecionando o componente Query e dando um clique com o boto direito do mouse. O SpeedMenu do Componente aparecer. Ento, selecione Query Builder.
Selecionando um Alias de banco de dados
O item de menu Query Builder exibe o quadro de dilogo Databases, exibido na figura a seguir. Este quadro de dilogo permite selecionar um banco de dados e logar-se
nele. O logon pode ser em um servidor de banco de dados local ou remoto durante o design.

Janela do Visual Query Builder
Aps logar-se ao banco de dados, a janela do Visual Query Builder  apresentada. O quadro de dilogo Add sobrepe-se.
Toolbar   do Visual Query Builder
A Toolbar do Visual Query Builder aparece para selecionar as operaes a serem executadas. A Toolbar aparece, como segue:

Descrio da Toolbar do Visual Query Builder
A tabela a seguir descreve os botes da Toolbar do Visual Query Builder respectivamente:

Boto
Descrio
New
Inicia uma nova query
Open
Abre um arquivo de query
Save As
Grava uma query em um arquivo
Options
Exibe o quadro de dilogo Options, que permite definir diversas opes de query. Por exemplo, voc pode definir uma opo para remover linhas duplicadas.
Table
Exibe o quadro de dilogo Add Table, que permite adicionar tabelas  instruo SQL
Expression
Exibe o quadro de dilogo Expression, que permite criar expresses SQL, por exemplo, upper (Nome) ou Sum (Custo_Item)

SQL
Exibe a janela SQL Statement, que contm, a instruo SQL atual.
Run
Executa a instruo SQL atual e exibe os resultados
OK
Define a propriedade SQL do componente Query para a instruo SQL atual no Visual Query Builder
Cancel
Sai do Visual Query Builder sem definir a propriedade SQL do componente Query
Help
Exibe o Help online do Visual Query Builder
Quadro de Dilogo Add Table
Quando voc abre o Visual Query Builder, o quadro de dilogo Add Table aparece. Este quadro permite adicionar tabelas  query. Voc adiciona tabela  query quando
inicia o processo de construo da query ou quando quer modificar uma query existente.
O quadro de dilogo Add Table lista os nomes de todas as tabelas no banco de dados atual. Se voc quiser incluir tabelas de sistema, d um clique no check box Include
System Tables.
Passos para Adicionar Tabelas  Query
Execute os passos a seguir para adicionar uma ou mais tabelas ao espao de trabalho de Visual Query Builder a serem includas na query:

Passo
Ao
1
Insira um componente Query ao form, e d um clique com o boto direito  do mouse sobre o componente para exibir o SpeedMenu.
2
Selecione Query Builder para exibir a janela do Visual Query Builder.
3
Se o quadro de dilogo Add Table no aparecer na frente da janela do Visual Query Builder, d  um clique sobre o boto Table na Toolbar para exibi-lo.
4
Selecione o nome da tabela da lista de tabelas exibida no quadro de dilogo Add Table, e d um clique em Add.
A tabela aparece no espao de trabalho da janela do Visual Query Builder.
5
Repita o passo 4 at que todas as tabelas sejam adicionadas  query, e d um clique em Close.
Adicionando Colunas  Query
Para adicionar uma coluna de uma das  tabelas  query, voc pode efetuar um dos seguintes:
* Selecionar o nome da coluna e arrastar a coluna e solt-la na grade da query, na parte inferior da janela.
* D um  duplo-clique   no nome da coluna para inser-la na grade da query.
Especificando uma Condio de Join
Geralmente voc precisar combinar informaes de diversas tabelas. Por exemplo, voc pode querer consultar o banco de dados para encontrar todos os pedidos , o
nome dos clientes, a data de pedido e o fornecedor de um dos itens. Esta query envolver colunas das tabelas CUSTOMER, VENDORS, ITEMS e ORDERS. Para construir uma
query deste tipo e complexidade, voc precisar especificar como as diversas tabelas devero ser combinadas. Com o Visual Query Builder voc especifica as colunas
a serem combinadas arrastando o nome de uma coluna e soltando-a sobre o nome da coluna onde a combinao ser feita. Quando completar esta operao, uma linha ser
desenhada no espao de trabalho da query, ligando as colunas das duas tabelas.
Revisando e Editando o Critrio de Combinao
Voc pode revisar e editar o critrio de combinao dando um duplo-clique sobre a linha indicando a combinao no espao de trabalho da query. O quadro de dilogo
Join aparecer.
Especificando Critrio de Seleo de uma Query
Para especificar um critrio de seleo de uma query, utilize a linha Criteria da grade da query.

Se a linha Criteria no estiver visvel, utilize a barra de rolagem.
A linha Criteria permite qualquer expresso vlida de query dentro da clusula WHERE de uma instruo SQL. Expresses vlidas incluem os seguintes operadores:

Operador
Significado
=
Igual
>
Maior que
<
Menor que
!=
No igual
like
Comparao de string de caracteres com  separao de padro
between
No menor que o valor inicial e no maior que o valor final
in
Encontrado em uma lista

Expresses digitadas na linha Criteria so condies AND. Por exemplo, se voc tiver uma tabela com um nome de coluna e quiser encontrar todas as entradas na coluna
nome que iniciem com C, voc digitaria nome like 'C. /. 'na linha Criteria. O efeito seria equivalente a adicionar AND nome LIKE 'C . /.' clusula WHERE da instruo
SQL. Condies OR So digitadas como expresses na linha OR (abaixo da linha Criteria) da grade da query.
Ordenando Resultados da Query
Voc pode ordenar resultados da query na ordem ascendente ou descendente em uma determinada coluna. Para especificar a ordem de ordenao, posicione o ponteiro do
mouse sobre a coluna, na linha Sort da grade da query. D um clique com o boto direito do mouse e selecione. Ascending ou Descending no menu pop-up. Voc pode especificar
at oito colunas para ordenao.
Agrupando Resultados de Query
Voc pode agrupar resultados de query utilizando a linha Option da grade da query. Para especificar uma opo para uma coluna, posicione o ponteiro do mouse sobre
a coluna na linha Option. D um clique com o boto direito do mouse para exibir o SpeedMenu Option. As opes so funes de agrupamento: Show, Average, Count, Maximum,
Minimum, Sum, Group (1), e Group (2).
Especificando Condies de Agrupamento
Voc pode especificar condies de agrupamento utilizando a linha Group Condition da grade da query. Condies de agrupamento especificam operaes para agregao
de colunas. Por exemplo, Voc pode querer linhas de dados onde a coluna Average Cost, seja maior que zero.. A linha Group Condition  equivalente a adicionar uma
expresso com a clusula HAVING em uma instruo SELECT do SQL agrupado (clusula GROUP BY).
Definindo Expresses de Query
O Visual Query Builder permite definir expresses como parte de uma query. Expresses podem ser clculos sobre valores de dados numricos ou expresses de strings,
tais como concatenao ou uma substring.
Para definir uma expresso, d um clique no boto Expression na Toolbar. O quadro de dilogo  Expression aparecer

O quadro de dilogo Expression permite desenvolver expresses SQL. Voc pode especificar operadores aritmticos, tais como:
* + (sinal "mais" ,de adio)
* - (sinal"menos" , de subtrao)
* * (asterisco, para multiplicao)
* / (barra,  para diviso)

Voc pode incluir nomes de colunas  e agregar expresses, tais como avg, count, min,max,e sum. Ou voc pode editar expresses manualmente ou construir uma, utilizando
o quadro de edio Expression.
Definindo Opes para Queries
O quadro de dilogo Options  utilizado para especificar opes para instrues SQL. Voc pode especificar que registros duplicados sejam removidos . Esta opo
tem o efeito de utilizar a instruo SQL DISTINCT.
Para especificar uma opo, d um clique no boto Options na Toolbar. O quadro de dilogo Options aparece.
Exibindo Resultados de Query
Voc pode executar  a query que o Visual Query Builder gera. O resultado da query  exibido na janela Result  Window. Esta janela permite verificar se as colunas
da query, critrio de seleo, agrupam ento e ordenao foram especificados corretamente pela query.
Para executar a query, d um clique no boto Run da Toolbar. Uma Result Window aparecer.
Exibindo a Intruo SQL para Query
Voc pode checar instrues SQL para uma query visualizando a janela SQL Statement. A janela exibe a instruo SQL SELECT associada com a query atual. Conforme adicionar
ou alterar colunas de query, critrio ou ordenao, a SQL Window  atualizada automaticamente. Visualizar as intrues SQL fornece um feedback imediato sobre a contruo
da query e o auxilia no aprendizado da sintaxe SQL.
Para checar as instrues, d um clique no boto SQL na TollBar. A janela SQL statement aparecer.
Definindo e Utilizando Campos Calculados
Introduo
Um campo calculado  um campo que exibe valores gerados pelo programa. Por exemplo, voc pode ter uma tabela de banco de dados contendo informaes sobre objetos
retangulares. Cada linha possui uma coluna de altura e largura, mas voc precisa exibir a rea dos objetos retangulares. A soluo  calcular a rea atravs das
alturas e larguras.
O Delphi permite utilizar campos calculados em suas aplicaes.
Implementar um campo calculado envolve o seguinte processo:

Estgio
Processo
1
Definir o campo calculado
2
Escrever cdigo para o campo calculado
Passos para o Estgio 1
Campos calculados so definidos com a assistncia do Fields Editor.
O Fields Editor trabalha com os componentes Table e Query do TDataSet. Quando voc define um campo calculado para um dataset, o Fields Editor adiciona um novo objeto
campo ao dataset.
Execute os passos abaixo para definir um campo calculado

Passo
Ao
1
Selecione o componente Query ou Table (derivado TDataSet), e inicialize o Fields Editor.
Para TTable, este passo assume que as propriedades DatabaseName e TableName esto definidas. Para TQuery, este passo assume que as propriedades DatabaseName e SQL
esto definidas.
2
Adicione campos para exibio ou clculo no quadro de dilogo Fields Editor.
3
D um clique no boto Define no Fields Editor.
O quadro de dilogo Define aparecer.
4
Digite um nome para o campo calculado na caixa de texto Field Name.
Conforme digitar o nome, ele  exibido concatenado ao nome do componente no campo Component name. Voc pode alterar este nome se desejar.
5
Selecione uma entrada da caixa de lista Field  type.
6
Habilite Calculated.
7
D um clique em OK para completar a definio do campo calculado.
Passos para o Estgio 2
Uma vez definido o campo, voc fornece valores para o campo escrevendo cdigo para ele.
Execute os passos abaixo para implementar um campo calculado:

Passo
Ao
1
Selecione o componente DataSet (TQuery ou TTable) no Object Selector do Object Inspector.
2
Exiba a pgina Events do Object Inspector
3
D um duplo-clique sobre a coluna do event handler do evento OnCalcFields para criar e exibir a procedure OnCalcFields no Code Editor.
4
Digite o cdigo que define o valor e propriedades do campo calculado.
5
Compile e grave sua aplicao.
Execute e teste-a para certificar-se que o campo est sendo calculado corretamente.
Tutorial: Criando uma Aplicao Utilizando um Campo
Introduo:
A melhor maneira de se aprender a trabalhar com campos calculados   utilizando um exemplo. Nesta seo voc exibir informao sobre pases do mundo. As tabelas
deste exemplo, Country, contm dois campos chamados Area e Population, entre outros.
Passos para Exibir a Populao por Kilometro Quadrado
Assumindo que o campo Area esteja em Kilometros quadrados execute os passos a seguir para exibir a populao por kilometro quadrado em um form:

Passo
Ao
1
Abra um novo projeto e grave-o.
Quando solicitado, grave a unit como EX7BMAIN.PAS e o projeto como EXAMP7B.DPR.
2
Utilizando a pgina Data Access da Component Palette, adicione um componente Table e DataSource ao seu form.
3
Defina as propriedades para os componentes Table e DataSource como segue:

Nome do Componente
Propriedade
Valor
Table1
DatabaseName
TableName
Active
DBDEMOS
COUNTRY.DB
True
DataSource1
DataSet
Table1

Passo
Ao
4
Utilizando a pgina Data Controls da Component Palette, adicione um componente DBGrid e DBNavigator ao seu form.
5
Utilize a tabela a seguir para definir as propriedades do DBNavigator e DBGrid para que utilizem o componente DataSource.

Nome do Componente
Propriedade
Valor
DBGrid1
DataSource
DataSource1
DBNavigator
DataSource
DataSource1

Passo
Ao
6
Inicie o Fields Editor para o Componente Table1.
7
Adicione todos os campos da tabela ao dataset.
8
Defina um campo chamado PopArea e selecione FloaTField na list box Field type.
9
Certifique-se que o check box Calculated est selecionado, e clique em OK.
10
Saia do Fields Editor.
11
Utilize o Object Inspector para criar um event handler para o evento OnCalcFields do componente Table. Digite cdigo no event handler para que fique similar ao seguinte:

Passo
Ao
12
Utilize o Object Inspector para definir as seguintes propriedades do componente Field:

Nome do Componente
Propriedade
Valor
Table1PopArea
DisplayFormat
. #

Passo
Ao
13
Execute e teste a aplicao
14
Quando tiver terminado o teste, grave e feche seu projeto.
Utilizando os Componentes Database Lookup
Introduo
Um database lookup, ou tabela de busca  o processo de encontrar texto descritivo de um valor codificado. Uma situao comum onde tabelas de busca seriam utilizadas,
seria quando voc est editando o input de usurio e quiser exibir uma informao mais significativa, e no valores codificados.
O Delphi fornece dois  componentes para buscar valores em uma tabela de banco de dados, ou editar o input contra um valor em uma tabela. Eles so os seguintes:
* Componente DBLookupList
* Componente DBLookupCombo

O termo lookup em cada nome de componente refere-se s tabelas  de busca. O termo lookup tables refere-se s tabelas que contm informao descritiva sobre um valor
codificado. Esta seo discute  a utilizao destes componentes. Eles se encontram na pgina Data Controls da Component Palette.
Componente DBLookupList
O componente DBLookupList  um componente ListBox data-aware projetado para buscar valores em uma tabela baseado no valor de uma segunda tabela. O DBLookupList contm
um conjunto finito de dados, o usurio deve selecionar uma das opes da lista. Um DBLookupList permite exibir um conjunto de opes baseado no valor em outra tabela.
O componente DBLookupList difere do componente DBListBox porque permite coordenar o valor selecionado do DBLookupList com a linha corrente de outra tabela do banco
de dados.
Componentes DBLookupCombo
O componente DBLookupCombo  um componente ComboBox datawarw similar ao BDLookupList, exceto que um usurio pode selecionar um valor na lista ou digitar um novo
valor. Um ComboBox de onde o DBLookupCombo  derivado combina as capacidades de um ListBox com as capacidades de um componente  Edit.
Adicionando um Componente Database Lookup a um Form
Quando voc adiciona um componente DBLookupList ou  DBLookupCombo ao seu form, assumimos que:
* Voc possui uma aplicao de banco de dados
* O form na aplicao possui pelo menos um DataSource e um componente derivado de TDataSet sendo utilizado  para exibir informaes do banco de dados

Adicionar um componente database lookup envolve o seguinte processo:

Estgio
Processo
1
Adicionar o componente database lookup e lig-lo a um componente DataSource existente e propriedade DataField
2
Adicionar um novo componente Query ou Table (TDataSet)  e DataSource, e utilizar este DataSource para buscar valores codificados no primeiro DataSource
 Passos para  o Estgio  1
Execute os passos a seguir para adicionar um componente DBLookupList ou DBLookupCombo a um data source existente:

Passo
Ao
1
Adicione um componente database lookup em seu form.
2
Defina a propriedade DataSource a um componente DataSource que exista no form e que contenha  o valor que voc esteja procurando.
3
Defina a propriedade DataField ao campo que necessite de busca.
Passos para o Estgio 2
Execute os passos a seguir para anexar o componente DBLookupList ou DBLookupCombo  tabela de busca:

Passo
Ao
1
Adicione um componente TDataSet utilizando um componente Table ou Query que corresponda   tabela de busca.
2
Defina a propriedade DatabaseName do novo componente TDataSet.
3
Execute um dos seguintes:
* Defina a propriedade TableName do novo componente Table.
* Entre com um query para a propriedade SQL do componente query.
4
Adicione um novo componente DataSource, e defina a propriedade DataSet ao novo componente TDataSet.
5
Defina a propriedade LookupSource de componente DBLookup ao novo componente DataSource.
6
Defina a propriedade LookupField ao valor chave da tabela de busca.
7
Defina a propriedade LookupDisplay ao campo que voc queira exibir no componente DBLookupList.
Tutorial: Criando uma Aplicao Utilizando um Componente Database Lookup
Introduo
A melhor maneira de se aprender a utilizar um componente DBLookup  atravs de um exemplo. Nesta seo, voc utilizar um componente DBLookupList para exibir um
nome de empresa baseado no campo CustlD encontrado  na tabela Orders.
Passos do Tutorial
O processo  do tutorial envolve os seguintes estgios:

Estgio
Processo
1
Criar um form que exiba uma lista esttica dos campos de uma tabela de banco de dados utilizando um componente Table, DataSource, DBGrid e DBNavigator
2
Adicionar e conectar um componente TDBLookupList  aplicao
3
Adicionar cdigo para coordenar aes do componente TDBLookupList quando o sistema insere ou atualiza uma linha
Passos para o Estgio 1
Execute os passos a seguir para criar um form que exiba campos selecionados da tabela Orders:

Passo
Ao
1
Abra um novo projeto e grave-o
Quando solicitado, grave a unit como EX7CMAIN.PAS e o projeto como EXAMP7.DPR.
2
Utilizando a pgina Data Access da Component Palette, adicione um componente Table e DataSource ao seu form.
3
Utilizando a pgina Data Controls, adicione os seguintes ao seu form:
* Um componente DBGrid
* Um componente DBNavigator

4
Defina as seguintes propriedades para cada componente, como mostrado na tabela:

Nome do Componente
Propriedade
Valor
Table1
Database Name
TableName
Active
DBEMOS
ORDERS.DB
True
DataSource1
DataSet
AutoEdit
Table1
False
DBGrid1
DataSource
DataSource1
DBNavigator
DataSource
DataSource1

Passo
Ao
5
Utilize o Fields Editor para adicionar os seguintes campos ao dataset Table1:
* OrderNo
* CustNo
* SaleDate
* ItemsTotal
* AmountPaid
6
Arranje os campos no Fields Editor para que OrderNo seja o primeiro campo e CustNo seja o segundo.
7
Compile e grave a aplicao.Execute e teste-a.
Passos para o Estgio 2
Execute os passos a seguir para adicionar um componente DBLookupList  aplicao:

Passo
Ao
1
Utilizando a pgina Data Controls da Component Palette, adicione um componente DBLookupList ao seu form:

2
Utilize o Object Inspector para definir as seguintes propriedade do componente DBLookupList:

Nome do Componente
Propriedade
Valor
DBLookupList1
DataSource
DataField
DataSource1
CustNo

Passo
Ao
3
Adicione um novo componente Table e DataSource ao seu form. Defina as propriedades para cada componente, como mostrado na tabela a seguir:

Nome do Componente
Propriedade
Valor
Table2
DatabaseName
TableName
Active
DBDEMOS
CUSTOMER.DB
True
DataSource2
DataSet
Table2

Passo
Ao
4
Utilize o Fields Editor para adicionar os seguintes campos ao dataset Table2:
* CustNo
* Company
5
Conecte o componente DBLookupList ao segundo DataSource utilizando a tabela a seguir:

Nome do Componente
Propriedade
Valor
DBLookupList1
LookupSource
LookupField
LookupDisplay
DataSource2
CustNo
Company

Passo
Ao
6
Compile e grave a aplicao.
Execute e teste-a.
O componente DBLookupList destaca a empresa que corresponde ao valor de CustNo na linha do DBGrid.

Passos para o Estgio 3
Este cdigo de event handler permitir definir o valor de CustNo durante o modo de edio ou insero atravs de um duplo-clique no componente DBLookupList.
Execute os passos a seguir para adicionar um event handler para os eventos de DBLookupList, OnDblClick, ou OnClick:

Passo
Ao
1
Adicione as instrues a seguir no evento OnDblClick do componente DBLookupList:
if Table.State in [dsEdit, dsInsert] then
     Table1CustNo.Value := Table2CustNo.Value;
2
Compile e grave  sua aplicao.
Execute e teste-a alternando a aplicao entre o modo de edio e insero e utilizando o DBLookupList para definir o valor de CustNo na tabela Orders.
Lab: Utilizando Componentes de Banco de Dados
Objetivos
* Este lab refora a sua habilidade em:
* Adicionar um componente Table
* Adicionar um componente Database Grid
* Adicionar um componente Database Query
* Adicionar componentes Data Access
* Utilizar o Visual Query Builder
* Manipular e coordenar as aes dos componentes Data Access e Data Control
Cenrio
Voc construir o incio de um sistema de acompanhamento de vendas. Este sistema utilizar uma nica grade de banco de dados para executar duas tarefas:
* Exibir informaes de clientes e faturas
* Ligar clientes a faturas

No processo de construo desta aplicao, voc utilizar e coordenar as aes dos componentes Data Access, Data Control e Standard.
Processo
Utilize o seguinte processo para aplicar o que voc aprendeu:

Estgio
Processo
1
Abra um novo projeto e grave-o.
Quando solicitado, grave a unit como LAB7MAIN.PAS e o projeto como LAB7.DPR.
Altere o Caption do form para que exiba Aplicao de Acompanhamento de Vendas.
2
Adicione os seguintes componentes ao form:
* DataSource
* Table
* DBGrid
* Button
Defina as propriedades a seguir aos componentes, como mostrado na tabela:

Nome do Componente
Propriedade
Valor
Table1
DatabaseName
TableName
Active
DBDEMOS
CUSTOMER.DB
False
DataSource1
DataSet
Table1
DBGrid1
DataSource
DataSource1
Button1
Caption
Abrir Tabela  &Customer

Estgio
Processo
3
Adicione event handler OnClick para Button1 para que funcione como um boto de Liga?Desliga da Tabela Customer.
Compile e grave sua aplicao. Execute e teste-a.

Procedure TForm1.Button1Click(Sender: Tobject);
begin
     if Table1.Active = True then
     begin
         Table1.Close;
         Button1.Caption :+ brir Tabela  &Customer ';
      end
      else
          begin
               Table1.Close;
                Button1.Caption : = 'Fechar Tabela &Customer';
           end
end;

Estgio
Processo
4
Adicione os seguintes componentes ao form:
* Query
* Data Source
* Button
Defina as seguintes propriedades aos componentes:

Nome do Componente
Propriedade
Valor
Query1
Database Name
SQL
Active
DBDEMOS
select*from orders
False
DataSource2
DataSet
Query1
Button2
Caption
Abrir Tabela &Order

Estgio
Processo
5
Adicione e event handler OnClick a seguir para Button2.
Compile e grave sua aplicao. Execute e teste-a. Voc consegue abrir a tabela Order?

procedure TForm1.Button2Click (Sender : Tobject);
begin
      if Query1.Active = True then
      begin
           Query1.Active := False;
            Button2.Caption :+ brir Tabela &Order';
      end
      else
      begin
           Query1.Active :+ True;
           Button 2.Caption :+ 'Fechar Tabela &Order';
      end
end;

Estgio
Processo
6
Adicione dois componentes RadioButton ao form.
Defina as seguintes propriedades aos componentes:

Nome do Componente
Propriedade
Valor
RadioButton1
Caption
Checked
Ver Clientes
True
RadioButton2
Caption
Ver Pedidos

Passo
co
7
Adicione o event handler OnClick a seguir para RadioButton1 e RadioButton2 respectivamente:
DBGrid1.DataSource :+ DataSource1;
DBGrid1.DataSource :+ DataSource2;
8
Compile e teste sua aplicao como segue:
* D um clique nos botes para abrir ambas as tabelas.
* Utilize os botes de rdio para alternar entre os conjuntos de dados.
* Tudo est funcionando?
9
Adicione os seguintes componentes complementares:
* Group
* Button
* Dois componentes Edit
* Dois componentes Label
Defina as propriedades a seguir para cada um dos componentes e utilize o cdigo a seguir para event handler OnClick de Button3:

Nome do Componente
Propriedade
Valor
GroupBox1
Caption
(Vazio)
Button3
Caption
&Definir Clientes
Edit1
Text
(Vazio)
Edit2
Text
(Vazio)
Label1
Caption
Incio:
Label2
Caption
Final:

procedure TForm1.Button3Click(Sender : Tobject);
begin
      Table1.SetRangeStart;
      Table1.Fields[0] .AsString :+ Edit1.Text;
      Table1.SetRangeEnd;
      Table1.Fields[0] .AsString :+ Edit2.Text;
      Table1.ApplyRange;
end;

Estgio
Processo
10
Compile e grave sua aplicao.
Execute e teste-a, como segue:
* D um clique em Abrir Tabela Orders e depois em Ver Pedidos.
* Digite valores nos campos Incio e Final (por exemplo, 1005 e 1009), e d um clique em Definir Clientes.
* Qual o maior nmero de pedido exibido?-----
* Qual o menor?----
11
Adicione os seguintes componentes complementares ao seu form:
* Query
* DataSource
* RadioButton
Defina as propriedades a seguir para cada componente, como mostrado na tabela.

Nome do Componente
Propriedade
Valor
Query2
DatabaseName
DBDEMOS
DataSource3
DataSet
Query2
RadioButton3
Caption
Ver Pedidos de Clientes
Estgio
Processo
12
Execute as tarefas a seguir para dar  sua aplicao a habilidade de utilizar o componente DBGrid para exibir todos os seus pedidos agrupados por cliente.
* Inicialize o Query Builder utilizando o SpeedMenu do Componente Query2. Selecione DBDEMOS na lista.
* Adicione as tabelas Customer e Orders.
* Crie uma ligao do campo CustNo na tabela Customer com o campo CustNo na tabela Orders.
* Adicione os seguintes campos ao resultado da query:
 Customer.CustNo
 Customer.Company
 Orders.OrderNo
 Orders.AmoundPaid

13
Defina o critrio de ordenao. Ordene o resultado da query na ordem ascendente por Customer Number.
Grave seu trabalho e saia do Visual Query Builder.
14
Utilizando o Object Inspector, localize o componente Query2. Visualize a propriedade SQL e defina a propriedade Active para True.
15
Adicione o seguinte event handler OnClick para RadioButton3:
procedure TForm1.RadioButton3Click(Sender : Tobject);
begin
     DBGrid1.DataSource :+ DataSource3;
end;
16
Compile e grave sua aplicao.
Execute e teste-a, como segue:
* D um clique em Ver Pedidos de Clientes.
* D um clique em Ver Pedidos de Clientes.
Sua query foi executada corretamente?

Resumo do Captulo
Pontos Chave
Aps completar este captulo, voc aprendeu que:
* Para manipular e consultar bancos de dados  no Delphi, voc  deve entender o conceito de um dataset. Um dataset no Delphi  o objeto tipo TDataSet e  uma classe
abstrata. Os componentes Query, Table, e StoredProc so chamados de componentes TDataSet porque so derivados do objeto TDataSet.
* O componente DataSource atua como um intermedirio entre o componente DataSet   (TTable ou TQuery) e o componente Data Control.
* O componente Table  um componente DataSet que se comunica com uma tabela de banco de dados atravs do BDE.
* O Fields Editor permite criar uma lista de campos de um dataset.
* O componente DBGrid fornece uma maneira conveniente de exibir diversas linhas de dados de um componente Table ou Query. Sua aplicao pode utilizar o DBGrid para
inserir, deletar, editar ou exibir dados de um banco de dados.
* O componente Query permite utilizar SQL, gerenciar a comunicao com o BDE, e serve como interface entre o BDE e os componentes DataSource em seus forms.
* O visual Query Builder  uma ferramenta visual para construir queries baseadas em SQL, e permite construir queries complexas com pouco ou nenhum conhecimento de
SQL.
* O Fields Editor trabalha com os componentes Table e Query do TDataSet para definir campos calculados. O Fields Editor adiciona um novo objeto campo ao dataset.
* O Delphi fornece os componentes DBLookupList e DBLookupCombo para valores de busca em uma tabela.

Termos e Definies.
A tabela a seguir  uma referncia rpida aos termos explicados neste captulo.

Termo
Definio
Campo calculado
Um campo que exibe valores gerados pelo programa
Classe abstrata
Uma classe de onde voc pode derivar outras classes. Entretanto, voc no pode criar uma varivel desta classe.
Componente DataSet
Um componente Table, Query, ou StoredProc, que  derivado de um objeto the TDataSet
Database lookup
O processo de encontrar o texto descritivo para um valor codificado
Dataset
Um objeto no Delphi que consiste de uma srie de registros, cada um contendo qualquer nmero de campos e um ponteiro para o registro atual
Query parametrizada
Uma query onde um ou mais valores na condio de seleo so desconhecidos at o momento da execuo
Tabelas de busca
Tabelas que contm informao descritiva sobre um valor codificado

Introduo ao Delphi

InforBRs - Informtica Brasileira Ltda.
