Você está na página 1de 40

Sistema de Locadora Ano 2005

Estrutura de diretrios

Crie a estrutura de diretrios. Em meu caso criei:

D:\fernando\fito\delphi\locadora\sistema
D:\fernando\fito\delphi\locadora\dados

Conexo com o banco de dados

Abra o BDE (Borland Database Engine). Esse o software da Borland que permite voc
fazer uma conexo com qualquer tipo de banco de dados (Oracle, SQL Server, Access,
Sybase, Paradox etc). O BDE um software similar ao ODBC da Microsoft (localizado
no Painel de Controle do Windows).

Iniciar Programas Borland Delphi 7 BDE Administrator.

Na tela que se abre, clique com o boto direito em Databases e selecione depois em
New,

Sero listados todos os bancos de dados para os quais voc pode fazer uma conexo.
Selecione a opo STANDARD (que corresponde ao banco de dados Paradox) e clique
em OK.

No lado esquerdo da tela informe o nome do banco de dados (locadora_3infoX, onde


X corresponde a letra de sua turma - A ou B).

Do lado direito da tela, clique na linha Path e em seguida no boto identificado com
.... Selecione o caminho da pasta dados criado na etapa anterior (em meu caso foi
D:\fernando\fito\delphi\locadora\dados).

Clique no menu Object e depois em Apply.

Clique em Ok e feche o BDE.


Sistema de Locadora Ano 2005

Criando as tabelas do sistema Locadora

Para a criao de sistema de uma locadora, necessrio um estudo da modelagem de


dados (definio correta de como armazenar as informaes do sistema de maneira
que tenhamos a integridade dos dados e boa performance nas consultas). Como essa
uma matria do 4 ano, vamos apenas utilizar algumas tabelas necessrias para o
funcionamento do sistema.

Para a criao das tabelas no banco de dados Paradox, vamos utilizar o Database
Desktop, disponibilizado na instalao do Delphi.

Iniciar Programas Borland Delphi 7 Database Desktop.

A primeira coisa que devemos fazer definir que as tabelas criadas ficaro disponveis
dentro do banco de dados criado anteriormente (locadora_3infoX).

Clique no menu File e selecione Working Directory. Na opo Aliases, selecione o seu
banco de dados e depois clique em Ok.

Criando as tabelas do sistema

Para cada tabela do sistema, clique em File New Table. Selecione o banco de dados
Paradox 7 e clique em Ok.

Crie os campos da tabela conforme abaixo. Para escolher o tipo de dados aceito pelo
campo, clique com o boto direito na clula TYPE. Para definir a chave primria da
tabela (campo que no ser repetido em mais de uma linha da tabela) d um duplo
clique na clula Key.

Obs. Para remover um campo utilize as teclas Ctrl + delete.


Sistema de Locadora Ano 2005

TB_GENERO

Field Name Type Size Key Required Field


CodGenero + (auto increment) * Sim
Gnero A (alpha) 30 Sim

Clique em Save as e salve com o nome TB_GENERO.

TB_CLIENTE

Field Name Type Size Key Required Field


codCliente + (auto increment) * Sim
Nome A (alpha) 40 Sim
Endereco A (alpha) 40 Sim
Bairro A (alpha) 30 Sim
Cidade A (alpha) 30 Sim
Estado A (alpha) 2 Sim
Telefone A (alpha) 20 No
DT_Nasc Date Sim

Clique em Save as e salve com o nome TB_CLIENTE.

TB_FILME

Field Name Type Size Key Required Field


codFilme + (auto increment) * Sim
Filme A (alpha) 50 Sim
codGenero I (long integer) Sim
Leg_Dub A (alpha) 1 Sim

Para essa tabela, precisamos utilizar o conceito de Integridade Referencial, ou seja,


como para cada filme, precisamos ter um gnero e essa ligao feita atravs do
cdigo do gnero, precisamos colocar uma integridade na tabela de filmes para que ela
s aceite um cdigo do gnero existente no cadastro de gneros.

Abra a lista de opes de Table properties e selecione Referential Integrity. Clique


no boto Define. Na janela que se abre clique no campo codGenero localizado na parte
esquerda da janela e depois na seta para a direita. No lado esquerdo da janela,
selecione a tabela TB_Genero e clique na seta para a esquerda. A sua janela dever
ficar como o exemplo abaixo:
Sistema de Locadora Ano 2005

Para finalizar, na parte inferior da janela, clique na opo Prohibit. Dessa forma voc
est dizendo que no pode ser excludo um registro da tabela de Gneros, se esse
gnero possuir um filme relacionado a ele.

Clique em ok e informe o nome genero_fiilme_fk para a nossa regra de integridade


referencial.

Clique em Save as e salve com o nome TB_FILME.

Feche o Database Desktop e abra o Delphi.


Sistema de Locadora Ano 2005

Construindo o sistema no Delphi

File Save all

Na pasta sistema (em meu caso D:\fernando\fito\delphi\locadora\sistema):

Unit: unitMenu
Project: Locadora

Tela de Menu

Name: frmMenu
Caption: Sistema de Locadora
WindowState: wsMaximized (inicia com a tela maximizada)

Barra de menu

Na guia Standard selecione e insira no formulrio o cone MainMenu.

Name: mnuLocadora

D um duplo clique sobe o cone e crie o menu conforme abaixo:

Name: mniArquivo
Caption: &Arquivo

Name: mniArquivoSair
Caption: &Sair
Shortcut: Ctrl + S

Name: mniCadastro
Caption: &Cadastro

Name: mniCadastroFilme
Caption: &Filme
Shortcut: Ctrl + F

Name: mniCadastroCliente
Caption: &Cliente
Shortcut: Ctrl + C

Barra de Ferramentas
Sistema de Locadora Ano 2005

Na guia Win32, selecione e adicione no formulrio o cone ImageList. Altere as


propriedades para:

Name: imlLocadora

D um duplo clique sobre o image list para adicionar as figuras na lista. Para cada
figura, clique no boto Add e selecione o arquivo desejado. As figuras do Delphi ficam
armazenadas em C:\Arquivos de programas\Arquivos comuns\Borland
Shared\Images, porm voc poder utilizar qualquer figura com a extenso ico ou
bmp. Acrescente uma figura para a opo Sair,uma para Cliente, uma para Filme e
outra para Gnero.

Na guia Win32, selecione e adicione no formulrio o cone ToolBar. Altere as


propriedades para:

Name: tbrLocadora
Images: imlLocadora

Para adicionar um boto na barra de ferramentas, clique com o boto direito sobre ela
e selecione a opo New Button. Caso queira colocar uma distncia entre os botes,
clique com o boto direito e selecione New Separator.

Se desejar mudar a figura de um boto, altere a propriedade ImageIndex.

Para salvar o projeto clique em File Save All.


Sistema de Locadora Ano 2005

Data Module

O data module o local onde podemos centralizar todos os objetos que faro a ligao
entre o seu sistema e o banco de dados.

Para inserir o data module utilize o menu:

File New Other:

Na guia New, selecione a opo Data Module e clique Ok. Altere as propriedades para:

Name: dmLocadora

File Save All: datamodule.pas

Database

O objeto database faz a ligao do seu projeto com um banco de dados criado
anteriormente.

Selecione a guia BDE e insira o objeto Database dentro do Data Module. Altere as
propriedades:

Name: dbLocadora
DatabaseName: dbLocadora
AliasName: locadora_3infoX (o nome do banco de dados que voc criou no BDE
Administrator).

Tables

Cada tabela do seu sistema ser representada por um objeto Tables. Para isso,
adicione no Data Module 3 objetos Table localizados na guia BDE. Altere as
propriedades como abaixo:

Name: TB_Genero
DatabaseName: dbLocadora (selecione)
TableName: TB_GENERO.db (selecione)
Active: TRUE

D um duplo clique sobre o objeto Table. Na janela que se abre, clique com o boto
direito do mouse e selecione add All Fields.

Name: TB_Filme
DatabaseName: dbLocadora (selecione)
TableName: TB_FILME.db (selecione)
Active: TRUE
D um duplo clique sobre o objeto Table. Na janela que se abre, clique com o boto
direito do mouse e selecione add All Fields.
Sistema de Locadora Ano 2005

Name: TB_Cliente
DatabaseName: dbLocadora (selecione)
TableName: TB_CLIENTE (selecione)
Active: TRUE

D um duplo clique sobre o objeto Table. Na janela que se abre, clique com o boto
direito do mouse e selecione add All Fields.

File Save All.

Tela de Cadastro de Gnero

File New Form

File Save All - name: genero.pas

Altere as propriedades:

Name: frmGenero
Caption: Cadastro de Gnero
BorderStyle: bsSingle

Vamos dividir a tela em duas partes, uma para o grid de exibio dos dados e outra
para a barra de navegao dos registros. Para isso, insira no formulrio o objeto Panel
localizado na guia Standard. Altere as propriedades:

Name: panGenero
Align: alBottom
Caption: deixar em branco
Sistema de Locadora Ano 2005

Como os objetos do banco de dados esto no Data Module, precisamos ligar o


formulrio de gneros a ele, para que possamos acessar a tabela de cadastro de
Gneros. Para isso:

File Use Unit.

Selecione a opo datamodule e clique Ok.

Na guia Data Access, selecione e insira no formulrio de gnero o objeto Data Source.
Esse objeto vai trazer os dados da tabela de gnero para a memria do seu programa.
Altere as propriedades para:

Name: dsGenero
DataSet: dmLocadora.TB_Genero (selecione)

Agora que os dados esto em memria, precisamos traz-los para dentro de nosso
formulrio. Para isso vamos utilizar o objeto DBGrid. Na guia Data Controls, selecione
e insira o objeto DBGrid. Altere as propriedades.

Name: dbgGenero
DataSource: dsGenero
Align: alClient

Na guia Data Controls, selecione e insira o objeto DBNavigator dento do espao do


objeto Panel. Esse objeto vai fazer a manipulao das linhas selecionadas na tabela de
Gnero (inserir nova linha. Editar, excluir, movimentar para a ltima linha etc). Altere
as propriedades:

Name: dbnGenero
DataSource: dsGenero

File Save All.

Agora que o nosso cadastro de Gneros est pronto, vamos cham-lo a partir da tela
de menu. Para isso, abra o formulrio de menu: View Forms frmMenu Ok.
Sistema de Locadora Ano 2005

A tela de menu precisa visualizar o cadastro de gnero para poder abri-lo. Para isso,
clique no menu File, selecione a opo Use Unit, clique em Genero e em Ok.

No formulrio de menu, clique em Cadastro e depois em Gnero. Deixe a procedure


que se abre conforme abaixo:

procedure TfrmMenu.mniCadastroGeneroClick(Sender: TObject);


begin
frmGenero.ShowModal ;
end;

Vamos aproveitar para programar o boto Sair. Na tela de menu clique em Arquivo e
Sair.

Deixe a procedure como abaixo:

procedure TfrmMenu.mniArquivoSairClick(Sender: TObject);


begin
close;
end;

Salve (File Save All) e execute o projeto F9.

Abra o formulrio de gnero e pratique o cadastro. Utilize o dbNavigator para inserir


novas linhas, exclu-las, movimentar-se entre os registros etc. Lembre-se que o cdigo
e um campo do tipo Autoincrement e que o mesmo ser gerado aps o cadastro no
banco de dados.

Tela de Cadastro de Clientes

Como o cadastro de clientes composto por vrias informaes (cdigo, nome,


endereo, etc), seria difcil exibirmos todos os campos em um nico grid. Por isso,
vamos dividir a manipulao dos dados do cliente em duas telas: uma para listar
apenas o cdigo e o nome do cliente (sem a opo de alterao de dados) e outra no
formato de formulrio, onde sero apresentados todos os campos da tabela para a
incluso ou alterao de clientes.
Sistema de Locadora Ano 2005

Tela 1: Lista os clientes

File New Form

File Save All - name: cliente.pas

Altere as propriedades:

Name: frmCliente
Caption: Cadastro de Clientes
BorderStyle: bsSingle

Fazer a referncia ao data module: File Use Unit Datamodule.

Image Lista

Insira um Image List (name: imlCliente) e adicione trs figuras que representaro as
opes de incluir, alterar e excluir clientes. Se tiver dvidas de como fazer, veja a tela
de menu.

ToolBar

Insira um objeto ToolBar.

Name: tbrCliente
Images: imlCliente

Adicione trs botes (clique com o boto direito no tollbar e selecione New Button).
Selecione cada um dos botes e altere a propriedade name para btnInserir, btnAlterar
e btnExcluir.

DataSource

Adicione um data source e altere as propriedades:


Sistema de Locadora Ano 2005

Name: dsCliente
Dataset: dmLocadora.TB_CLIENTE (selecione)

DBGrid

Name: dbgCliente
DataSource: dsCliente
Align: alClient
ReadOnly: True (significa que o grid est disponvel apenas para leitura, ou seja,
voc no poder inserir, alterar ou excluir linhas diretamente no grid).

Clique com o boto direito sobre o grid e selecione a opo Columns Editor. Na janela
que se abre, clique com o boto direito e selecione Add. Para o campo adicionado,
selecione a opo codCliente na propriedade FieldName; Repita essa operao e
adicione o campo Nome.

Abra o formulrio de menu para codificarmos a chamada a tela de clientes (menu View
Forms frmMenu).

Clique em File Use Unit Cliente Ok.

Clique no menu Cadastro do formulrio de menu e selecione a opo Cliente. Altere a


procedure conforme abaixo:

procedure TfrmMenu.mniCadastroClienteClick(Sender: TObject);


begin
frmCliente.ShowModal;
end;

Clique em File Save all e depois execute o sistema (F9). Note que o grid est em
modo de leitura (readonly). Para inserir, alterar e excluir cliente vamos construir a
tela de detalhes do cliente.

Tela 2 Detalhes do Cliente


Sistema de Locadora Ano 2005

File New Form


File Save All. Nome do arquivo: detCliente.pas

Altere as propriedades do formulrio:

Name: frmDetCliente
Caption: Detalhe do Cliente

Faa a referncia ao Data Module (File Use Unit datamodule).

Data Source

Name: dsDetCliente
Dataset: dmLocadora.TB_Cliente

Para inserir os campos no formulrio, abra o Data Module (View Forms


dmLocadora). D um duplo clique no objeto TB_Cliente. Selecione todos os campos e
arraste-os para o formulrio frmDetCliente.
Sistema de Locadora Ano 2005

O formulrio ficar como abaixo:

Acrescente dois botes do tipo BitBtn (localizados na guia Addtional). Altere as


propriedades:
Sistema de Locadora Ano 2005

Name: btnOk
Kind: bkOk

Name: btnCancelar
Kind: bkCancel

Altere a propriedade Enabled do campo DBEdit1 (campo de edit do cdigo do cliente)


para False. Com isso o campo cdigo no estar disponvel para alterao, pois ele
gerado automaticamente pelo banco de dados.

Procedimentos para Inserir e Alterar Clientes

Entre na unit detClientes (menu View Units detCliente Ok). Localize o cdigo {
Public declarations }. Insira o texto logo abaixo dele:

{ Public declarations }
procedure Inserir;
procedure Alterar;

Digite o cdigo abaixo aps a rea {$R *.dfm}. Voc dever digitar todo o cdigo,
inclusive as procedures.

{$R *.dfm}
Procedure TfrmDetCliente.Inserir ;
begin
// Coloca a tabela no modo de insero
dmLocadora.TB_Cliente.Insert;
// exibe o formulrio de detalhe do cliente
showmodal;
end;

Procedure TfrmDetCliente.Alterar;
begin
// Coloca a tabela no modo de alterao
dmLocadora.TB_Cliente.Edit;
// exibe o formulrio de detalhe do cliente
showmodal;
end;

Agora vamos programar o boto Ok (responsvel pela gravao das informaes) e


Cancelar (responsvel pelo cancelamento das alteraes).

Volte para o formulrio de detalhe do cliente (menu View Forms frmDetCliente).

D um duplo clique no boto OK. Acrescente o cdigo abaixo da palavra begin:

dmlocadora.TB_Cliente.Post;
Sistema de Locadora Ano 2005

Volte para o formulrio e d um duplo clique no boto Cancelar. Acrescente o cdigo


abaixo da palavra begin:

dmlocadora.TB_Cliente.Cancel;

No formulrio de cliente (menu View Forms frmCliente), vamos programar a


chamada da tela de detalhes do cliente para as opes de Inserir e Alterar.

Faa a referncia tela de detalhes (File Use Unit detCliente).

No formulrio de clientes (frmCliente) d um duplo clique no boto btnInserir (na barra


de ferramentas do formulrio) e acrescente o cdigo aps a palavra begin.

frmDetCliente.Inserir ;

No formulrio de clientes (frmCliente) d um duplo clique no boto btnAlterar (na


barra de ferramentas do formulrio) e acrescente o cdigo aps a palavra begin.

frmDetCliente.Alterar;

No formulrio de clientes (frmCliente) d um duplo clique no boto btnExcluir (na


barra de ferramentas do formulrio) e acrescente o cdigo aps a palavra begin.

dmlocadora.TB_Cliente.Delete ;

Salve o projeto (File Save All) e execute-o (F9). Teste o cadastro de clientes.
Sistema de Locadora Ano 2005

Tela de Cadastro de Filmes

O cadastro de filmes tambm ser dividido em duas telas: uma para listar apenas o
cdigo e o nome do filme (sem a opo de alterao de dados) e outra no formato de
formulrio, onde sero apresentados todos os campos da tabela para a incluso ou
alterao.

Tela 1: Lista os Filmes

File New Form

File Save All - name: filme.pas

Altere as propriedades:

Name: frmFilme
Caption: Cadastro de Filmes
BorderStyle: bsSingle

Fazer a referncia ao data module: File Use Unit Datamodule.

Image Lista

Insira um Image List (name: imlFilme) e adicione trs figuras que representaro as
opes de incluir, alterar e excluir clientes. Se tiver dvidas de como fazer, veja a tela
de menu.
Sistema de Locadora Ano 2005

ToolBar

Insira um objeto ToolBar.

Name: tbrFilme
Images: imlFilme

Adicione trs botes (clique com o boto direito no tollbar e selecione New Button).
Selecione cada um dos botes e altere a propriedade name para btnInserir, btnAlterar
e btnExcluir.

DataSource

Adicione um data source e altere as propriedades:

Name: dsFillme
Dataset: dmLocadora.TB_FILME (selecione)

DBGrid

Name: dbgFilme
DataSource: dsFilme
Align: alClient
ReadOnly: True (significa que o grid est disponvel apenas para leitura, ou seja,
voc no poder inserir, alterar ou excluir linhas diretamente no grid).

Clique com o boto direito sobre o grid e selecione a opo Columns Editor. Na janela
que se abre, clique com o boto direito e selecione Add. Para o campo adicionado,
selecione a opo codFilme na propriedade FieldName; Repita essa operao e adicione
o campo Filme.

Abra o formulrio de menu para codificarmos a chamada a tela de filmes (menu View
Forms frmMenu).

Clique em File Use Unit Filme Ok.

Clique no menu Cadastro do formulrio de menu e selecione a opo Filme. Altere a


procedure conforme abaixo:

procedure TfrmMenu.mniCadastroFilmeClick(Sender: TObject);


begin
frmFilme.ShowModal;
end;

Clique em File Save all e depois execute o sistema (F9). Note que o grid est em
modo de leitura (readonly). Para inserir, alterar e excluir filmes vamos construir a tela
de detalhes do filme.
Sistema de Locadora Ano 2005

Tela 2 Detalhes do Filme

File New Form


File Save All. Nome do arquivo: detFilme.pas

Altere as propriedades do formulrio:

Name: frmDetFilme
Caption: Detalhe do Filme
BorderStyle: bsSingle

Faa a referncia ao Data Module (File Use Unit datamodule).

Data Source

Name: dsDetFilme
Dataset: dmLocadora.TB_Filme

Para inserir os campos no formulrio, abra o Data Module (View Forms


dmLocadora). D um duplo clique no objeto TB_Filme. Selecione todos os campos e
arraste-os para o formulrio frmDetFilme.

O formulrio ficar como abaixo:


Sistema de Locadora Ano 2005

Acrescente dois botes do tipo BitBtn (localizados na guia Addtional). Altere as


propriedades:

Name: btnOk
Kind: bkOk

Name: btnCancelar
Kind: bkCancel

Altere a propriedade Enabled do campo DBEdit1 (campo de edit do cdigo do filme)


para False. Com isso o campo cdigo no estar disponvel para alterao, pois ele
gerado automaticamente pelo banco de dados.

Procedimentos para Inserir e Alterar Clientes

Entre na unit detFilme (menu View Units detFilme Ok). Localize o cdigo { Public
declarations }. Insira o texto logo abaixo dele:

{ Public declarations }
procedure Inserir;
procedure Alterar;

Digite o cdigo abaixo aps a rea {$R *.dfm}. Voc dever digitar todo o cdigo,
inclusive as procedures.

{$R *.dfm}
Procedure TfrmDetFilme.Inserir ;
begin
// Coloca a tabela no modo de insero
dmLocadora.TB_Filme.Insert;
// exibe o formulrio de detalhe do filme
showmodal;
end;
Sistema de Locadora Ano 2005

Procedure TfrmDetFilme.Alterar;
begin
// Coloca a tabela no modo de alterao
dmLocadora.TB_Filme.Edit;
// exibe o formulrio de detalhe do filme
showmodal;
end;

Agora vamos programar o boto Ok (responsvel pela gravao das informaes) e


Cancelar (responsvel pelo cancelamento das alteraes).

Volte para o formulrio de detalhe do filme (menu View Forms frmDetFilme).

D um duplo clique no boto OK. Acrescente o cdigo abaixo da palavra begin:

dmlocadora.TB_Filme.Post;

Volte para o formulrio e d um duplo clique no boto Cancelar. Acrescente o cdigo


abaixo da palavra begin:

dmlocadora.TB_Filme.Cancel;

No formulrio de filme (menu View Forms frmFilme), vamos programar a chamada


da tela de detalhes do filme para as opes de Inserir e Alterar.

Faa a referncia tela de detalhes (File Use Unit detFilme).

No formulrio de filmes(frmFilme) d um duplo clique no boto btnInserir (na barra de


ferramentas do formulrio) e acrescente o cdigo aps a palavra begin.

frmDetFilme.Inserir ;

No formulrio de clientes (frmFilme) d um duplo clique no boto btnAlterar (na barra


de ferramentas do formulrio) e acrescente o cdigo aps a palavra begin.

frmDetFilme.Alterar;

No formulrio de clientes (frmFilme) d um duplo clique no boto btnExcluir (na barra


de ferramentas do formulrio) e acrescente o cdigo aps a palavra begin.

dmlocadora.TB_Filme.Delete ;

Salve o projeto (File Save All) e execute-o (F9).

Primeiramente, anote os cdigos e gneros existentes (Menu Cadastro Gnero ou


CTRL + G).

Entre no cadastro de filme (menu Cadastro Filme). Clique no boto de inserir filme.
Sistema de Locadora Ano 2005

Preencha a tela informando o cdigo do gnero correspondente ao filme. Na opo


Leg_Db, informe L ou D (maisculo).

Aps testar a incluso, alterao e excluso de filmes, vamos testar a integridade


referencial existente entre as tabelas de filme e gnero. Ela nos diz que no podemos
ter um filme associado com um gnero inexistente.

Abra a tela de incluso de filme e no cdigo do gnero, informe um cdigo que no


exista.

Ser exibido a mensagem abaixo ao programador:


Sistema de Locadora Ano 2005

Clique no boto Ok e depois pressione a tecla F9. Na barra de tarefas, clique no


programa correspondente a execuo do seu sistema. Ele estar exibindo a mensagem
abaixo, informando que o Record (no caso o cdigo do gnero) no est cadastrado na
tabela Mster (no caso a tabela Gnero).

Clique em Ok e informe um cdigo de gnero existente.

Tornando o sistema mais amigvel

Se ao invs de fazermos o usurio digitar o cdigo do gnero ao cadastrar o filme,


exibssemos para ele uma lista com todos os gneros cadastrados, o usurio no teria
que decorar todos os cdigos de gnero e tambm no correria o risco de informar um
cdigo inexistente.

Abra o formulrio de detalhe do filme (View Forms frmDetFilme).

Precisaremos acessar a tabela de gnero para listarmos os registros. Para isso insira
mais um objeto Data Source e altere as propriedades conforme abaixo:

Name: dsGenero
DataSet: dmLocadora.TB_Genero

Selecione o label codGenero e altere o seu caption para Gnero. Selecione o edit do
cdigo do gnero (DBEdit3) e delete-o.

Selecione a guia Data Controls selecione o objeto DBLookupComboBox. Adicione-o no


local onde voc excluiu o edit codGenero.

Altere as propriedades conforme abaixo:

Name: dblGenero
DataSource: dsDetFilme (local onde vamos gravar o gnero selecionado)
DataField: CodGenero (o campo da tabela onde vamos salvar o gnero escolhido para
o filme)
ListSource: dsGenero (Local que possui os gneros que sero listados no combobox)
ListField: Gnero (nome do campo da tabela de gnero que ser exibido na lista)
KeyField: CodGenero (nome do campo que chave primria no cadastro de gnero)

Salve e execute o programa. Agora ao cadastrar um filme, teremos uma lista com
todos os gneros disponveis.
Sistema de Locadora Ano 2005
Sistema de Locadora Ano 2005

Consultas e Pesquisas

Vamos melhorar o nosso sistema, permitindo que o usurio encontre um cliente no


DBGrid enquanto digita o seu nome. Para isso precisamos criar um ndice no campo
nome do cliente.

Com o projeto do Delphi fechado, abra o Database Desktop (Iniciar, Programas,


Borland Delphi 7 , Database Desktop).

Para localizarmos o nosso banco de dados, clique no menu File Working Directory.
Em Aliases, selecione o seu banco de dados. Clique em Ok.

Para abrir a tabela de clientes, clique em File Open Table. Selecione o arquivo
TB_Cliente e clique em Abrir.

No menu Table, selecione a opo Restructure. Na lista Table properties selecione a


opo Secondary Indexes. Clique no boto Define. Clique no campo nome e na seta
para a direita.

Clique no boto Ok e informe o nome index_nome_cliente.

Clique no boto Save e feche o Database Desktop.

Abra o seu projeto no Delphi.

Abra o formulrio de clientes (View Forms frmCliente). Na guia Standard selecione


o objeto Panel e insira no seu formulrio.

Altere as propriedades do panel para:

Align: alBottom
Caption: deixar o caption em branco

Dentro do panel, insira um objeto Label e altere as propriedades:

Caption: Informe o nome do cliente


Sistema de Locadora Ano 2005

Ao lado do label, insira um objeto Edit. Altere as propriedades para:

Name: edtNome
Text: deixar em branco

Sua tela dever estar como abaixo:

D um duplo clique no objeto Edit. Ser aberta a procedure


TfrmCliente.edtNomeChange. Ela ser ativada toda vez que ocorrer um change
(alterao) na caixa de texto, ou seja, a cada letra digitada a procedure ser chamada.

Dessa forma poderemos, a cada letra digitada, pesquisar e localizar dentro do grid o
cliente desejado.

Altere a procedure conforme abaixo:

procedure TfrmCliente.edtNomeChange(Sender: TObject);


begin

dmlocadora.TB_Cliente.Locate(nome',edtnome.Text,[ LoCaseInsensitive, LoPartialKey]);

end;

No cdigo acima, a cada letra digitada no campo edtNome, vamos pesquisar o


contedo do campo (edtNome.Text) no campo 'nome'. Faremos pesquisas parciais no
nome do cliente (LoPartialKey) ao invs de pesquisarmos o nome inteiro.
Sistema de Locadora Ano 2005

Salve o projeto e execute-o. Abra o cadastro do cliente. Cadastre alguns clientes.

Com alguns cliente cadastrados, digite o nome de um dos cliente no caixa de pesquisa.
Conforme voc vai digitando o nome, o grid vai posicionando no cliente encontrado.

Se desejar deixar o seu grid ordenado pelo nome do cliente, abra o Data Module e
selecione a tabela TB_Cliente. Altere a propriedade IndexName para
index_nome_cliente,

Execute o programa e abra o cadastro de cliente. O grid agora estar ordenado pelo
Nome do cliente e no mais pelo seu cdigo.

Repita os mesmos procedimentos para pesquisar os filmes cadastrados pelo seu nome.
No esquea que para criar o ndice pelo nome do filme no Database Desktop, o seu
projeto no Delphi dever estar fechado.
Sistema de Locadora Ano 2005

Pesquisando atravs de um combobox

Abra o formulrio de clientes.

Selecione o label com o texto Informe o nome do cliente e altere o seu caption para
Informe o nome do cliente ou selecione-o na lista.

Na guia Data Controls, selecione o DBLookupComboBox e insira-o ao lado do edit de


pesquisa pelo nome (edtNome). Altere as propriedades do DBLookupComboBox1 para:

Name: dblNome
ListSource: dsCliente
ListField: Nome
KeyField: CodCliente

Salve o projeto e execute-o. Teste a pesquisa de cliente por parte do nome ou pelo
combo Box.
Sistema de Locadora Ano 2005

Pesquisando atravs de comandos SQL

Pesquisa de Filmes por Gnero

File New Form


File Save All. Nome do arquivo:pesFilmeGenero.pas

Altere as propriedades do formulrio:

Name: frmPesFilmeGenero
Caption: Pesquisa de Filmes por Gnero
BorderStyle: bsSingle

Faa a referncia ao Data Module (File Use Unit datamodule).

Data Source (Para listar os gneros cadastrados)

Name: dsGenero
Dataset: dmLocadora.TB_Genero

Insira um objeto Panel e altere as propriedades:

Align: alTop
Caption: deixar em branco

Insira um objeto Label e altere a propriedade:

Caption: Selecione o gnero:

Insira um objeto DBLookupComboBox e altere as propriedades:


Sistema de Locadora Ano 2005

Name: dblGenero
ListSource: dsGenero
ListField: Gnero
KeyField: CodGenero

Insira um objeto do tipo Button e altere as propriedades:

Caption: &Pesquisar
Name: btnPesquisar

Insira um objeto do tipo Query (localizado na guia BDE) e altere as propriedades:

Name: qryFilmeGenero
DatabaseName: dbLocadora

Insira um novo objeto do tipo Data Source e altere as propriedades:

Name: dsFilmeGenero
DataSet: qryFilmeGenero

Insira um objeto do tipo DBGrid e altere as propriedades:

Align: alClient
Name: dbgFilmeGenero
DataSource: dsFilmeGenero

Para fazermos a pesquisa, d um duplo clique no boto Pesquisar e coloque o cdigo


abaixo:

procedure TfrmPesFilmeGenero.btnPesquisarClick(Sender: TObject);


var
GeneroSelecionado : integer ;
begin

// Verifica se foi selecionado algum gnero para a pesquisa

if dblGenero.Text = '' then


begin
showmessage('Selecione um gnero para a pesquisa.');
dblgenero.SetFocus ;
exit;
end
;

// Recebe o cdigo do gnero selecionado no dblookupcombobox


generoselecionado := dblgenero.KeyValue ;

// fecha o objeto query


qryFilmeGenero.Close;
// limpa o objeto query, pois ele pode estar preenchido por consultas anteriores
qryFilmeGenero.SQL.Clear ;
// monta o comando SQL que ira fazer a pesquisa na tabela TB_Filme
// de acordo com o gnero selecionado
Sistema de Locadora Ano 2005

qryFilmeGenero.SQL.Add('select codFilme, filme, leg_dub ' ) ;


qryFilmeGenero.SQL.Add('from tb_filme') ;
qryFilmeGenero.SQL.Add('where codGenero = ' + inttostr(generoselecionado) ) ;
// executa a consulta
qryFilmeGenero.Open ;

// Caso a consulta no retorne nenhum valor (eof - end of file - final do arquivo)
// apresenta mensagem
if qryFilmeGenero.Eof then
begin
showmessage('No foi encontrado nenhum filme para o gnero selecionado.');
dblgenero.SetFocus ;
end
;

end;

Salve o projeto.

Adicionando novos menus

Abra o formulrio de menu (frmmenu). D um duplo clique no objeto mnuLocadora


(main menu) que est dentro do seu form.

Na janela que se abre, clique na opo ao lado do menu Cadastro e altere as


propriedades:

Name: mniConsulta
Caption: &Consulta

Clique na opo abaixo do menu Consulta e altere as propriedades:

Name: mniConsultaFilmeporGenero
Caption: &Filmes por Gnero

Feche a caixa de menu. No menu File do Delphi, selecione a opo Use Unit. Marque a
opo pesFilmeGenero e clique em Ok.

No menu do seu sistema, clique em Consulta e depois em Filmes por Gnero. Deixe a
procedure conforme abaixo:

procedure TfrmMenu.mniConsultaFilmeporGeneroClick(Sender: TObject);


begin
frmPesFilmeGenero.ShowModal ;
end;

Salve o projeto e teste a tela de consulta de filmes por gnero.


Sistema de Locadora Ano 2005

Pesquisa de Clientes por Cidade

File New Form


File Save All. Nome do arquivo:pesClienteCidade.pas

Altere as propriedades do formulrio:

Name: frmPesClienteCidade
Caption: Pesquisa de Clientes por Cidade
BorderStyle: bsSingle

Faa a referncia ao Data Module (File Use Unit datamodule).

Insira um objeto Panel e altere as propriedades:

Align: alTop
Caption: deixar em branco

Insira um objeto Label e altere a propriedade:

Caption: Informe a cidade:

Insira um objeto Edit e altere as propriedades:

Name: edtCidade
Text: deixar em branco

Insira um objeto do tipo Button e altere as propriedades:

Caption: &Pesquisar
Name: btnPesquisar
Sistema de Locadora Ano 2005

Insira um objeto do tipo Query (localizado na guia BDE) e altere as propriedades:

Name: qryClienteCidade
DatabaseName: dbLocadora
SQL: d um clique dentro do campo e depois no boto ...
Acrescente o texto:

Locadora takeshi:
select codCliente, nome, endereco, bairro, cidade, telefone, dt_nasc
from tb_cliente
where trim(upper(cidade)) = :pCidade

Esse texto vai pesquisar os dados da cidade na tabela de cidade, onde o nome da
cidade em maisculo upper(cidade) seja igual ao parmetro cidade --
:NomeCidade. Esse parmetro ser informado no clique do boto pesquisar.

Insira um objeto do tipo Data Source e altere as propriedades:

Name: dsClienteCidade
DataSet: qryClienteCidade

Insira um objeto do tipo DBGrid e altere as propriedades:

Align: alClient
Name: dbgClienteCidade
DataSource: dsClienteCidade

Para fazermos a pesquisa, d um duplo clique no boto Pesquisar e coloque o cdigo


abaixo:

procedure TfrmPesClienteCidade.btnPesquisarClick(Sender: TObject);


var
Cidade: string ;
begin
// Recebe o nome da cidade transformando o texto em letras maiusculas
cidade := uppercase(edtcidade.text) ;

// Verifica se foi preenchido o nome da cidade


if cidade = '' then
begin
showmessage('Informe a cidade para a pesquisa.');
edtCidade.SetFocus ;
exit;
end
;

// fecha o objeto query


qryClienteCidade.Close;
// Passa o nome da cidade digitado no edit para o parameto :pCidade do SQL
qryClienteCidade.Params[0].Value := cidade ;

// A passagem do parametro tambem poderia ser feita pelo nome,


// conforme exemplo abaixo
//qryClienteCidade.ParamByName('pCidade').Value := cidade ;
Sistema de Locadora Ano 2005

// executa a consulta
qryClienteCidade.Open ;

// Caso a consulta nao retorne nenhum valor (eof - end of file - final do arquivo)
// apresenta mensagem
if qryClienteCidade.Eof then
begin
showmessage('No foi encontrado nenhum cliente para a cidade informada.');
edtcidade.SetFocus ;
end
;

end;

Salve o projeto. Acrescente a chamada ao form frmPesClienteCidade no menu de


consultas e teste o programa.
Sistema de Locadora Ano 2005

Cadastro de Locaes

Criando as tabelas

Entre no Database Desktop.

File Working Directory.

Em Aliases, selecione o seu banco de dados.

Tabela de Locao:

File New Table.

Paradox 7 Ok.

Crie a tabela abaixo:

Field Name Type Size Key


numLocacao Autoincrement (+) *
DT_Locacao Date
codCliente Long Integer
ValorPago Money
ValorTotal Money

Abra a lista de opes Table Properties e selecione Referential Integrity.

Clique no boto Define.

Do lado esquerdo adicione o campo codCliente e do lado direito a tabela TB_Cliente


(estamos fazendo a integridade referencial, onde voc s pode fazer uma locao para
um cliente existente).

Em update rule (regra de atualizao) marque a opo Prohibit. Clique em Ok. Informe
o nome fk_locacao_cliente.

Clique em Save As e salve com o nome TB_LOCACAO (verifique se esta salvando na


pasta correta).

Tabela de Filmes da Locao:

File New Table.

Paradox 7 Ok.

Crie a tabela abaixo:

Field Name Type Size Key


numLocacao Long Integer *
codFilme Long Integer *
DT_Devolucao Date
Sistema de Locadora Ano 2005

ValorFilme Money

Abra a lista de opes Table Properties e selecione Referential Integrity.

Clique no boto Define.

Do lado esquerdo adicione o campo NumLocacao e do lado direito a tabela TB_Locacao


(estamos fazendo a integridade referencial, onde voc s pode adicionar um filme em
uma locao existente).

Em update rule (regra de atualizao) marque a opo Prohibit. Clique em Ok. Informe
o nome fk_locacao_filme.

Abra novamente a lista de opes Table Properties e selecione Referential Integrity.


Clique no boto Define.

Do lado esquerdo adicione o campo codFilme e do lado direito a tabela TB_Filme


(estamos fazendo a integridade referencial, onde voc s pode alugar um filme que
exista no cadastro de filmes).

Em update rule (regra de atualizao) marque a opo Prohibit. Clique em Ok. Informe
o nome fk_filme_locacao.

Clique em Save As e salve com o nome TB_LOCACAO_FILME (verifique se esta


salvando na pasta correta).

Entre no Delphi e abra o seu projeto.

Abra o Data Module (Viem Forms dmLocadora).

Acrescente 1 objetos Table e altere as propriedades:

Name: TB_Locacao
DatabaseName: dbLocadora
TableName: TB_LOCACAO.db
Active: True

Para evitar o problema de perder os registros inseridos, clique na guia Events e d um


duplo clique na linha AfterInsert.

Altere a procedure como abaixo:

procedure TdmLocadora.TB_LocacaoAfterInsert(DataSet: TDataSet);


begin
DBISaveChanges(TTable(Dataset).handle);
end;

Suba at a parte superior da sua unit e veja se a biblioteca DBIProcs est inserida. Se
no estiver, deixe as linhas conforme abaixo:

interface

uses
Sistema de Locadora Ano 2005

SysUtils, Classes, DB, DBTables, DBIProcs;

Adicione um objeto DataSource e altere as propriedades:

Name: dsLocacao
DataSet: TB_Locacao

Acrescente 1 objetos Table e altere as propriedades:

Name: TB_Locacao_Filme
DatabaseName: dbLocadora
TableName: TB_LOCACAO_FILME.DB
MasterSource: dsLocacao
MasterFields: clique em ...
Marque os campos NumLocacao e clique em Add. Clique em Ok.

Active: True

Como a tela de locao e filmes da locao estaro juntas (sero a mesma tela)
utilizamos o campo MasterSource para ligarmos a tabela de Locao_Filme com a
tabela de Locao. Essa ligao feita atravs do campo NumLocacao. Dessa forma,
sempre que posicionarmos a tabela de locao em um registro, a tabela de
Locao_Filme ser posicionada automaticamente na mesma locao exibindo assim os
filmes nela alugados.

Para evitar o problema de perder os registros inseridos, clique na guia Events e d um


duplo clique na linha AfterInsert.

Altere a procedure como abaixo:

procedure TdmLocadora.TB_Locacao_FilmeAfterInsert(DataSet: TDataSet);


begin
DBISaveChanges(TTable(Dataset).handle);
end;
Sistema de Locadora Ano 2005

Criando a Tela de Locaes

File New Form.

Salve com o nome locacao.pas na pasta do sistema.

Altere as propriedades do formulrio:

Name: frmLocacao
Caption: Cadastro de Locaes
BorderStyle: bsSingle

Faa a referncia ao DataModule (File Use Unit DataModule).

Adicione um objeto GroupBox na parte de cima da tela. Altere o caption para Locao.

Adicione um objeto DataSource e altere as propriedades:

Name: dsLocacao
DataSet: dmLocadora.TB_Locacao

Abra o data module. D um duplo clique na tabela TB_Locacao. Na janela que se abre,
clique com o boto direito dentro dela e selecione a opo Add All Fields.

Selecione todos os campos e arraste-os para dento do GroupBox da tela de locao.

Acerte a posio e o caption dos campos como abaixo:


Sistema de Locadora Ano 2005

Altere a propriedade do campo dbEdit1 (numero locao) para False.

Na guia Data Controls, adicione um objeto DBNavigator. Altere as propriedades:

Name: dbnLocacao
DataSource: dsLocacao

Na parte de baixo da tela, adicione um outro objeto GroupBox. Altere o caption para:
Filmes da Locao.

Adicione um objeto DataSource e altere as propriedades:

Name: dsLocacaoFilme
DataSet: dmLocadora.TB_Locacao_Filme

Adicione um objeto DBGrid e altere as propriedades:

Name: dbgLocacao
DataSource: dsLocacaoFilme

D um duplo clique sobre o DBGrid. Na janela que se abre, clique com o boto direito e
selecione a opo Add All Fields. Exclua o campo NumLocacao (o nmero da locao j
estar aparecendo na parte de cima da tela de locaes).

Volte para o grid.


Sistema de Locadora Ano 2005

Abra o formulrio de menu.

No menu Cadastro, acrescente a opo Locao.

Faa referncia a tela de Locao (File Use Unit Locacao).

Na procedure do menu Locao, adicione o cdigo:

procedure TfrmMenu.mniLocacaoClick(Sender: TObject);


begin
frmLocacao.ShowModal ;
end;

Salve e execute o programa para test-lo.

Como estamos em uma tela automtica, no temos muitos recursos. Voc dever
informar todos os dados da locao (a data da locao, o valor total, o valor total pago
etc).

Você também pode gostar