OBJETIVO : CRIAR UMA BASE CONTENDO DADOS SOBRE … · •ABRA O MS VISUAL BASIC 2010 EXPRESS. ......
-
Upload
truongtuyen -
Category
Documents
-
view
217 -
download
0
Transcript of OBJETIVO : CRIAR UMA BASE CONTENDO DADOS SOBRE … · •ABRA O MS VISUAL BASIC 2010 EXPRESS. ......
PROJETO BASE DE MÁQUINASEXEMPLO DA APLICAÇÃO DO MICROSOFT SQLSERVER – EDIÇÃO
COMPACTA (CE)
OBJETIVO: CRIAR UMA BASE CONTENDO DADOS SOBREMÁQUINAS-FERRAMENTA, TAIS COMO: TIPO, MARCA(FABRICANTE); SE CNC; VALOR DA HORA MÁQUINA E ANO DEFABRICAÇÃO E UM MECANISMO (BASEADO EM SQL) PARA AREALIZAÇÃO DE PESQUISAS NESSA TABELA.
INTERFACES: O SISTEMA DEVE PROVER UMA INTERFACE DEMANUTENÇÃO PARA QUE UM USUÁRIO EXPERIENTE(SUPERVISOR) EDITE OS DADOS REFERENTES ÀS MÁQUINASE O MECANISMO DE BUSCA. UMA SEGUNDA INTERFACEDEVE SER CRIADA PARA QUE O USUÁRIO FINAL ESCOLHA ASPESQUISAS DE SEU INTERESSE DENTRO DE UMA LISTAPREVIAMENTE DEFINIDA.
INÍCIO
•ABRA O MS VISUAL BASIC 2010 EXPRESS.•CRIE UM PROJETO NOVO COM O NOME DE “Dbase_MAQ” NO ESTILO “WINDOWS FORM APPLICATION”•UM FORMULÁRIO (Form1) SERÁ CARREGADO AUTOMATICAMENTE.•MUDE SEU NOME PARA “Tela_abertura” E SUA PROPRIEDADE “Text” PARA “CADASTRO DE MÁQUINAS-FERRAMENTA”.•INICIE A MONTAGEM DO LEIAUTE DE ACORDO COM PROCEDIEMENTO •INICIE A MONTAGEM DO LEIAUTE DE ACORDO COM PROCEDIEMENTO DESCRITO A SEGUIR.
“INGREDIENTES” # um controle do tipo SPLITCONTAINER com dois painéis. #uma figura p/ ilustração dentro do painel esquerdo. Para inserir a figura edite a propriedade “BackgroundImage” e selecione a figura pretendida a partir de seu local de armazenagem, que pode ser a própria pasta do projeto. Altere a propriedade “BackgroundImageLayout “ para “Stretched” , para que a figura se ajuste ao tamanho do painel.#um controle tipo “Button” inserido dentro do lado esquerdo do SPLIT. Altere a cordesse controle, caso necessário, pela edição da propriedade “Backcolor”. Mudetambém a sua propriedade “Dock” para “Botton” para que ele possa ficar“amarrado” na parte inferior do painel esquerdo. Mude sua propriedade “Text”para “ENCERRA”. Esse controle receberá o código para finalização do aplicativo.para “ENCERRA”. Esse controle receberá o código para finalização do aplicativo.#um TABCONTROL com duas abas instalado no painel direito do SPLIT. 1ª aba: CONSULTA; 2ª aba: MANUTENÇÃO. Para incluir e editar as abas utilize a propriedade “Tabpages”. Na aba CONSULTA inclua um “Button” com sua propriedade “Text” alterada para “EXECUTA”. Será nesse controle que o código para realização da pesquisa, veja adiante, será incluído.# outro TABCONTROL , com quatro abas, instalado na aba MANUTENÇÃO. A 1ª aba será nomeada TIPO_MAQ, a 2ª FABR_MAQ, a 3ª DADOS_MAQ e a 4ª PRP_PESQUISA. Inclua também nessa aba um “Button”. Mude sua propriedade “Text” para “ATUALIZA”. Esse controle receberá o código para atualização das tabelas.
Todos os controles mencionados anteriormente devem ser arrastados do “Toolbox” para o formulário ou sobre o controle correspondente. A Figura 1 contém uma imagem do leiaute proposto , contendo o SPLITCONTAINER e o TABCONTROL com as abas “PESQUISA” e “MANUTENÇÃO”. A aba “PESQUISA” está ativada e sobre ela podem ser vistos um controle do tipo DATAGRIDVIEW (DGV) e o botão “EXECUTA”. O DGV será utilizado como interface com o usuário final, propiciando ao mesmo a seleção da pesquisa a ser realizada e entrada de seus parâmetros, quando necessários.O resultado final será apresentado na coluna “RESULTADOS”. Após arrastar o DGV para a aba CONSULTA, selecione sua propriedade “Column” eadicione as colunas “PESQUISA”; “PERGUNTA”; “PARAMETRO” e ”RESULTADOS”.adicione as colunas “PESQUISA”; “PERGUNTA”; “PARAMETRO” e ”RESULTADOS”.Para a coluna “PESQUISA”, altere sua propriedade “ColumnType” para“DataGridViewCheckBoxColumn” e para “DataGridViewComboBoxColumn” nacoluna “PERGUNTA” . Altere também a propriedade “ReadOnly” para “True” nasduas últimas colunas . A coluna “PERGUNTA” propiciará ao usuário a escolha de umapergunta previamente cadastrada na base, mas não a sua edição.
BASE MAQUINAS.sdf & TABELAS # Serão criadas 4 tabelas, tal como ilustrado o quadro abaixo:
Nome da Tabela Descrição Campos
Nome Tipo Length Allow
nulls
Unique Primary key
NOME_MAQ Contém os
nomes (tipos) de
máquinas
nome nvarchar 100 no no Yes
FABR_MAQ Contém nome
de alguns
fabricante nvarchar 100 no no Yes
Quadro 1 – dados p/ montagem das tabelas
de alguns
fabricantes
DADOS_MAQ Dados das
máquinas
N. serie int 4 no no Yes
Tipo nvarchar 100 no no No
Fabricante nvarchar 100 no no No
cnc bit 1 no no No
Vlr_hora float 8 no no No
Ano_fabr int 4 no no No
PESQ_MAQ Parametros p/
pesquisa na base
N. pesq int 4 no no Yes
Pergunta nvarchar 100 no no No
parametro bit 1 no no No
Txt_sql nvarchar 100 no no No
# As tabelas serão criadas utilizando o “Microsoft SQL server compact 3.5database for local data”, pois trata-se de uma utilização simples do conceitode bases relacionais e o projeto em questão será bem pequeno.
UTILIZANDO O SQL SERVER COMPACT 3.5 DATABASE[5 PASSOS PARA CRIAÇÃO DA BASE DE DADOS MAQUINAS]
•Selecione o menu “Project” e depois “Add New Item...”. Em seguida selecione “Local Database”, e altere o nome da base para “MAQUINAS.sdf” e depois pressione o botão
“ADD”, tal como indicado na Figura 2.
•Uma nova janela será apresentada, veja Figura 3. Selecione a opção “Dataset” e pressione o botão “Next”.
•Na janela seguinte aparecerá a mensagem “Choose your database objects”. Mantenha o nome “MAQUINASDataSet” para o DataSet que será criado e pressione o botão “Finish”
para criá-lo vazio, tal como mostrado na Figura 4.
•No canto superior da tela do IDE será possível visualizar o “Database Explorer”. Esse recurso é similar ao Windows explorer e por meio de um “TreeView”
possibilita o gerenciamento da base “MAQUINAS.sdf” recém criada. Inicialmente, a pasta “Tables” estará vazia. Selecionando a mesma e a opção “CreateTable”, será possível cadastrar as quatro tabelas, tal como definido no Quadro 1. Os
nomes dos campos devem ser digitados em “Column Name”. Para todos esses campos, a propriedade “Allow Nulls” deve ser marcada como “No”. O tipo de
cada campo também deve ser informado , tal como apresentado no Quadro 1. Deve ser dada atenção especial aos campos definidos como “primary key”. Os
campos definidos como “Bit” devem ter a propriedade “Default Value” definida como ‘False’, veja exemplo na figura 5.como ‘False’, veja exemplo na figura 5.
•Após a criação das quatro tabelas você pode fechar o Database Explorer, pois ele não será mais necessário.
LIGANDO AS TABELAS CRIADAS AOS RESPECTIVOS CONTROLES DATAGRIDVIEW
[ROTEIRO]
•A ligação dos controles do tipo DATAGRIDVIEW às tabelas em tempo de projeto é uma alternativasimples e rápida para a visualização e manutenção dos dados. Selecione o menu DATA e pressione“Show Data Source”. Ele deverá aparecer no canto esquerdo do IDE (Integrated DevelopmentEnvironment – Editor Vb). Selecione o “MaquinasDataset “ e com o o botão direito do mouse a opção“Configure Data Source with Wizard...”. Responda à pergunta “Which Database Objects do you want inyour dataset?”. Marque “Tables” no “Treeview” apresentado, tal como pode ser visto na Figura 6, edepois pressione “Finish”. Reabrindo o “Data source” você verá que as quatro tabelas foram incorporadasao “MaquinasDataset “ .
•Ainda no “Data Source”, arraste a tabela “NOME_MAQ” para dentro do formulário, soltando-a na aba“TIPO_MAQ”. Um controle do tipo DataGridView (DGV) será criado automaticamente e deverá conter“TIPO_MAQ”. Um controle do tipo DataGridView (DGV) será criado automaticamente e deverá conterapenas uma coluna intitulada “NOME”. No rodapé do formulário deverá aparecer um controle do tipo“BindingSource”, nomeado “NOMEMAQBindingSource”. Será por meio dele que o seu programa fará aconexão entre o DGV e o “MAQUINASDataSet”. Um controle do tipo “TableAdapter” também apareceráno mesmo espaço com o nome de “NOME_MAQTableAdapter” e será utilizado para fazer a ligação entreo “MAQUINASDataSet” e a base de dados “MAQUINAS.sdf”.
•Repita o procedimento anterior para as demais tabelas, arrastando-as para suas abas correspondentes.Ao final deste processo as ligações dos controles DataGridView´s às tabelas devem gerar osrelacionamentos e objetos, tal como mostrado no Quadro 2.•Observe que ao arrastar a primeira tabela (“NOME_MAQ”) será criado automaticamente, além do DGV, um controle denominado “Binding Navigator”, veja Figura 7 . Como o próprio nome já diz, ele serve para facilitar a navegação pelas tabelas. Caso queira, você poderá removê-lo, pois ele não terá utilizado neste
projeto.
Planilha Tabela Conjunto de dados
Fonte p/ ligação Adaptador
DataGridView3 NOME_MAQ
MaquinasDataSet
NomeMaqBindingSource Nome_maqTableAdapter
DataGridView4 FABR_MAQ NomeMaqBindingSource FABR_MAQTableAdapter
DataGridView4 DADOS_MAQ DadosMaqBindingSource DADOS_MAQTableAdapter
DataGridView2 PESQ_MAQ PESQMAQBindingSource PESQ_MAQTableAdapter
Quadro 2 – Nome dos objetos criados para a ligação dos DGV´s à base MAQUINAS.
• Inicialmente, as propriedades “Copy to Output” da base “MAQUINAS.sdf” e dogerador de dados “MAQUINASDataSet” devem ser alteradas para “Copy if newer”. Istoé necessário para evitar a superposição da base de dados existente na pasta do projeto(editada em tempo de projeto) sobre aquela criada em tempo de execução (pasta BIN).Veja mais detalhes sobre isto no link:http://dotnetdud.blogspot.com.br/2008/01/manage-local-data-files-in-projects.html .Essas propriedades podem ser alteradas após a seleção do objeto correspondente noSolution Explorer, tal como mostrado no canto superior direito da Figura 7.
LIGANDO COLUNAS DOS CONTROLES DATAGRIDVIEW A UM DETERMINADO CAMPO DE TABELA
[ROTEIRO]
• Algumas colunas, por exemplo: PERGUNTA (na aba CONSULTAS) e TIPO e FABRICANTE da aba DADOS_MAQdevem ser ligadas (binding) diretamente aos campos de suas respectivas tabelas na base MAQUINAS.sdf. Essaligação é feita de forma similar à ligação das tabelas, da seguinte maneira:
•Selecione o DataGridView1 na aba “CONSULTAS” e depois a propriedade “Columns”. Pressione o campoindicado por “Collections” para visualizar a tela com as propriedades de suas colunas. Selecione a coluna“PERGUNTA” e altere sua propriedade “Columntype” para “DataGridViewComboBoxColumn”. Em seguida“PERGUNTA” e altere sua propriedade “Columntype” para “DataGridViewComboBoxColumn”. Em seguidaselecione a propriedade “Datasource” e, com o auxilio do Data Source Configuration Wizard e de modo similarao que foi feito para a ligação das tabelas, selecione o campo “PERGUNTA” da tabela “PESQ_MAQ”, tal comomostrada na Figura 8. Finalize a operação e retorne à tela “Edit Column”, que ainda deve estar aberto e mude aspropriedades “DisplayMember” e “ValueMember” para “PERGUNTA”. Altere, também para “PERGUNTA” apropriedade “DataPropertyName”. Repita esses passos para as colunas TIPO e FABRICANTE do controle“DataGridView5” e ligue-as, respectivamente, às colunas “NOME” da tabela “NOME_MAQ” e “FABRICANTE” databela “FABR_MAQ”.
•Ao final deste processo as ligações dos controles DataGridView´s às tabelas devem gerar os relacionamentos e objetos, tal como mostrado no Quadro 3.
Figura 8 – Criação do “MAQUINADataSet1” para a ligação da coluna “PERGUNTA” ao campo de mesmo nome na tabela “PESQ_MAQ”
Coluna Planilha Conjunto de dados Fonte p/ ligação Adaptador
PERGUNTA DataGridView1 MaquinasDataSet1 PESQMAQBindingSource PESQ_MAQTableAdapter1
TIPO DADOS_MAQDataGridView
MaquinasDataSet2 NOMEMAQBindingSource NOME_MAQTableAdapter1
FABRICANTE MaquinasDataSet3 FABRMAQBindingSource FABR_MAQTableAdapter1
Quadro 3 – Nome dos objetos criados para a ligação das colunas dos DGV´s aos campos das tabelas.
PROGRAMANDO A “BOTEIRA”
•Neste momento todas as atividades relacionadas ao leiaute, criação da base de dados ea ligação das tabelas foram concluídas. Se estiver curioso aperte a tecla F5 e você teráuma visão de como o projeto será apresentado ao usuário. Navegue pelas abas eobserve que os campos criados nas quatro tabelas estarão visíveis nos controles“DataGrid”. Caso esteja insatisfeito como o leiaute, encerre o executável pressionado o Xno canto superior do formulário e reposicione os controles da maneira que acharapropriada.
•A próxima etapa está relacionada com as atividades de programação. Agora vamos programar alguns controles para que respondam aos eventos disparados pelo usuário
durante a execução do aplicativo.durante a execução do aplicativo.•Para iniciar a digitação do código, dê um “duplo click” no formulário. Outras alternativas a isso são: pressionar o botão direito do mouse e selecionar “view code” ou teclar F7. Observe que esta tela possui, além da classe “Tela_abertura” o evento “Load” que foi
gerado automaticamente após ligação das tabelas aos DGV´s. •Role a barra vertical (slider) até o topo da tela e digite os comandos “imports”necessários a inclusão das classes referentes ao uso do SqlServerCE, tal como mostradona Figura 8. Observe que esses comandos devem ser digitados antes da classe“Tela_abertura”. Declare as variáveis conX e CNFSTR, necessárias à abertura da conexãocom a base MAQUINAS. Essas variáveis serão de uso geral para todos os eventosrelacionados ao formulário, portanto elas devem ser criadas antes de qualquer evento,tal como mostrado na Figura 9.
• Dê um “duplo click” no botão “ENCERRA” e digite o código necessário para oencerramento do aplicativo. Isto é uma alternativa ao uso do “X” no cantosuperior direito da tela principal.•Dê um “duplo click” no botão (Button) “ATUALIZA” que se encontra na aba“MANUTENÇÃO”. Uma tela com o espaço para a inserção do código referente aoevento “CLICK” aparecerá. Digite o comando para a atualização das tabelas, talcomo mostrado no Figura 9.
• Dê um “duplo click” sobre o DGV que se encontra na aba “DADOS_MAQ” . Um• Dê um “duplo click” sobre o DGV que se encontra na aba “DADOS_MAQ” . Umevento denominado “DADOS_MAQDataGridView_CellContentClick” deveráaparecer, mas ele não será utilizado. Ao invés disso selecione, da lista queaparece no canto superior direito da tela de códigos, o evento “CellEndEdit” edigite o código necessário à atualização automática da coluna “n_serie”, tal comomostrado na Figura 9. Isto não é algo fundamental, mas facilita a vida do usuário,pois o número de série será utilizado aqui apenas para ilustrar a manipulação dastabelas. Repita o procedimento para o DGV da aba “PESQ_MAQ”, digitando ocódigo mostrado na Figura 10 para o seu evento “CellEndEdit” .
• Dê um “duplo click” sobre o DGV que se encontra na aba “CONSULTA” . Abra o evento “CellEndEdit “ e digite o código, ver Figura 11, para o controle das células referentes à
coluna “PARAMETRO”. Inicialmente essa coluna foi criada apenas para leitura (“ReadOnly” = “True”), porém nos casos onde a pergunta deva ser completada com um
paramento, a célula correspondente deve ser habilitada para digitação. •
•Dê um “duplo click” no botão (Button) “EXECUTA” que se encontra na aba “CONSULTA” .Digite o programa necessário à execução das pesquisas, tal como mostrado na Figura 12.Essa rotina (sub) utiliza um conjunto de classes “System.Data.SqlServerCe Namespace” jáEssa rotina (sub) utiliza um conjunto de classes “System.Data.SqlServerCe Namespace” jáinclusa no projeto. Dentre as classes utilizadas aqui estão: o “SqlCeCommand” e o“SqlCeDataReader”. Para o primeiro será criado um objeto denominado “command” epara o segundo o “Rd”. O “command” propiciará o estabelecimento de uma conexãocom a base MAQUINAS e o envio da pergunta. O segundo permite o processamento daresposta. Observe que a primeira pergunta enviada a base é armazenada na variável“SQLCNST” e serve para recuperar, da tabela PESQ_MAQ, sua versão no formato SQL. Apergunta, já no formato SQL, é armazenada na variável “query” e é reenviada à base paraa obtenção do resultado desejado.•Por último, dê um “duplo click” no botão (Button) “ENCERRA” que se encontra sobre o“splitContainer” e adicione, ao evento “Button7_Click” o código “End”. Isto serásuficiente para encerrar o aplicativo .
Figura 11 – Código para o evento “EndEdit” do DGV “CONSULTA” referente ao controle da digitação de um parâmetro para pesquisa.
RODANDO O PROGRAMA , PREENCHENDO AS TABELAS E REALIZANDO AS CONSULTAS
• Após digitação de todo o código, você pode fechar o “Database Explorer” e executar o programa. Para isto, tecle o F5 ou selecione o menu “Debug” e depois “Start Debugging”.
•Preencha, nesta ordem, as tabelas “TIPO_MAQ” e “FAB_MAQ”.•Feche o programa e depois execute-o novamente e preencha, nesta ordem, as tabelas
“DADOS_MAQ” e “PESQ_MAQ”. Isto é necessário, pois o código criado carrega o “DADOS_MAQ” e “PESQ_MAQ”. Isto é necessário, pois o código criado carrega o “tableadapter” apenas no evento “Load” do aplicativo. Não obstante, isto pode ser
alterado facilmente.•Execute as pesquisas que achar conveniente. Não se esqueça de incluir o nome do
parâmetro para aquelas perguntas onde ele é obrigatório. •Utilize os quadros a seguir para o preenchimento das tabelas. Exceto para a tabela
“PESQ_MAQ”, os demais dados podem ser alterados.
Tabela XX – lista de máquinas e lista de fabricantes
Máquinas
Torno Horizontal
Torno Vertical
Centro de Usinagem
Fresadora Universal
Retificadora Plana
Retificadora Cilíndrica
Fabricantes
Romi
Mello
Franho
Zema
Ergomat
Kone
Mandriladora
Furadeira Radial
Serra Horizontal
Brochadeira
Mazak
Okuma
Deckel Maho
Ferdimat
Tabela XX – Exemplos p/ cadastro das máquinas
N. Serie
Tipo Fabricante CNC Valor hora (R$) Ano_fabricação
1 Torno Horizontal Romi não 15 1970
2 Torno Horizontal mazak Sim 48 2006
3 Torno Horizontal Romi Sim 42 2010
4 Torno Vertical Romi Não 55 20014 Torno Vertical Romi Não 55 2001
5 Centro de Usinagem Okuma Sim 50 2011
6 Centro de Usinagem Romi Sim 45 2010
7 Fresadora Universal Kone Não 12 1998
8 Retificadora Plana Mello Não 23 2005
9 Retificadora Cilíndrica Zema Sim 32 2008
10 Furadeira Radial Kone Não 15 2005
N. Pesq
Pergunta Parametro Txt_SQL
1 Quantas máquinas? False SELECT COUNT (*) FROM DADOS_MAQ
2 Quantas máquinas CnC FalseSELECT COUNT(tipo) FROM DADOS_MAQ WHERE cnc = 'TRUE'
3Quantas máquinas convencionais
FalseSELECT COUNT(tipo) FROM DADOS_MAQ WHERE CNC = 'FALSE'
4 Quantidade de: TrueSELECT COUNT(n_serie) FROM DADOS_MAQ WHERE TIPO =
5 Maquinas do fabricante: TrueSELECT COUNT(n_serie) FROM DADOS_MAQ WHERE FABRICANTE =
Tabela XX – lista de perguntas e formato SQL
5 Maquinas do fabricante: TrueWHERE FABRICANTE =
6 Maquina mais antiga FalseSELECT tipo FROM DADOS_MAQ WHERE (ano_fab IN (SELECT MIN(ano_fab) FROM DADOS_MAQ AS DADOS_MAQ_1))
7 Maquina mais nova FalseSELECT tipo FROM DADOS_MAQ WHERE (ano_fab IN (SELECT MAX(ano_fab) FROM DADOS_MAQ AS DADOS_MAQ_1))
8 Idade média das máquinas False SELECT AVG(ANO_FAB) FROM DADOS_MAQ
9 Hora máquina mais cara? FalseSELECT tipo FROM DADOS_MAQ WHERE(VALOR_HOR IN (SELECT MAX(VALOR_HOR) FROMDADOS_MAQ AS DADOS_MAQ_1))