You are on page 1of 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 CodGenero Gnero Type + (auto increment) A (alpha) Size 30 Key * Required Field Sim Sim

Clique em Save as e salve com o nome TB_GENERO. TB_CLIENTE Field Name codCliente Nome Endereco Bairro Cidade Estado Telefone DT_Nasc Type + (auto increment) A (alpha) A (alpha) A (alpha) A (alpha) A (alpha) A (alpha) Date Size 40 40 30 30 2 20 Key * Required Field Sim Sim Sim Sim Sim Sim No Sim

Clique em Save as e salve com o nome TB_CLIENTE. TB_FILME Field Name codFilme Filme codGenero Leg_Dub Type + (auto increment) A (alpha) I (long integer) A (alpha) Size 50 1 Key * Required Field Sim Sim Sim 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 numLocacao DT_Locacao codCliente ValorPago ValorTotal Type Autoincrement (+) Date Long Integer Money Money Size Key *

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 numLocacao codFilme DT_Devolucao Type Long Integer Long Integer Date Size Key * *

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).

You might also like