OBJETIVO : CRIAR UMA BASE CONTENDO DADOS SOBRE … · •ABRA O MS VISUAL BASIC 2010 EXPRESS. ......

30
PROJETO BASE DE MÁQUINAS EXEMPLO DA APLICAÇÃO DO MICROSOFT SQLSERVER – EDIÇÃO COMPACTA (CE) OBJETIVO: CRIAR UMA BASE CONTENDO DADOS SOBRE MÁQUINAS-FERRAMENTA, TAIS COMO: TIPO, MARCA (FABRICANTE); SE CNC; VALOR DA HORA MÁQUINA E ANO DE FABRICAÇÃO E UM MECANISMO (BASEADO EM SQL) PARA A REALIZAÇÃODE PESQUISAS NESSA TABELA. INTERFACES: O SISTEMA DEVE PROVER UMA INTERFACE DE MANUTENÇÃO PARA QUE UM USUÁRIO EXPERIENTE (SUPERVISOR) EDITE OS DADOS REFERENTES ÀS MÁQUINAS E O MECANISMO DE BUSCA. UMA SEGUNDA INTERFACE DEVE SER CRIADA PARA QUE O USUÁRIO FINAL ESCOLHA AS PESQUISAS DE SEU INTERESSE DENTRO DE UMA LISTA PREVIAMENTE DEFINIDA.

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.

Figura 1 – Vista do leiaute do projeto em “tempo de execuçã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.

Figura 2 – Adicionando uma “LocalDabase” ao projeto

Figura 3 – Selecionando um “Dataset” como modelo de base de dados

Figura 4 – Definindo o nome do “Dataset”

Figura 5 – Definindo os campos da tabela

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.

Figura 6 – Ligando as tabelas ao objeto “MAQUINASDataSet”

Figura 7 – Criação do DGV ligado à tabela “NOME_MAQ” e do “BindingNavigator”

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 9 – Tela para digitação do código

Figura 10 – Digitação dos códigos para os eventos “EndEdit” dos DGV

Figura 11 – Código para o evento “EndEdit” do DGV “CONSULTA” referente ao controle da digitação de um parâmetro para pesquisa.

Figura 12 – Código para execução da pesquisa na base.

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