Sisve - ETEC Irmã Agostina
Transcrição
Sisve - ETEC Irmã Agostina
CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA ESCOLA TÉCNICA ESTADUAL IRMÃ AGOSTINA ADEILDO JOSÉ DE OLIVEIRA ANDERSON NASCIMENTO DOS SANTOS CLAYTON RAFAEL DOS SANTOS SOUZA NELSON MANUEL DE AZEVEDO SISVE - SISTEMA DE CONTROLE DE VENDA E ESTOQUE TÉCNICO EM INFORMÁTICA São Paulo, SP 2012 ADEILDO JOSÉ DE OLIVEIRA ANDERSON NASCIMENTO DOS SANTOS CLAYTON RAFAEL DOS SANTOS SOUZA NELSON MANUEL DE AZEVEDO SISVE - SISTEMA DE CONTROLE DE VENDA E ESTOQUE Trabalho de Conclusão do curso de Nível Médio Técnico de Informática sob a orientação do Professor Renato Carvalho São Paulo - SP 2012 Dedicamos este trabalho às nossas famílias e a todos aqueles que direta ou indiretamente nos ajudaram na sua criação... “Uma longa viagem começa com um único passo.” (Lao Tsé) Banca Examinadora ____________________________________________ ____________________________________________ ____________________________________________ RESUMO Este trabalho foi direcionado à criação de um software de computador para controle de produtos em estoque e também para auxiliar no momento da venda. No qual os usuários não levam muito tempo para a realização de consultas e vendas. Como em qualquer outro programa do gênero, os produtos são cadastrados em tabelas gerenciadas pelo software SQL Server Express 2008, que tem como objetivo gravar informações que lhe são fornecidas de maneira segura e rápida, durante a venda e na integridade dos seus dados comerciais. O sistema conta com uma interface muito intuitiva, construída na linguagem de programação Visual Basic através do software Microsoft Visual Studio 2010 e, através dela, o proprietário pode fazer suas consultas, seus cadastros, exclusões e alterações. Este software tem uma aplicação que permite informar ao usuário em tempo real a quantidade dos produtos no estoque, os itens vendidos e os que necessitam serem reposto imediatamente. ABSTRACT This work focused on the creation of computer software for control of products in stock and also to assist in the sale. Where users do not take much time for consultations and sales. Like any other program of its kind, the products are registered in tables managed by SQL Server Express 2008 software, which aims to record informa-tion supplied to it in a safe and fast during the sale and integrity of your business data . The system has a very intuitive interface, built in Visual Basic programming language using the software Microsoft Visual Studio 2010 and through it, the owner can make your queries, your entries, deletions and changes. This software has an application to inform the user in real time the amount of products in stock, and sold the items that need to be replaced immediately. LISTA DE ILUSTRAÇÕES Gráfico 1.1 – Percentual por tamanho de empresas no Brasil .................................................. 8 Gráfico 1.2 – Média de gastos e investimentos em T.I. ........................................................... 8 Figura 1.1 – Entrada da loja ................................................................................................. 11 Figura 1.2 – Área de venda .................................................................................................. 12 Figura 1.3 – Porta de acesso para o estoque e o sanitário ...................................................... 12 Figura 1.4 – Uma das prateleiras da loja ............................................................................... 12 Figura 1.5 – Gôndola ........................................................................................................... 13 Figura 1.6 - Painel canaletado .............................................................................................. 13 Figura 1.7 - Balcão para venda e recebimento ...................................................................... 13 Figura 3.1 – W.B.S.. ............................................................................................................ 22 Figura 3.2 – Cronograma ..................................................................................................... 23 Figura 3.3 – D.E.R. .............................................................................................................. 24 Figura 3.4 – M.E.R. ............................................................................................................. 25 Figura 3.5 – Diagrama de classe ........................................................................................... 26 Figura 3.6 – Diagrama de casos de uso ................................................................................. 28 Figura 4.1 – Tela de login .................................................................................................... 30 Figura 4.2 – Tela de alteração de senha ................................................................................ 31 Figura 4.3 – Tela principal ................................................................................................... 32 Figura 4.4 – Tela de cadastro de produtos ............................................................................ 32 Figura 4.5 – Aba cadastrar da tela principal .......................................................................... 33 Figura 4.6 – Cadastro de categoria de produtos .................................................................... 34 Figura 4.7 – Cadastro da linha de produtos ........................................................................... 34 Figura 4.8 – Cadastro da marca do produto .......................................................................... 34 Figura 4.9 – Cadastro de usuários......................................................................................... 35 Figura 4.10 – Opção de acesso ao sistema de estoque através da janela principal.................. 36 Figura 4.11 – Janela de configurações de acesso do sistema de estoque ................................ 36 Figura 4.12 – Aba das consultas de estoque da tela principal ................................................ 37 Figura 4.13 – Consulta de categoria ..................................................................................... 38 Figura 4.14 – Consulta de linha ............................................................................................ 39 Figura 4.15 – Consulta de marca .......................................................................................... 39 Figura 4.16 – Consulta geral de produtos ............................................................................. 40 Figura 4.17 – Consulta de usuário (um administrador) ......................................................... 41 Figura 4.18 – Consulta de usuário (dois administradores) ..................................................... 41 Figura 4.19. – Consulta de vendas ........................................................................................ 42 Figura 4.20 – Aba de manutenção de estoque da tela principal (alteração) ............................ 43 Figura 4.21 – Alteração de categoria .................................................................................... 43 Figura 4.22 – Alteração de linha........................................................................................... 43 Figura 4.23 – Alteração de marca ......................................................................................... 44 Figura 4.24 – Alteração de produto ...................................................................................... 44 Figura 4.25 – Alteração de usuário ....................................................................................... 45 Figura 4.26 – Alteração de venda ......................................................................................... 45 Figura 4.27 – Menu de manutenção de estoque da tela principal (exclusão) .......................... 46 Figura 4.28 – Exclusão de categoria ..................................................................................... 46 Figura 4.29 – Exclusão de linha ........................................................................................... 46 Figura 4.30 – Exclusão de marca .......................................................................................... 47 Figura 4.31 – Exclusão de produto ....................................................................................... 47 Figura 4.32 – Exclusão de itens de venda ............................................................................. 47 Figura 4.33 – Aba de manutenção de estoque da tela principal (atualização) ........................ 48 Figura 4.34 – Janela de atualização do estoque ..................................................................... 48 Figura 4.35 – Aba relatório no menu principal ..................................................................... 49 Figura 4.36 – Tela de relatório de produtos .......................................................................... 49 Figura 4.37 – Tela de relatório de vendas. ............................................................................ 50 Figura 4.38 – Barra de ferramenta dos relatórios .................................................................. 50 Figura 4.39 – Menu principal, tela de acesso ao suporte e ajuda do sistema .......................... 51 Figura 4.40 – Tela de suporte técnico ................................................................................... 52 Figura 4.41 – Tela de login .................................................................................................. 53 Figura 4.42 – Tela de venda ................................................................................................. 53 Figura 4.43 – Tela de consultar produto ............................................................................... 54 Figura 4.44 – Tela de desconto ............................................................................................. 55 Figura 6.1 – Página inicial do SISVE na internet ................................................................ 256 SUMÁRIO Capítulo I - A empresa ......................................................................................................... 11 1.1 Estrutura física da empresa ................................................................................ 11 1.2 Equipe ............................................................................................................... 14 1.3 Generalização de venda de produtos .................................................................. 14 Capítulo II – Funcionamento de softwares lojista de produtos avulsos .................................. 15 2.1 Software C-Plus ................................................................................................. 15 2.2 Software Systronic Office Comercial ................................................................. 16 2.3 Software PDV-Master.......................................................................................... 17 2.4 Software TagComércio......................................................................................... 17 2.5 Software SisAdvenPDV..................................................................................... 18 2.6 Características similares dos softwares pesquisados com o SISVE ..................... 18 Capítulo III – Escopo do projeto .......................................................................................... 20 3.1 Work breakdown structure (WBS) ..................................................................... 20 3.2 Cronograma ....................................................................................................... 23 3 3 Diagrama de Entidade e Relacionamento (DER) ................................................ 24 3.4 Modelo de Entidade e Relacionamento (MER) .................................................. 25 3.5 Diagrama de classe ............................................................................................ 26 3.6 Diagrama de casos de uso .................................................................................. 28 CAPÍTULO IV – Desenvolvimento do projeto ..................................................................... 30 4.1 Principais telas ................................................................................................... 30 4.1.1 Telas de controle de estoque ........................................................................ 30 4.1.2 Telas de controle de vendas ......................................................................... 52 4.2 Banco de dados.................................................................................................. 55 4.2.1 Código de criação do banco de dados e das tabelas ...................................... 56 4.3 Código da aplicação ........................................................................................... 58 4.3.1 Código do controle de estoque..................................................................... 58 4.3.2 Código de controle de vendas .................................................................... 242 CAPÍTULO V – Requisitos mínimos ................................................................................. 255 CAPÍTULO VI – Site do projeto ........................................................................................ 256 CONCLUSÃO ................................................................................................................... 257 REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................ 258 8 Introdução O Brasil possui 5,1 milhões de empresas e estima-se que até 2015 teremos 8,8 milhões, 98% destas são micro e pequenas empresas, conforme se demonstra no gráfico 1.1. Onde concentram mais de dois terços das ocupações do setor privado (SEBRAE-SC, 2011). Gráfico 1.1 – Percentual por tamanho de empresas no Brasil Para o pequeno empreendedor se manter no mercado necessita focar na qualidade de seus produtos e serviços. E uma das formas é investindo na informatização do negócio. Pesquisa mostra que os gastos investidos em tecnologia da informação nas médias e grandes empresas em 2010 chegaram a quase 8% do faturamento líquido (MEIRELLES, 2011, p. 15). Veja gráfico abaixo: Gráfico 1.2 – Média de gastos e investimentos em T.I. (MEIRELLES, 2011, p. 15) 9 Essas duas pesquisas demonstraram basicamente a importância da micro e pequena empresa para o Brasil e a importância dada por estas à informatização. Este trabalho teve como objetivo informatizar a venda e o estoque de uma micro empresa. Foi criado um banco de dados para o controle de estoque dos produtos e um software de venda. Tornando-a mais eficiente, rápida e organizada. Em caso de dúvida com relação à alguma venda e ao estoque, apenas consultando o banco de dados, através do software, tem-se suas dúvidas sanadas. Os clientes não querem demora no atendimento, o lojista não quer sofrer na hora de administrar o seu estoque de produtos. Foi aplicado ao lojista um questionário (Apêndice A e B) para se ter as primeiras impressões sobre ele e sobre os problemas do seu negócio, sendo esses problemas depois relatados no WBS. Neste documento foi apontado de forma mais sucinta os problemas da empresa. Em um primeiro momento, ele queria um controle melhor de seus produtos, informava que possuía grande dificuldade em controlar tudo o que se vendia na loja e também em manter um relatório geral de reposição dos produtos de forma atualizado. Normalmente consultava item por item, anotando manualmente o que precisava ser reposto. No momento da venda, passava por outro problema, que era saber se haviam produtos de uma determinada linha e quanto custava. Consultava os preços e as quantidades em um pequeno caderno de anotações. O que tornava sofrível a administração de seu negócio. A loja tem uma grande diversidade de produtos avulsos para venda, como pentes, pilhas, lixas de unhas, grampo, entre outros. Cada dia mais se aumenta a quantidade de itens, tornando-se ainda mais necessário ter o controle eficiente do estoque. A grande preocupação evidencia-se que é manter o controle de estoque. Antes de propor a ele uma solução, o mesmo já havia procurado um dos membros do grupo, para criar uma planilha com sua lista de produtos. Com base em seus problemas, o grupo decidiu fazer o trabalho de conclusão de curso em cima desta sua necessidade e foi apresentado como solução um software de banco de dados relacionado à venda com baixa automática de estoque e uso de leitores ópticos, possuindo campos como nome do produto, descrição do produto, quantidade do produto, data da compra e entre outros. Todos os produtos estarão catalogados e disponíveis no momento da venda. Haverá a liberdade de fazer consulta, cadastros, inserção e remoção de registros, atualização de todos os seus produtos, impressão de relatórios, etc. 10 O lojista poderá identificar os itens que mais vende, e os que menos vendem, se será necessário fazer descontos, definir melhor qual produto precisará ser reposto imediatamente, a quantidade de cada tipo de produtos que há em estoque. A principal ideia é dar-lhe um controle dos produtos a venda de maneira simples e robusta. Com o programa pronto, o único trabalho será cadastrar (inserir) e depois controlar os dados dos produtos no sistema. Gerenciando assim, uma parte deficiente do negócio. 11 Capítulo I - A empresa “Perfumaria da Praça”, empresa fundada em 21 de novembro de 2011, situa-se na Rua Eugênio Guidugli, número 295, no bairro Jardim Castro Alves, em São Paulo, Capital. A empresa possui como ramo principal de negócio a venda de cosméticos. Atualmente sua estrutura é de pequeno porte. Trabalha com os principais tipos e marcas de cosméticos existentes no mercado. O projeto foi desenvolvido com ajuda e autorização do presidente da empresa, o Sr. Valdinei Cruz de Lima, ao qual nos relatou que, apesar do pouco tempo de mercado, pretende expandir e sabe que a tecnologia da informação vai ajudá-lo, embora hoje ele não disponha de nenhuma tecnologia para este fim. 1.1 Estrutura física da empresa Na entrada (figura 1.1) há uma vaga para estacionamento de veículos. As paredes e pisos internos são revestidos com cerâmicas na cor branca. A empresa possui uma área de venda com trinta e seis metros quadrados (figura 1.2), um quarto de estoque medindo cinco metros quadrados (Figura 1.3) e um sanitário com três metros quadrados, possuindo uma área útil total de quarenta e quatro metros quadrados. De mobiliário, a empresa possui três prateleiras com 14 divisões cada (figura 1.4), três gôndolas de produtos (figura 1.5), um painel canaletado (figura 1.6) também de exposição de produtos e com 1 metro de altura por 3 metros de comprimento, além de um balcão utilizado tanto para exposição de mercadorias, como para fins de guichê de recebimento (figura 1.7). . Figura 1.1 – Entrada da loja 12 Figura 1.2 – Área de venda Figura 1.3 – Porta de acesso para o estoque e o sanitário Figura 1.4 – Uma das prateleiras da loja 13 Figura 1.5 – Gôndola Figura 1.6 - Painel canaletado Figura 1.7 - Balcão para venda e recebimento 14 1.2 Equipe A empresa é composta por dois funcionários, o Sr. Valdinei Cruz de Lima, que exerce a função de administrador e vendedor ao mesmo tempo, e por sua esposa que fica no caixa, mas que às vezes anda pela loja auxiliando nas vendas. 1.3 Generalização de venda de produtos Diversos são os produtos comercializados pela empresa, somando-se por tipos e marcas, são aproximadamente 600 itens. Os tipos de produtos são: Para os cabelos: xampus, condicionadores, tinturas, tonalizantes, cremes de tratamentos, modeladores, alisantes, escovas e pentes; Para o corpo: depiladores, desodorantes, hidratantes, massageadores, óleos corporais, sabonetes e sais de banho; Para o rosto: barbeadores, cremes e protetores solares; Para as mãos: cremes, esmaltes, acetonas, decoração das unhas e acessórios para manicure; Para a higiene bucal: escovas, fios, cremes e enxaguadores; Maquiagens: máscaras, corretivos, batons, brilhos, sombras, lápis para os olhos, bases facial, removedores de maquiagem, kits e estojos; Além de perfumes, sabonetes íntimos, talcos para os pés, algodão, espelhos, esparadrapos, preservativos, absorventes, fraldas descartáveis e lenços umedecidos. 15 Capítulo II – Funcionamento de softwares lojista de produtos avulsos Para a decisão sobre quais os softwares iriam ser incluídos na pesquisa, utilizou-se o site especializado em downloads Baixaki que “segundo o Ibope, é o maior site de tecnologia brasileiro, com 10 milhões de usuários” (TECMUNDO, 2012). Na busca interna deste site buscouse pelas palavras chaves “pdv” (ou ponto de venda) e “estoque”, depois disso classificou-se pela maior quantidade de vezes que cada software foi baixado e selecionou-se os cinco primeiros colocados. A partir daí, acessou-se a página de internet do desenvolvedor de cada software, consultando os seus manuais e catálogos. Através das informações de suas principais características, pode-se descobrir o que está sendo oferecido atualmente no mercado relacionado a softwares lojista de venda avulsa. O primeiro colocado entre os mais baixados foi o C-Plus- Sistema de Gestão Comercial Integrado versão 2.1.7.13 com 105.735 downloads. O segundo foi Systronic Office Comercial versão 9.0 com 65.720 downloads. O terceiro foi o Sistema Programa Automação Comercial Estoque PDV-Master versão 4.5 com 61.240 downloads. O quarto foi o TagComércio Plus versão 2008 com 32.010 downloads.E o quinto foi o SisAdvenPDV versão 1.7 com 11.463 downloads. Todos esses cinco softwares são disponibilizados para baixar em versões Shareware e ou Trial, isto é, são gratuitos apenas para testes. Possuem limitações de uso e ou tempo de expiração. Devendo posteriormente, caso o usuário goste, comprar a licença. 2.1 Software C-Plus De acordo com o site do desenvolvedor VVS (2012), o software C-plus é um sistema que, tem por finalidade o controle total de um comércio varejista, cuidando da venda e estoque, setor financeiro e de expedição. As principais características são: administração das contas de e-mail para usuários; controle de consignação; emissão de cupom fiscal; ordem de serviço; cadastro de clientes, fornecedores e funcionários; contas a pagar e a receber; fluxo de caixa; cobrança bancária; curva ABC de produtos, clientes e fornecedores; impressão de etiquetas em vários formatos; controle de caixas; controle de cheques; controle de compras; controle de entrega em romaneio e etiquetagem; mala-direta para clientes e fornecedores; emissão de orçamentos e envio via email; relatórios e gráficos sintéticos e analíticos; controle de atendimento a clientes; comissão 16 de vendedores; gerenciamento de recado e envio de mensagens; controle de recibos; backup automático; fotos para produtos, cliente, fabricante; controle de estoque e controle de equipamentos dos clientes; níveis de status para orçamentos, vendas e ordem de serviços; plano de contas, forma de pagamento e seção por hierarquia; fluxo de caixa com gráficos, por período ou plano de contas; produtos compostos, associados e informações de aplicação; cálculo automático para determinar estoque mínimo; análise do produto por gráfico de vendas, curva ABC, etc.; criação de classificações para clientes, produtos e fornecedores; layout de relatório editável por você de forma simplificada; vários filtros para pesquisa de produtos e clientes; envio de orçamentos, boletos e relatórios por e-mail; ranking de vendedores, clientes, filiais, produtos, etc.; pedidos de venda por ordem de localização no estoque; gerador de arquivo para Sintegra e MFD; regras de cálculo de ICMS, IPI e substituição tributária; impressão de requisição de peças no estoque; reserva de produto no estoque e aviso na tela de venda. 2.2 Software Systronic Office Comercial De acordo com o site do desenvolvedor Systronic (2012), o software Systronic Office Comercial, é um software para o gerenciamento e controle da sua empresa, com ferramentas de produção, gráficos e de lucratividade. Destaca-se pela facilidade de uso e pelos poderosos recursos que possui, principalmente para usuários leigos, ideal para todo tipo de loja de varejo e para o comércio em geral. Ainda de acordo com o site do desenvolvedor, o Systronic é um produto prático e funcional, podendo ser incrementados com a compra de outros módulos de funções. Por possuir muitos recursos explanaremos apenas os relacionados à venda e estoque, que são o que efetivamente interessam ao nosso projeto. As principais características são: emissor de cupom fiscal (ECF); TEF discado (Módulo Adicional); TEF dedicado (módulo Adicional); geração de parcelas para crediário; controle de cartões de crédito; controle de cheques a prazo e a vista; controle de comissões de vendedores; busca incremental de produto por qualquer parte do nome; leitura de etiquetas de pesagem de balanças; leitura de código de barras do produto; alteração do preço na hora da venda configurável; descontos e acréscimos em percentuais e valores no fechamento da venda; calcula o troco automaticamente; desconto além do limite exige senha do gerente ou supervisor; cancelamento somente com digitação de campo motivo; cancela o último cupom, porém o valor da venda cancelada permanece para consulta do gerente; calculadora com fita detalhe no PDV; importação de pedidos para a venda; consulta de preços sem sair do PDV; recebimento de crediário sem sair do PDV; cliente novo pode ser cadastrado na hora da venda; emite nota 17 fiscal eletrônica de vendas e serviços (módulo adicional); geração de controle de vendas consignadas; impressão de comprovante de entrega; impressão de carnês pré-impresso ou no cupom; impressão de fatura mercantil da venda; remissão do carnê; retiradas do caixa; códigos de barras que pode ser o do fabricante ou gerado automaticamente pelo sistema para uso interno; número do lote; validade da mercadoria; alíquota de ICMS de compra e de venda, redução de base de cálculo em percentual, alíquotas para outros estados e PIS, COFINS e ISS; departamentos, grupos e subgrupos de produtos; cálculo do custo médio; cálculo do preço de venda; preço promocional até data específica, ao término da promoção e volta ao preço normal; etiquetas de códigos de barras em impressoras laser, jato de tinta e térmica; composição de kits de produtos; ranking de produtos mais vendidos relatório onde você escolhe os “dez mais” ou “vinte mais”. Além do controle de todo o setor financeiro e de compras da empresa. 2.3 Software PDV-Master De acordo com o site do desenvolvedor Giovane informática (2012), o software Sistema Programa Automação Comercial Estoque PDV-Master é um programa para automação comercial de pequenos estabelecimentos com controle de caixa, estoque e venda rápida. As principais características são: controle de caixa; controle de estoque; controle de usuário; aceita venda por código simples; código de barras ou descrição; cadastro de clientes; aceita leitor de código de barras; aceita qualquer impressora não fiscal; imprime direto para porta LPT1, COM1, rede ou arquivo de texto; emissor de cupom fiscal (impressora fiscal opcional); pode trabalhar em rede; configura logomarca na tela principal; faz backup e recupera backup e gerencia tele-entrega; realiza pagamento parcial e pode ser executado direto de um pendrive. 2.4 Software TagComércio De acordo com o site do desenvolvedor Tagsoft (2012), o software TagComércio é um software para empresas ou profissionais liberais que pode realizar todo o controle e gestão comercial de um negócio, destacando-se por sua interface amigável, intuitiva e pela total integração de módulos. Ainda, de acordo com o desenvolvedor, diferentemente do mercado atual, a empresa Tagsoft, optou por agregar em um só produto os principais sistemas necessários para uma melhor administração comercial. Com isso, os clientes ganharão em economia, pois 18 com a aquisição do TagComércio não será necessária a aquisição de "subsistemas" ou aplicativos extras para completar funcionalidades de um sistema principal. As principais características são: controle de estoque e de vendas; cadastros de clientes e produtos com foto; cadastros de fornecedores, categoria de produtos, grades e kits de produtos; lançamentos de pedidos de vendas, orçamentos, locações, contas a pagar e a receber; fluxo de caixa, com gráficos e relatórios financeiros e gerenciais; geração de etiquetas com código de barras para produtos e envio de mala-direta para clientes e fornecedores. 2.5 Software SisAdvenPDV De acordo com o site do desenvolvedor Novavia (2012), “o software SisAdvenPDV é um sistema para automação comercial completo, [...] parametrizado, podendo se adaptar aos mais diversos ramos de atividades comerciais.” As principais características são: cadastro de usuários com nível de acesso limitado controlado pelo administrador do sistema; emissão de vendas e orçamentos, na mesma tela; venda através de leitor de código barras ou pesquisa rápida por descrição via teclado; emissão de cupom fiscal configurável; impressão de pedidos em cupom não fiscal ou em formulário continuo; cadastro de clientes com opção de bloqueio de clientes inadimplentes; cadastro de produtos; controle de estoque; fornecedores; controle de vendas; entrada de mercadorias; fluxo de caixa; contas a receber, pagar e pendentes; relatório sobre quanto sua loja realmente está lucrando por período; listagem de produtos mais vendidos; tabela de preços; total do patrimônio em estoque; gráficos de estatísticas de vendas e crescimento por período; parametrização de diversas operações; completo sistema de segurança com senhas, que proporciona um controle dos acessos a todos aos módulos do sistema;backup; funcional em um único computador independente ou em rede e funções de uso rápido via teclado ou mouse. 2.6 Características similares dos softwares pesquisados com o SISVE Dentre as características de cada um dos cinco programas acima descritos, as que possuem parecidas no SISVE - Sistema de Controle e Estoque são: No Software C-Plus: emissão de cupom; fluxo de caixa; clientes e fornecedores; controle de caixas; relatórios; controle de estoque; forma de pagamento e seção por hierarquia; cálculo automático para determinar estoque mínimo; criação de classificações para produtos; 19 layout de relatório editável por você de forma simplificada; vários filtros para pesquisa de produtos; ranking produtos; reserva de produto no estoque e aviso na tela de venda. No Software Systronic Office Comercial: busca incremental de produto por qualquer parte do nome; leitura de código de barras do produto; alteração do preço na hora da venda configurável; descontos e acréscimos em percentuais e valores no fechamento da venda; calcula o troco automaticamente; cancelar o último cupom, porém o valor da venda consulta de preços sem sair do PDV; impressão de comprovante de entrega e ranking de produtos mais vendidos relatório onde você escolhe os “dez mais” ou “vinte mais”. No Software PDV-Master: controle de caixa; controle de estoque; controle de usuário; aceita venda por código simples; código de barras ou descrição; cadastro de clientes; aceita leitor de código de barras; aceita qualquer impressora não fiscal; imprime direto para porta LPT1, COM1, rede ou arquivo de texto. No Software TagComércio: controle de estoque e de vendas; cadastro de produtos; categoria de produtos e fluxo de caixa com relatórios financeiros. No Software SisAdvenPDV: cadastro de usuários com nível de acesso limitado controlado pelo administrador do sistema; venda através de leitor de código barras ou pesquisa rápida por descrição via teclado; impressão de pedidos em cupom não fiscal ou em formulário continuo; cadastro de produtos; controle de estoque; controle de vendas; entrada de mercadorias; fluxo de caixa; tabela de preços; total do patrimônio em estoque; completo sistema de segurança com senhas, que proporciona um controle dos acessos a todos aos módulos do sistema. 20 Capítulo III – Escopo do projeto Neste capítulo será descrito o modelo de dados, além da análise de acordo com a pesquisa realizada, identificando as problemáticas e a real necessidade que se encaixaram no projeto final. 3.1 Work breakdown structure (WBS) No projeto do WBS (Figura 3.1) foram definidas quatro etapas principais: Visão, Planejamento, Desenvolvimento e Estabilização. Na Visão há: Pesquisa: feita no estabelecimento comercial, com a intenção de verificar a necessidade de um software e seus requisitos funcionais. Ela foi importante para um desenvolvimento com foco nas soluções dos problemas que se apresentaram. Aplicamos um questionário ao lojista, disponível nos Apêndices A e B. O Planejamento é composto por: Cronograma: Na figura 3.2 ficam demonstradas as tarefas e os tempos para as suas execuções. Diagrama de entidade e relacionamento - Representa-se na figura 3.3 a estrutura do banco de dados que seria construído para o projeto. Diagrama de caso de uso: Mostra os atores e suas funções dentro do sistema. Disponível na figura 3.6. Diagrama de classes: A figura 3.5 exibe a estrutura das relações das classes. Modelo de entidade e relacionamento: Na figura 3.4 verifica-se as ações de um usuário no sistema por este tipo de modelo. Já o Desenvolvimento é composto por: 21 Banco de Dados: Elaborado a partir do Diagrama de Entidade e Relacionamento (DER). Interface gráfica: Foi desenvolvida pelo software Visual Studio 2010. Testes: Foram ocorrendo ao longo de todo o desenvolvimento. E a Estabilização composta por: Implementação: instalação do sistema na loja. Treinamento: Explicação detalhada do uso e acompanhamento in loco ou via suporte por e-mail ou telefone. 22 Figura 3.1 – W.B.S.. 23 3.2 Cronograma Figura 3.2 – Cronograma 24 3 3 Diagrama de Entidade e Relacionamento (DER) Figura 3.3 – D.E.R. 25 3.4 Modelo de Entidade e Relacionamento (MER) n, n POSSUI ATENDENTE (usuario) ITENS VENDA n, n POSSUI 1, n 1, n FAZ n, n n, n 1, n VENDA n, n TEM 1, 1 1, n POSSUI 1, 1 1, 1 PODE SER POSSUI n, n FORMA PAGAMENTO PRODUTOS POSSUI 1, 1 MARCA Figura 3.4 – M.E.R. 1, 1 1, n LINHA CATEGORIA 26 3.5 Diagrama de classe categoria +cod_categoria integer +categoria varchar forma_pagamento * +cod_pagamento integer +pagamento_cartao float +pagamento_cheque float +pagamento_dinheiro float +informar() +atualizar() +incluir() +excluir() * marcas +informar() +descontar() +cobrar() +cod_marcas integer +nome_marcas varchar * +informar() +atualizar() +incluir() +excluir() * linha * * +cod_linha integer +nome_linha varchar +informar() +atualizar() +incluir() +excluir() vendas +cod_vendas integer +data-venda date itens_venda +informar() +descontar() +cod_itens_venda integer +qtde_venda integer +vlr_total float 1 produtos login +cod_login_adm integer +nome_login_adm varchar(15) +senha_login_adm varchar(8) +alt_categoria int +alt_linha int +alt_marca int +alt_itens_venda int +alt_usuario int +alt_venda int +exc_categoria int +exc_linha int +exc_marca int +exc_itens_venda int +exc_usuario int +exc_venda int +cad_categoria int +cad_linha int +cad_marca int +cad_itens_venda int +cad_usuario int +cad_venda int +atualizar int +relatorio int 1..* atendente +cod_atendente integer +nome_atendente vachar +cpf_atendente integer +rg_atendente integer * 1..* +cadastrar() +acessar_banco() +alterar_banco() +incluir() +excluir() +cadastrar() +atualiza() +consulta() +cadastra_venda() +cancela_venda() +exclui_venda() Figura 3.5 – Diagrama de classe +cod_produtos integer +cod_barras integer +nome_produtos varchar +descrição_produtos varchar +vlr_unitario float +qtde_estoque integer +informar() +incluir() +excluir() +atualizar() 27 No diagrama de classe, representaram-se as entidades do sistema. Suas operações e seus atributos. Cada uma das entidades deve obedecer às operações construídas neste diagrama, seus atributos são a forma que identificaram a entidade no sistema. Com base no diagrama as operações ficaram limitadas para o usuário, mas para o administrador não. Estas ações estão definidas de acordo com o ilustrado no diagrama acima. Essa construção foi feita com base no diagrama de caso de uso. Esse diagrama traz a ideia de como se trabalha com os atributos, suas codificações e onde cada atributo deverá depender de sua entidade. 28 3.6 Diagrama de casos de uso Figura 3.6 – Diagrama de casos de uso 29 O diagrama da loja de cosmético, criado através do programa Diagram Design versão 1.23, mostra como se comporta o sistema no momento da venda, o seu sistema contará com apenas dois atores: o gerente e a forma de pagamento. Conforme se informa no diagrama de casos de uso, o sistema conta com forma de pagamento dando-lhe opções de pagamento em dinheiro, cartão ou cheque, além de opção de desconto. Há informações dos produtos, cadastro, atualização, exclusão, inclusão, entre outras. O que se retrata no caso de uso acima é como o sistema deverá se comportar diante dos usuários. 30 CAPÍTULO IV – Desenvolvimento do projeto Neste capítulo será ilustrado todo o desenvolvimento do projeto, telas e funcionamento, além dos códigos aplicados. 4.1 Principais telas Serão apresentadas a seguir as telas do SISVE divididas em duas parte: Estoque e Vendas. 4.1.1 Telas de controle de estoque Na Tela Login o usuário poderá usar a opção Alterar senha, que está disponível só antes de se logar no sistema, mas para isto precisará saber a senha antiga para modificá-la. Figura 4.1 – Tela de login No momento em que “Cadastro ADM” estiver desabilitado é porque já existe um login cadastrado e este usuário já cadastrado é o administrador do sistema. Caso não haja nenhum login cadastrado, o sistema libera o “Cadastro ADM”. A senha do usuário pode ser alterada de acordo com o login informado e senha antiga. É de fundamental importância que apenas o administrador utilize a sua senha e o seu nome de usuário, pois é com tal recurso que o administrador controla todo o software. Nenhum outro usuário pode consultar a senha dos demais, apenas o administrador do sistema. Caso o administrador esqueça a sua própria senha, ele terá de entrar em contato com a equipe de suporte técnico para fazer a recuperação. 31 Nesta tela qualquer um dos usuários poderá alterar a sua senha. Ele digitará o nome do usuário e a senha antiga, digita a nova senha e clica em alterar. Depois que alterar, clique em cancelar e a tela de login será exibida novamente. Figura 4.2 – Tela de alteração de senha Na Tela Principal, o usuário pode, clicando em: Botão Cadastrar: abrir a tela de cadastro de produtos. Botão Excluir: abrir a tela de exclusão de produtos. Botão Consulta: abrir a tela de consulta de produtos. A consulta é de forma geral, onde todos os itens poderão ser consultados. Botão Relatório: abrir a tela de relatório. O usuário poderá imprimir relatórios de produtos. Botão Sair: encerrar o programa. Antes de sair o usuário ainda terá a opção de cancelar o encerramento se clicar no botão Sair. 32 Figura 4.3 – Tela principal As informações contidas no rodapé do software são meramente demonstrativas: mostram o nome do usuário que está logado naquele momento, a data e a hora. A Tela de cadastro é carregada no momento em que o usuário escolhe a opção Cadastro. Ela possui os seguintes recursos: Figura 4.4 – Tela de cadastro de produtos Botão Consultar: para abrir a tela de Consulta de Geral de Produtos, caso houver a necessidade em consultar algum item. Os campos Marca, Linha e Categoria: cadastra em outra tela do software, mas se o usuário digitar as teclas de atalho Ctrl+A, abrirá a tela de cadastro da Marca, Ctrl+T abrirá a 33 tela de cadastro da Categoria e Ctrl+L abrirá a tela de cadastro da Linha. Esses três campos ficam desabilitados, porém o usuário poderá selecionar os dados que ali estão para efetuar o cadastro. Botão Limpar: apaga todos os dados dos campos. Já os campos que estiverem no momento bloqueados, não serão apagados. A utilidade desta função no software é a de que o usuário não precise apagar os dados de cada um dos campos, mas nada o impede de fazer essa ação. O intuito é melhorar o cadastro, evitado que o usuário precise ir a cada campo e para apagar determinada informação. Botão Retornar ao Menu Principal: é um recurso intuitivo, quando clicado, a tela de cadastro é fechada e o menu principal fica a disposição para se efetuar algo pertinente aos módulos disponibilizados na tela principal. Botão Cadastrar: após preencher todos os campos, o usuário pode clicá-lo, com isso o item em questão será cadastrado. Produto Sem Cod. Barras: para os itens sem código de barras o usuário pode selecionar essa opção, com isso o software gerará um número automático para o item que for cadastrado. Esse número gerado automaticamente não terá repetição. No momento do cadastro o usuário digitava as teclas de atalho para cadastrar a linha, a marca e a categoria. No menu principal isso pode ser feito para a maioria dos módulos do sistema com o Menu Cadastro, Menu Configurações, Menu Consulta e Menu Relatório. Mais adiante serão demonstradas essas teclas bem como suas serão exibidas as imagens. Figura 4.5 – Aba cadastrar da tela principal 34 Nesse menu Cadastrar, há opções como mostrada na figura abaixo. Os itens deste menu estão habilitados de acordo com as configurações de sistema que o administrador previamente já havia escolhido. As opções são: Nova Categoria, Nova Linha e Nova Marca: o menu de cadastro de ambas opções é carregada de acordo com a escolha do usuário. Figura 4.6 – Cadastro de categoria de produtos Figura 4.7 – Cadastro da linha de produtos Figura 4.8 – Cadastro da marca do produto Produto: é equivalente ao clique no botão Cadastrar. O formulário de cadastro de produtos será carregado. Conforme Figura 4.4. Usuário: o administrador poderá cadastrar usuários para o sistema, bem como suas configurações de acordo com a figura 4.10 e 4.11. 35 Figura 4.9 – Cadastro de usuários Os cadastramentos estão disponíveis através do menu principal na aba Cadastrar (Figura 4.5), clicando na opção desejada ou usando teclas de atalho, são elas: Cadastro de Categoria (Figura 4.9): teclas de atalho CTRL+T; Cadastro da Linha de Produtos (Figura 4.7): teclas de atalho CTRL+L; Cadastro da Marca do Produto (Figura 4.8): teclas de atalho CTRL+A; Cadastro de Produtos (Figura 4.4): teclas de atalho CTRL+D; Cadastro de Usuários (Figura 4.9): teclas de atalho CTRL+U. O campo Código Usuário e o botão Consultar estão desabilitados porque esta ação será feita nas opções Alteração e Exclusão. As telas acima são executas de acordo com a escolha do usuário (Figura 4.5). Na tela a seguir, aparece a aba de Acesso do Sistema, é nela que são configurados os tipos de acesso ao sistema. Lembrando que o usuário administrador não é consultado em nenhum módulo do sistema. 36 Figura 4.10 – Opção de acesso ao sistema de estoque através da janela principal Na Figura 4.10 o usuário administrador, assim configurado, clicando na opção ou digitando CRLT+S entra na janela de Configurações de Acesso do Sistema de Estoque (Figura 4.11). Figura 4.11 – Janela de configurações de acesso do sistema de estoque 37 Nesta janela, o administrador consulta o usuário e logo depois configura os acessos do sistema, salvando as suas configurações. O botão Salvar só poderá ser desabilitado quando todos os campos forem preenchidos com a consulta. Sendo assim, o responsável por essa configuração deverá antes consultar o usuário que necessita alterar os acessos para depois salvar. Deve-se resaltar que caso o responsável deixar os campos dos acessos em branco, o usuário poderá fazer apenas consultas. Na tela abaixo (Figura 4.12). A aba Consulta demonstra os itens que poderão ser consultados. Figura 4.12 – Aba das consultas de estoque da tela principal Na Figura 4.12 os formulários podem ser carregados de acordo de acordo com a escolha, ou seja, eles poderão ser carregados clicando ou digitando determinadas teclas de atalho e que são exibidas no menu suspenso. Consultar Categoria (Figura 4.13): teclas de atalho CTRL+C; Consultar Linha (Figura 4.14): teclas de atalho CTRL+L; Consultar Marca (Figura 4.15): teclas de atalho CTRL+M; Consultar Produto (Figura 4.16): teclas de atalho CTRL+D; Consultar Usuário (figuras 4.17 e 4.18): teclas de atalho CTRL+U; Consultar Vendas (Figura 4.19): teclas de atalho CTRL+V; Essas teclas auxiliam no momento que se necessita consultar um determinado item, evitando que o usuário tenha que clicar no menu e em seguida clicar no tipo de consulta que de- 38 seja fazer. Salientando que a consulta de usuário só poderá ser feito pelo administrador ou por um usuário assim configurado. As telas de consultas do sistema SISVE são as seguintes: Figura 4.13 – Consulta de categoria A Figura 4.13 traz os itens disposto na tela para visualização. O usuário poderá fazer as suas consultas digitando no campo superior em cor branca, e o item requerido será exibido na parte inferior da tela. Se consulta pelo código ou pelo nome da categoria do produto. Caso queira saber o último produto cadastrado é só marcar a opção Ordem Decrescente e o último registro será exibido primeiro, bem como os demais itens dispostos do menor para o maior. Já em Ordem Alfabética, como o próprio nome já diz, organiza em ordem alfabética. Lembrando que estas ações modificam a forma como serão exibidas, com isso a pesquisa que havia sido feita, não será levada em consideração, no entanto não é necessário apagar a informação digitada, caso desmarque o tipo de ordenação a consulta se manterá como já havia sido feita. Importante: Nenhuma das duas opções de ordenação fica marcadas por igual, ou seja, não poderá ser feita duas ordenações ao mesmo tempo. Ao clicar no botão Sair à tela é fechada e o menu principal se mantém em execução. O sistema não é fechado direto. 39 A informação acima discriminada para a tela Consulta de categoria (Figura 4.13) são as mesmas para estas telas denominadas Consulta de linha (Figura 4.14), Consulta de marca (Figura 4.15) e também para as outras que a seguir serão demonstradas. Figura 4.14 – Consulta de linha Figura 4.15 – Consulta de marca 40 Os critérios de pesquisa e ordenação são válidos para as todas as telas de pesquisa, exceto para a de Consulta geral (Consulta de geral de produtos). Clicando na aba Consulta de Produtos ou no botão Consultar, ambos disponíveis na tela principal, haverá o acesso a consulta geral de produtos, assim como demonstrado na tela abaixo. Figura 4.16 – Consulta geral de produtos Nesta figura 4.16 os campos em branco são para pesquisa. A regra para a ordenação se mantém, apenas para enfatizar, esta regra é válida para todas as telas. Neste formulário, assim como nos outros, os itens são exibidos conforme cadastrado no banco de dados. As opções aqui presentes são as de Produto, Categoria, Marca, Linha, Data, Descrição, Código de barras, Código do produto, Valor unitário e Quantidade em estoque. Caso alguma informação não esteja presente conforme mostrado acima, você pode mover a barra de rolagem no rodapé da janela para a direita ou dependendo da quantidade de registro tanto para direita quanto para baixo. Em Data, deve digitar a data sem que seja preciso inserir a barra (/) ou o traço (-), mas o usuário poderá digitar sem problema algum, já que o sistema conta com autopreenchimento de data, ou seja, apenas é preciso digitar o número da data. Caso os dados pesquisados fiquem em branco, significa que não há registros com o critério de pesquisa. 41 Antes de explicar detalhadamente sobre a próxima tela, observe que há uma caixa de verificação de senha, porém a senha não aparece. Esta ação é de exclusiva visualização do usuário administrador. Figura 4.17 – Consulta de usuário (um administrador) Nenhum outro usuário poderá visualizar este campo, mesmo que seja configurado um segundo usuário administrador, este campo não ficará visível para ele. Observação: para as caixas de verificação, apenas os tipos de ordenação podem ficar uma por vez. A caixa de Senhas pode e deve ficar habilitada para que seja possível a visualização da senha. Caso não queira, deixe-a desabilitada como demonstra a tela 17, e o campo senha não aparecerá. Observe que na Figura 4.18 a opção Senhas não aparece. Figura 4.18 – Consulta de usuário (dois administradores) 42 Para que a senha seja exibida, o usuário administrador terá que habilitar o campo Senhas. Lembrando que a senha ou o login do administrador não aparecem nesta tela. Continuando neste módulo de consulta, será agora explicada a tela Consulta de venda. Seguindo sempre as mesmas configurações das caixas de verificação, já explicadas anteriormente. Há uma barra de rolagem na imagem, ou seja, ainda tem campos para ser exibidos, neste caso, o usuário pode rola a esta barra para a direita para visualizar os demais campo. Figura 4.19. – Consulta de vendas Como já explicado, as ordenações se aplicam a esta tela também. Os campos que poderá ser feito as pesquisas no formulário são: Produto, Cód.barras, Pagamento, Vendedor, Val.Total, Quant.Venda, Hora, Data, Quant.Item, Total_Venda. A tela abaixo demonstra os itens de alterações, dentro da aba Manutenção. Neste menu, o usuário clicando em um dos itens para alteração terá uma tela carregada com a opção escolhida. 43 Figura 4.20 – Aba de manutenção de estoque da tela principal (alteração) Figura 4.21 – Alteração de categoria A tela 21 existe dois campos, o código da categoria e o seu nome. A consulta pode ser feita pelos dois campos. No Código categoria informe o número a ser pesquisado e no Nome da Categoria informe o nome da categoria ou alguma letra que seja referente a ela. O botão Alterar só será habilitado quando houver a consulta e o botão Limpar apaga os dados dos campos e habilita o campo código e desabilita o botão Alterar. Quando é consultado, o primeiro campo fica desabilitado, mas poderá prosseguir com a sua consulta no segundo campo. Ao fazer outra consulta, o primeiro campo é substituído com o código do item pesquisado. O primeiro campo (Código Categoria) fica desabilitado depois que consultado porque o código não pode ser alterado. Quando clicado em Limpar, o botão Alterar é desabilitado por motivo de segurança para não haver alterações inválidas, ou seja, campos nulos. Embora o software não permita este tipo de alteração, é um recurso a mais que lhe assegura as informações de seu produto. As explicações aqui abordadas são mantidas para as figuras 4.22, 4.23, 4.24, 4.25 e 4.26. Figura 4.22 – Alteração de linha 44 Figura 4.23 – Alteração de marca Figura 4.24 – Alteração de produto Na Figura 4.25, o campo Senha e Confirmação de senha ficam desabilitados porque esta ação pode ser feita apenas na Figura 4.1, onde o usuário pode clicar em Alteração de senha. 45 Figura 4.25 – Alteração de usuário Figura 4.26, as caixas de verificação ficarão habilitadas assim que for feita uma pesquisa. Neste formulário podem-se habilitar as três caixas de verificação ao mesmo tempo. Para efetuar a alteração e para executar uma segunda consulta deve clicar em Limpar e os campos ficarão habilitados. Figura 4.26 – Alteração de venda 46 Figura 4.27 – Menu de manutenção de estoque da tela principal (exclusão) A tela acima demonstra os itens de exclusão. Nela, como na anterior, o usuário ao clicar em um dos itens, uma tela será carregada com a opção que devidamente se relacionam ao item escolhido. Como na figura 4.21, as configurações se mantêm para as telas de exclusão e atualização, com algumas características que serão abordadas na tela de atualização. Figura 4.28 – Exclusão de categoria Figura 4.29 – Exclusão de linha 47 Figura 4.30 – Exclusão de marca Figura 4.31 – Exclusão de produto Nesta tela denominada de Exclusão de itens de venda há campos com nome do produto, quantidade em estoque e valor do produto. No momento em que for excluir os campos ao lado não será excluída do banco, pois é meramente informativo. Figura 4.32 – Exclusão de itens de venda 48 A tela abaixo demonstra o item Atualizar produto. Esta função permite que atualize-se a quantidade de um determinado produto. Figura 4.33 – Aba de manutenção de estoque da tela principal (atualização) Clicando, abre-se uma janela, como demonstrado abaixo, onde o usuário poderá fazer as atualizações, quando necessária, das quantidades de produtos no estoque. Esta opção apenas realiza a soma do estoque antigo com a nova quantidade informada. Figura 4.34 – Janela de atualização do estoque 49 Figura 4.35 – Aba relatório no menu principal Conforme o que se ver na figura 4.35, localizada no Menu Principal possui a aba Relatório, onde se apresenta o sub-menu de acesso ao relatório de Estoque (Produto) e o de Venda. Eles também possuem tecla de atalho: Ctrl+R, acessa o relatório de Estoque e Ctrl+N acessa o relatório de Vendas. Clicando em um dos itens dos relatórios ou digitando as teclas de atalho você terá acesso aos relatórios já informados aqui e conforme está demonstrado nas figuras 4.36 e 4.37. Figura 4.36 – Tela de relatório de produtos 50 Figura 4.37 – Tela de relatório de vendas. Figura 4.38 – Barra de ferramenta dos relatórios Na barra de ferramenta ilustrada na figura 4.38, há os botões: Usado para consultar itens no relatório; Para aumentar a resolução; Imprimir; Atualizar; Importar (para qualquer outro tipo de arquivo mudando apenas a sua extensão); E há o campo de número de páginas, o usuário poderá digitar o número das páginas ou usar as setas de navegação. Atenção o usuário deverá ter quando no campo de número de páginas estiver /1+, isto significará que haverá mais páginas a serem visualizadas ou impressas. Caso não tiverem as setas de navegação, ficarão desabilitadas e o número de página /1+ ficará como /1, o sinal de + aparece porque não haveria mais de uma página para ser impressa. 51 Figura 4.39 – Menu principal, tela de acesso ao suporte e ajuda do sistema No item mostrado na figura 4.39, o usuário poderá acessar o suporte técnico enviando um e-mail para sanar dúvidas sobre o uso do sistema. Na figura 4.40 exibe-se a tela de solicitação de suporte. Nela, o usuário deverá informar no campo determinado os seguintes itens: Nome: O usuário deve inserir seu nome para que o suporte possa entrar em contato diretamente com a pessoa que estava com a dúvida ou problema. E-mail: O usuário deve inserir seu e-mail para que o suporte possa entrar em contato diretamente com a pessoa que estava com a dúvida ou problema. Assunto: O usuário deverá inserir um assunto para mensagem agilizando assim o entendimento e o atendimento do suporte. Poderá informar sobre o módulo do sistema ao qual ele tem dúvida, como por exemplo: cadastro de categoria, linha, marca, produto, consultas, etc. Mensagem: O usuário deve inserir a mensagem com a sua dúvida ou problema, descrevendo o máximo de informações possíveis para um melhor entendimento agilizando assim o atendimento do suporte. Barra de Progresso: Demonstrativo gráfico do progresso de envio da mensagem. Botão Enviar: Envia a mensagem com todos os dados para o suporte SISVE. 52 Figura 4.40 – Tela de suporte técnico Com base nisso o suporte entrará em contato com o usuário e sanará as suas dúvidas de acordo com a sua solicitação. A opção de envio de suporte também está disponível no controle de venda do SISVE. 4.1.2 Telas de controle de vendas Na tela de login do controle de vendas, há: Campo de Login: O usuário deverá informar o seu login previamente cadastrado no sistema. Campo de Senha: O usuário deverá informar o sua senha previamente cadastrada no sistema. Botão Entrar: Após preencher os campos acima, o usuário deverá clicar em entrar para ter acesso ao sistema. Note que se ele não preencher algum dos campos de login ou senha, o sistema irá avisá-lo. 53 Figura 4.41 – Tela de login Figura 4.42 – Tela de venda Na tela de vendas, possuem as seguintes opções: Aba suporte: Acessa a tela de suporte caso o usuário tenha algum problema ou dificuldade com o sistema, conforme já explicado. Barra de Produtos: Exibe informações dos produtos que estão sendo adicionadas à compra. 54 Cupom de Venda: Demonstrativo das informações dos produtos e da venda em tempo real que é impresso ao final da transação. Botão Consultar Produto: Para ocasiões em que o usuário desejar saber o valor ou a quantidade disponível em estoque de um determinado produto. Botão Abrir Venda: O usuário deverá sempre clicar neste botão ao início de cada venda. Botão Excluir Item: Caso o usuário desejar excluir algum item da venda após ter incluído o item no cupom, basta selecioná-lo e clicar em excluir item. Botão Cancelar Venda: Caso o usuário desejar excluir algum item da venda após ter incluído no cupom de venda, basta selecioná-lo no cupom de venda e clicar em excluir item. Botão Desconto: Caso o usuário desejar dar um desconto no valor final da venda. Botão Fechar Venda: Finaliza a venda e imprime o cupom. Figura 4.43 – Tela de consultar produto A tela para consultar produtos, tem: Campo Cod. de Barras: O usuário deve inserir o código de barra e clicar em consultar (ou apertar enter) para consultar as informações do produto. Campo Produto: Exibe o nome do produto de acordo com a consulta pelo código de barras. Campo Preço: Exibe o preço do produto de acordo com a consulta pelo código de barras. Campo Quantidade: Exibe a quantidade restante no estoque do produto de acordo com a consulta pelo código de barras. 55 Botão Consultar: Realiza consulta do produto pelo código de barras e exibe as informações nos respectivos campos. Botão Limpar: Limpa todos os campos. Figura 4.44 – Tela de desconto A tela para conceder desconto ao clientes, possui: Campo Porcentagem: O usuário deve inserir a porcentagem do desconto que deseja e clicar em calcular (ou dar enter) para atualiza o valor total. Campo Valor Total: Aqui o usuário pode alterar o valor final da compra manualmente, efetuando assim o desconto desejado. Botão Alterar: Quando o usuário já tiver calculado ou inserido o valor do desconto deve clicar em alterar para que o sistema retorne ao tela de venda com o valor alterado. 4.2 Banco de dados Para o gerenciamento do banco de dados do SISVE foi utilizado a ferramenta SQL 2008 Server Express versão 10 desenvolvida pela empresa Microsoft. De acordo com o site oficial, “ela é um sistema de gerenciamento de dados avançado, que oferece um rico conjunto de recursos, proteção de dados e desempenho para clientes de aplicativos incorporados” (MICROSOFT, 2009). Além disso, possui distribuição gratuita, podendo ser disponível juntamente com aplicativos. 56 4.2.1 Código de criação do banco de dados e das tabelas Abaixo está o script em SQL do banco de dados do SISVE devidamente comentado, onde demonstram-se a criação do banco de dados e de suas tabelas: --Criação do banco de dados lojacosmeticos create database lojacosmeticos; --Criação da tabela marcas create table marcas (cod_marca int primary key not null auto_increment, nome_marca varchar(255) not null); --Criação da tabela linha create table linha (cod_linha int primary key not null auto_increment, nome_linha varchar (255) not null); --Criação da tabela categoria create table categoria (cod_categoria int primary key not null auto_increment, nome_categoria varchar (255) not null); --Criação da tabela produtos create table produtos (cod_produto int primary key not null auto_increment, cod_barras int not null, nome_produto varchar (255) not null, descricao_produto varchar (255), vlr_unitario float not null, qtde_produto int not null, cod_marca int not null, cod_linha int not null, cod_categoria int not null, foreign key (cod_marca) references marcas(cod_marca), foreign key(cod_linha) references linha(cod_linha), foreign key(cod_categoria)references categoria(cod_categoria)); --Criação da tabela login 57 create table login (cod_login int not null primary key auto_increment, nome_login varchar (20) not null, senha varchar (8) not null, alt_categoria int, alt_linha int, alt_marca int, alt_itens_venda int, alt_usuario int, alt_venda int, exc_categoria int, exc_linha int, exc_marca int, exc_itens_venda int, exc_usuario int, exc_venda int, cad_categoria int, cad_linha int, cad_marca int, cad_itens_venda int, cad_usuario int, cad_venda int, atualizar int, relatorio int); --Criação da tabela usuario create table usuario (cod_usuario int null primary key auto_increment, nome_usuario varchar (50), cpf_usuario varchar(14), rg_usuario varchar (14), cod_login int not null, foreign key(cod_login)references login(cod_login)); --Criação da tabela venda create table venda 58 (cod_venda int primary key not null auto_increment, data_venda date not null, hora_venda time not null, cod_usuario int not null, vlr_total_venda float, foreign key (cod_usuario) references usuario(cod_usuario)); --Criação da tabela itens_venda create table itens_venda (cod_item int not null primary key auto_increment, cod_venda int not null, cod_produto int not null, qtde_item int not null, vlr_total_item float not null, foreign key (cod_venda) references venda(cod_venda), foreign key (cod_produto) references produtos (cod_produto)); --Criação da tabela forma_pagamento create table forma_pagamento (cod_pagamento int primary key not null auto_increment, tipo_pagamento varchar (30) not null, cod_venda int not null); 4.3 Código da aplicação No código de criação estão os códigos devidamente comentados e desenvolvidos na linguagem Visual Basic pelo Visual Studio versão 2010 dos dois módulos da aplicação: Estoque e Venda. 4.3.1 Código do controle de estoque ********************************************************************** 'TELA DE LOGIN '********************************************************************** ‟ LOGIN.VB 59 ' Public Class login Dim nomeuser, senha, nome_do_login As Object Dim contadoru, contadors As Integer Public Function tabela_login_vazia() 'função para verificar se há login cadastro na tabela login Try ' tratativa de erro do formulário conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'variavel de conexão con.Open() 'abri o banco cmd.CommandText = "select * from login" 'consulta do banco de dados reader = cmd.ExecuteReader() 'comando para executar a reader If reader.Read Then 'condição, se houver cadastro de login a linklabel é dasabilitada LinkLabel2.Enabled = False LinkLabel1.Enabled = True Else LinkLabel2.Enabled = True 'se não houver nenhum cadastro a link label é habilitada. LinkLabel1.Enabled = False End If reader.Close() 'fecha a reader con.Close() 'fecha a conexão Catch ex As Exception End Try Return 1 End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try ' trataviva de erro do formulário conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'variavel de conexão 60 con.Open() 'abri o banco cmd.CommandText = "select * from login where nome_login = '" & TextBox1.Text & "'" 'consulta do banco de dados reader = cmd.ExecuteReader() 'comando para executar a reader reader.Read() 'variável reader para ler os dados selecionado na select nomeuser = reader("nome_login") senha = reader("senha") nome_do_login = reader("nome_login") If TextBox1.Text = nomeuser Then 'confere o login If MaskedTextBox1.Text = senha Then 'confere a senha acrescenta_campo = reader("cod_login") 'campos alteração dados(0, 0) = reader("alt_categoria") dados(0, 1) = reader("alt_linha") dados(0, 2) = reader("alt_marca") dados(0, 3) = reader("alt_produto") dados(0, 4) = reader("alt_venda") dados(0, 5) = reader("alt_usuario") 'campos exclusão dados(0, 6) = reader("exc_categoria") dados(0, 7) = reader("exc_linha") dados(0, 8) = reader("exc_marca") dados(0, 9) = reader("exc_produto") dados(0, 10) = reader("exc_itens_venda") dados(0, 11) = reader("exc_venda") dados(0, 12) = reader("exc_usuario") 'campos cadastros dados(0, 13) = reader("cad_categoria") dados(0, 14) = reader("cad_linha") dados(0, 15) = reader("cad_marca") dados(0, 16) = reader("cad_produto") dados(0, 17) = reader("cad_usuario") 'campo atualizar dados(0, 18) = reader("atualizar") 61 'campo relatório dados(0, 19) = reader("relatorio") reader.Close() 'fechando a reader con.Close() 'fechando o banco de dados Me.Hide() principal.Label1.Text = nome_do_login principal.Show() TextBox1.Clear() MaskedTextBox1.Clear() Else MsgBox("Senha não confere.", vbCritical) 'mensagem para senha errada contadors = contadors + 1 'contador de erro de senha, se passar de três tentativas o sistema automaciamente fecha MaskedTextBox1.Focus() End If Else MsgBox("Login não cadastrado!", vbCritical) 'mensagem para login errada TextBox1.Focus() End If Catch ex As Exception MsgBox("Usuário inválido.", vbCritical) 'mensagem quando não há login no banco de dados contadoru = contadoru + 1 'contador de erro de usuario, se passar de três tentatavias o sistema automaciamente fecha TextBox1.Focus() End Try If contadoru = 3 Or contadors = 3 Then 'condição para fechar o sistema. Se passar de três tentativas o sistema fecha. MsgBox("Sistema encerrado.") Application.Exit() End If End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress 62 If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True MaskedTextBox1.Focus() End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click sair() 'botão sair Me.Close() End Sub Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked Hide() AlterarSenha.Show() End Sub Private Sub MaskedTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox1.KeyPress If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) End If End Sub Private Sub LinkLabel2_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel2.LinkClicked Try ' trataviva de erro do formulário CadastroUsuario.Button3.Text = "Cancelar" 'adicionar o text para o botão no formulário cadastro usuário CadastroUsuario.Button1.Enabled = False 'desabilita o botão CadastroUsuario.Label6.Enabled = False CadastroUsuario.TextBox3.Enabled = False 'desabilita a textbox CadastroUsuario.Show() Catch ex As Exception End Try End Sub 63 Private Sub login_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load tabela_login_vazia() 'Executa a função de verificação da tabela login, caso não tenha nenhum login o linklabel é abiitado End Sub End Class „********************************************************************** 'CADASTRO DE CATEGORIA '********************************************************************** ‟ NOVACATEGORIA.VB ' Imports MySql.Data.MySqlClient Public Class NovaCategoria Public Sub conferir_categoria() 'Função objeto. Confere se o item já esta cadastrado. Try 'Tratando erro If Label1.Text = "Nome da Categoria:" Then 'condição para o conferir a categoria conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.Connection = con con.Open() 'Abre a conexão com o banco de dados cmd.CommandType = System.Data.CommandType.Text If TextBox2.Text > " " Then 'Segunda condição para pequisa no banco de dados cmd.CommandText = "SELECT * FROM categoria where nome_categoria like '%" & Trim(TextBox2.Text) & "%'" 'Função trim romove espaços iniciais e finais da textbox End If reader = cmd.ExecuteReader() reader.Read() confere = reader("nome_categoria") reader.Close() 'Fecha a leitura com o banco de dados con.Close() 'Fecha a conexão com o banco de dados ElseIf Label1.Text = "Nome da Marca:" Then 'condição para conferir a marca 64 conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.Connection = con con.Open() 'Abre a conexão com o banco de dados cmd.CommandType = System.Data.CommandType.Text If TextBox2.Text > " " Then 'Segunda condição para pequisa no banco de dados cmd.CommandText = "SELECT * FROM marcas where nome_marca like '%" & Trim(TextBox2.Text) & "%'" 'Função trim romove espaços iniciais e finais da textbox End If reader = cmd.ExecuteReader() reader.Read() confere = reader("nome_marca") reader.Close() 'Fecha a leitura com o banco de dados con.Close() 'Fecha a conexão com o banco de dados ElseIf Label1.Text = "Nome da Linha:" Then 'condição para conferir a linha conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.Connection = con con.Open() 'Abre a conexão com o banco de dados cmd.CommandType = System.Data.CommandType.Text If TextBox2.Text > " " Then 'Segunda condição para pequisa no banco de dados cmd.CommandText = "SELECT * FROM linha where nome_linha like '%" & Trim(TextBox2.Text) & "%'" 'Função trim romove espaços iniciais e finais da textbox End If reader = cmd.ExecuteReader() reader.Read() confere = reader("nome_linha") reader.Close() 'Fecha a leitura com o banco de dados con.Close() 'Fecha a conexão com o banco de dados End If Catch ex As Exception End Try End Sub 65 Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Try If Label1.Text = "Nome da Categoria:" Then 'condição para o cadastrar a categoria If TextBox2.Text > " " Then 'se a textbox não for nula ela executa as instruções abaixo. 'Conferir se o item em questão já esta cadastrado. conferir_categoria() 'objeto para conferir se já há cadastro. If confere <> TextBox2.Text Then 'condição para inserir uma nova categoria If MsgBox("Deseja cadastrar esta categoria?", vbYesNo, "confirmação") = vbYes Then 'Tabela produtos - CADASTRO conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con 'conecta ao banco de dados con.Open() With cmd .CommandType = System.Data.CommandType.Text .CommandText = "INSERT into categoria (nome_categoria) VALUES (?)" .Parameters.Add("nome_categoria", OleDb.OleDbType.VarChar) .Parameters("nome_categoria").Value = Trim(TextBox2.Text) 'função trim remove espaços finais e iniciais. .ExecuteNonQuery() End With con.Close() 'fecha a conexão TextBox2.Clear() 'limpa a textbox MsgBox("Cadastro efetuado com sucesso!", vbInformation) Else MsgBox("Cadastro não efetuado.", vbCritical) End If Else 'se for igual ele executa as intruções abaixo. 66 MsgBox("Item já cadastrado.", vbExclamation) 'mensagem a se exibida para o usuário quando o item for o mesmo End If 'fim da condição para conferir o cadastro Else MsgBox("Campo nulo!", vbCritical) TextBox2.Focus() 'move o cursor para a textbox End If ElseIf Label1.Text = "Nome da Marca:" Then 'condição para o cadastro da marca If TextBox2.Text > " " Then 'Conferir se o item em questão já esta cadastrado. conferir_categoria() 'objeto para conferir se já há cadastro. If confere <> TextBox2.Text Then 'condição para inserir uma nova categoria If MsgBox("Deseja cadastrar esta Marca?", vbYesNo, "confirmação") = vbYes Then 'Tabela marcas - CADASTRO MARCAS conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados With cmd .CommandType = System.Data.CommandType.Text .CommandText = "INSERT into marcas (nome_marca) VALUES (?)" 'Comando para inserir dados no MySQL .Parameters.Add("nome_marca", OleDb.OleDbType.VarChar) .Parameters("nome_marca").Value = Trim(TextBox2.Text) 'função trim. Remover os espaços iniciais e finais .ExecuteNonQuery() End With con.Close() 'fecha a conexão com o banco TextBox2.Clear() 'limpa a textbox MsgBox("Cadastro efetuado com sucesso!", vbInformation) Else MsgBox("Cadastro não efetuado.", vbCritical) 67 End If Else 'se for igual ele executa as intruções abaixo. MsgBox("Item já cadastrado.", vbExclamation) 'mensagem a se exibida para o usuário quando o item for o mesmo End If 'fim da condição para conferir o cadastro Else MsgBox("Campo nulo!", vbCritical) TextBox2.Focus() 'move o cursor para a textbox End If ElseIf Label1.Text = "Nome da Linha:" Then 'condição para o cadastro da linha If TextBox2.Text > " " Then 'Conferir se o item em questão já esta cadastrado. conferir_categoria() 'objeto para conferir se já há cadastro. If confere <> TextBox2.Text Then 'condição para inserir uma nova categoria If MsgBox("Deseja cadastrar esta Linha?", vbYesNo, "confirmação") = vbYes Then 'Tabela marcas - CADASTRO MARCAS conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados With cmd .CommandType = System.Data.CommandType.Text .CommandText = "INSERT into linha (nome_linha) VALUES (?)" 'Comando para inserir dados no MySQL .Parameters.Add("nome_linha", OleDb.OleDbType.VarChar) .Parameters("nome_linha").Value = Trim(TextBox2.Text) 'função trim. Remover os espaços iniciais e finais .ExecuteNonQuery() End With con.Close() 'fecha a conexão com o banco TextBox2.Clear() 'limpa a textbox MsgBox("Cadastro efetuado com sucesso!", vbInformation) Else 68 MsgBox("Cadastro não efetuado.", vbCritical) End If Else 'se for igual ele esxecuta as intruções abaixo. MsgBox("Item já cadastrado.", vbExclamation) 'mensagem a se exibida para o usuário quando o item for o mesmo End If 'fim da condição para conferir o cadastro Else MsgBox("Campo nulo!", vbCritical) TextBox2.Focus() 'move o cursor para a textbox End If Else MsgBox("Erro! Contate seu administrador.", vbCritical) TextBox2.Focus() 'move o cursor para o campo especificado End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click If Button3.Text = "Menu Principal" Then 'Ação para o objeto button 3 quando o texto dele for "Retornar ao meu principal Close() 'Fecha o formulário principal.Show() 'executa o menu princípal ElseIf Button3.Text = "VOLTAR" Then 'Condição para voltar a tela de cadastro Close() 'fecha o formulário CadastroProduto.sele_cambobox() 'executa a select da função combobox1 CadastroProduto.sele_cambobox2() 'executa a select da segunda função combobox2 CadastroProduto.sele_combobox3() 'executa a select da terceira função combobox3 Close() 'fecha o formulário CadastroProduto.Show() 'executa a tela de cadastro End If 69 End Sub Private Sub TextBox2_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True Button2_Click(Me, EventArgs.Empty) 'ação para o botão, quando o usuário ditigitar enter. TextBox2.Focus() End If End Sub Private Sub NovaCategoria_KeyDown(sender As Object, e As Sys- tem.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End Sub Private Sub TextBox2_TextChanged(sender As System.Object, e As Sys- tem.EventArgs) Handles TextBox2.TextChanged If Len(TextBox2.Text) = 36 Then MsgBox("Abrevie o registro. Carcateres Máximos 36") End If End Sub End Class „********************************************************************** 'TELA DE VENDAS '*****************************************************************‟ VENDA.VB ' Imports MySql.Data.MySqlClient Public Class Venda Dim cod_pagamento As Integer Private Function limpar_dados() 'Função apagar 'Instrução para o botão apagar 70 TextBox1.Clear() TextBox2.Clear() TextBox3.Clear() MaskedTextBox1.Clear() MaskedTextBox2.Clear() TextBox1.Enabled = True 'Função abilitar, abilita determinados objetos no formulário Button1.Enabled = False CheckBox1.Checked = False CheckBox2.Checked = False CheckBox3.Checked = False CheckBox1.Enabled = False CheckBox2.Enabled = False CheckBox3.Enabled = False TextBox1.Focus() 'função focus, quando o botão apagar e clickado o cursor irá para a textbox1 Return TextBox1.Text() End Function Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click If Button1.Text = "Alterar" Then 'ação para o botão quando for Alterar Try If CInt(TextBox1.Text) > 0 And TextBox2.Text > " " And TextBox3.Text > " " And MaskedTextBox1.Text > " " And MaskedTextBox2.Text > " " Then If MsgBox("Deseja alterar esta venda?", vbYesNo, "confirmação") = vbYes Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados With cmd .CommandType = CommandType.Text .CommandText cod_pagamento=?, data_venda=?, = "UPDATE hora_venda=? venda WHERE SET cod_usuario=?, cod_venda = " & 71 CInt(Trim(TextBox1.Text)) 'O tipo de dados dever ser integer e a função trim romove os espaços iniciais e finais da textbox .Parameters.Add("cod_usuario", OleDb.OleDbType.Integer) .Parameters("cod_usuario").Value = cod 'variavel para mudar o usuário .Parameters.Add("cod_pagamento", OleDb.OleDbType.Integer) .Parameters("cod_pagamento").Value = cod_pagamento 'Função trim. Remove espaços iniciais e finais da textbox. Cint aceita apenas valor inteiro. .Parameters.Add("data_venda", OleDb.OleDbType.Date) .Parameters("data_venda").Value = CDate(MaskedTextBox1.Text) 'Função trim. Remove espaços iniciais e finais da textbox. Cint aceita apenas valor inteiro. .Parameters.Add("hora_venda", OleDb.OleDbType.DBTimeStamp) .Parameters("hora_venda").Value = CStr(MaskedTextBox2.Text) 'Função trim. Remove espaços iniciais e finais da textbox. .ExecuteNonQuery() End With con.Close() 'Fecha a conexão com o banco de dados limpar_dados() 'função limpar. Apaga os dados pesquisado após alterar os dados e não ocorrer nenhum erro. MsgBox("Item alterado com sucesso!", vbInformation) Else MsgBox("Alteração cancelada!", vbExclamation) TextBox1.Focus() 'função focus, usado para mover o cursor para o campo requerido. End If Else MsgBox("Campo invalido.", vbCritical) TextBox1.Focus() 'função focus, usado para mover o cursor para o campo requerido. End If Catch ex As Exception MsgBox(ex.Message) TextBox1.Focus() 'função focus, usado para mover o cursor para o campo requerido. 72 End Try ElseIf Button1.Text = "Excluir" Then 'quando o botão estiver com o nome excluir exeuta a instrução abaixo Try 'Tratando erro If CInt(TextBox1.Text) > 0 And TextBox2.Text > " " Then If MsgBox("Deseja excluir esta venda?", vbYesNo, "confirma") = vbYes Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados With cmd .CommandType = CommandType.Text .CommandText = "Delete FROM venda where cod_venda = " & CInt(Trim(TextBox1.Text)) 'O tipo de dados dever ser integer e a função trim romove os espaços iniciais e finais da textbox .Parameters.Add("venda", OleDb.OleDbType.VarChar) .Parameters("venda").Value = CInt(TextBox1.Text) 'Função trim. Romove espaços iniciais e finsais da textbox .ExecuteNonQuery() End With con.Close() 'Fecha a conexão com o banco de dados MsgBox("Registro excluído com êxito!", vbInformation) limpar_dados() 'função para limpar os dados após a exclusão de um item. Else MsgBox("Exclusão cancelada!", vbExclamation) TextBox1.Focus() 'função focus, quando a exclusão é cancelada o cursor volta para a textbox1 End If Else MsgBox("Informação para exclusão inválida!", vbCritical) TextBox1.Focus() 'função focus, quando a algum dado incorreto para pesquisa o cursor volta para a textbox1 End If Catch ex As Exception 73 MsgBox(ex.Message) TextBox1.Enabled = True 'Função abilitar, abilita determinados objetos no formulário Button2.Enabled = False TextBox1.Focus() 'função focus, quando a mensagem de erro é exibida na tela o cursor volta para a textbox1 End Try End If End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Try 'Tratando erro Dim data As Date conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.Connection = con con.Open() 'Abre a conexão com o banco de dados cmd.CommandType = System.Data.CommandType.Text If Val(TextBox1.Text) > 0 Then 'Condição para a pesquisa no banco de dados cmd.CommandText = "select A.*, B.cod_usuario, B.nome_usuario, C.* from venda A inner join usuario B on (A.cod_usuario=B.cod_usuario) inner join forma_pagamento C on (A.cod_pagamento = C.cod_pagamento) where cod_venda = " & CInt(Trim(TextBox1.Text)) 'Só pode haver valores inteiros(número). Função trim romove espaços iniciais e finais da textbox Else MsgBox("Dados inválidos para pesquisa!", vbCritical) TextBox1.Focus() 'função focus, quando a algum campo de pesquisa inválido o cursor é movido para a testbox1 End If reader = cmd.ExecuteReader() reader.Read() TextBox1.Text = reader("cod_venda") cod = reader("cod_usuario") TextBox2.Text = reader("nome_usuario") cod_pagamento = reader("cod_pagamento") 74 TextBox3.Text = reader("tipo_pagamento") data = reader("data_venda") MaskedTextBox1.Text = data MaskedTextBox2.Text = reader("hora_venda") reader.Close() 'Fecha a leitura com o banco de dados con.Close() 'Fecha a conexão com o banco de dados If Button1.Text = "Alterar" Then CheckBox1.Enabled = True CheckBox2.Enabled = True CheckBox3.Enabled = True End If TextBox1.Enabled = False 'Função abilitar, abilita determinados objetos no formulário Button1.Enabled = True TextBox2.Focus() 'quando a select é executado com sucesso o cursor irá para a textbox2 por que a textbox1 fica desabilitada Catch ex As Exception MsgBox(ex.Message) TextBox1.Focus() 'função focus, move o cursor quando tem algum erro para a textbox1 End Try End Sub Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click limpar_dados() 'função limpar textbox End Sub Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click Me.Close() 'fecha o fomuário principal.Show() 'executa o formulário principal End Sub Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then 75 MaskedTextBox1.Enabled = True Else MaskedTextBox1.Enabled = False End If End Sub Private Sub TextBox1_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = Chr(13) Then Button2_Click(Me, EventArgs.Empty) 'Evento click, quando o usuario digita enter o botão é clickado TextBox2.Focus() 'após pesquisar o cursor é movido para a textbox 2 End If End Sub Private Sub TextBox2_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox3.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub TextBox3_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True Button1.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub TextBox2_TextChanged(sender As System.Object, e As Sys- tem.EventArgs) Handles TextBox2.TextChanged Try If Val(TextBox1.Text) > 0 And TextBox3.Text > " " And MaskedTextBox1.Text > " " Then conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.Connection = con 76 con.Open() 'Abre a conexão com o banco de dados cmd.CommandType = System.Data.CommandType.Text cmd.CommandText = "select cod_usuario, nome_usuario from usuario where nome_usuario like '%" & TextBox2.Text & "%'" reader = cmd.ExecuteReader() reader.Read() TextBox2.Text = reader("nome_usuario") cod = reader("cod_usuario") reader.Close() 'Fecha a leitura com o banco de dados con.Close() 'Fecha a conexão com o banco de dados End If Catch ex As Exception End Try End Sub Private Sub CheckBox3_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox3.CheckedChanged If CheckBox3.Checked = True Then TextBox2.Enabled = True Else TextBox2.Enabled = False End If End Sub Private Sub CheckBox2_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox2.CheckedChanged If CheckBox2.Checked = True Then TextBox3.Enabled = True Else TextBox3.Enabled = False End If End Sub Private Sub TextBox3_TextChanged(sender tem.EventArgs) Handles TextBox3.TextChanged If CheckBox3.Checked = True Then Try As System.Object, e As Sys- 77 If TextBox2.Text > " " And TextBox1.Text > " " Then conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.Connection = con con.Open() 'Abre a conexão com o banco de dados cmd.CommandType = System.Data.CommandType.Text cmd.CommandText = "select cod_pagamento from usuario where tipo_pagamento like '%" & TextBox3.Text & "%'" reader = cmd.ExecuteReader() reader.Read() cod_pagamento = reader("cod_pagamento") reader.Close() 'Fecha a leitura com o banco de dados con.Close() 'Fecha a conexão com o banco de dados End If Catch ex As Exception End Try End If End Sub Private Sub Venda_KeyDown(sender As Object, e As Sys- tem.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button4.PerformClick() End If End Sub Private Sub Venda_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Label1.Text = Date.Today End Sub End Class „********************************************************************** 'SUPORTE TÉCNICO - CONTROLE DE ESTOQUE '********************************************************************** ‟ SUPORTE_TECNICO.VB ' 78 Imports System.Net.Mail Public Class Suporte_tecnico Dim smtpServer As New SmtpClient() Dim mail As New MailMessage Private Sub btn_enviar_Click(sender As System.Object, e As System.EventArgs) Handles btn_enviar.Click ' Try If txt_assunto.Text > " " And txt_mensagem.Text > " " And txt_nome.Text > " " Then smtpServer.Credentials = New Net.NetworkCredential("[email protected]", "etec@etec") ProgressBar1.Value = ProgressBar1.Value + 1 smtpServer.Port = 25 ProgressBar1.Value = ProgressBar1.Value + 1 smtpServer.Host = "smtp.live.com" ProgressBar1.Value = ProgressBar1.Value + 1 smtpServer.EnableSsl = True mail.From = New MailAddress("[email protected]") mail.To.Add("[email protected]") mail.Subject = txt_assunto.Text mail.Body = txt_nome.Text & Chr(13) & txt_email.Text & Chr(13) & txt_mensagem.Text smtpServer.Send(mail) MsgBox("Mensagem enviada com sucesso!", MsgBoxStyle.OkOnly, "Solicitação de suporte") txt_assunto.Clear() txt_email.Clear() txt_mensagem.Clear() txt_nome.Clear() Else MsgBox("Verifique os campos e tente novamente.", vbExclamation) End If ' Catch ex As Exception ' MsgBox(ex.Message) 79 ' End Try End Sub Private Sub btn_fechar_Click(sender As System.Object, e As System.EventArgs) Handles btn_fechar.Click Me.Close() principal.Show() End Sub Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick ProgressBar1.Increment(1) End Sub End Class „********************************************************************** 'RELATÓRIO DE VENDAS '********************************************************************** ‟ RELATORIO_VENDAS.VB ' Public Class Relatorio_Venda Private Sub SairToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SairToolStripMenuItem.Click Me.Close() principal.Show() End Sub End Class „********************************************************************** 'RELATÓRIO DE PRODUTOS '********************************************************************** ‟ RELATORIO_PRODUTO.VB ' Public Class Relatorio_Produto Private Sub SairToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SairToolStripMenuItem.Click 80 Me.Close() principal.Show() End Sub End Class „********************************************************************** 'PRODUTO SEM CODIGO DE BARRAS '********************************************************************** ‟ PRODUTO_SEM_CODBARRAS.VB ' Module produto_sem_codBarras Public dimi As Integer Public Sub cod_barras() Try Dim cod_b As String conexao_mysql() cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con con.Open() cmd.CommandText = "select cod_barras from produtos where LEN(cod_barras) <> 14 and LEN(cod_barras) <> 13" reader = cmd.ExecuteReader() While reader.Read() cod_b = reader("cod_barras") dimi = cod_b + 1 End While con.Close() Catch ex As Exception MsgBox(ex.Message & "Contate seu administrador") End Try End Sub End Module „********************************************************************** 'TELA PRINCIPAL 81 '********************************************************************** ‟ PRINCIPAL.VB ' Public Class principal Private Sub SairToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SairToolStripMenuItem1.Click Application.Exit() End Sub Private Sub LogoffToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LogoffToolStripMenuItem.Click Me.Close() login.Show() login.TextBox1.Focus() End Sub Private Sub btnconsult_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnconsult.Click CadastroProduto.Show() End Sub Private Sub CategoriasToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CategoriasToolStripMenuItem.Click NovaCategoria.Show() End Sub Private Sub ProdutoToolStripMenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProdutoToolStripMenuItem4.Click CadastroProduto.Show() End Sub Private Sub UsuárioToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UsuárioToolStripMenuItem2.Click CadastroUsuario.Button1.Enabled = False CadastroUsuario.Label6.Enabled = False CadastroUsuario.TextBox3.Enabled = False CadastroUsuario.Show() End Sub 82 Private Sub ProdutoToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProdutoToolStripMenuItem2.Click Consulta_categoria.Show() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ProdutoToolStripMenuItem1.PerformClick() End Sub Private Sub CategoriaToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CategoriaToolStripMenuItem1.Click AlterarCategoria.Text = "EXCLUIR CATEGORIA" AlterarCategoria.Button2.Text = "Excluir" AlterarCategoria.Show() End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click sair() End Sub Private Sub LinhaToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinhaToolStripMenuItem1.Click AlterarLinha.Text = "EXCLUIR LINHA" AlterarLinha.Button2.Text = "Excluir" AlterarLinha.Show() End Sub Private Sub MarcaToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MarcaToolStripMenuItem1.Click AlterarMarca.Text = "Excluir Marca" AlterarMarca.Button2.Text = "Excluir" AlterarMarca.Show() End Sub Private Sub UsuárioToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UsuárioToolStripMenuItem1.Click CadastroUsuario.Text = "EXCLUSÃO DE USUÁRIO" CadastroUsuario.Button5.Text = "Excluir" 83 CadastroUsuario.Button5.Enabled = False CadastroUsuario.Show() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Consulta.Show() End Sub Private Sub LinhaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinhaToolStripMenuItem.Click AlterarLinha.Show() End Sub Private Sub MarcaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MarcaToolStripMenuItem.Click AlterarMarca.Show() End Sub Private Sub ProdutoToolStripMenuItem_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProdutoToolStripMenuItem.Click AlterarProduto.Show() End Sub Private Sub ProdutoToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProdutoToolStripMenuItem1.Click AlterarProduto.Text = "EXCLUSÃO DE PRODUTO" AlterarProduto.Button5.Text = "Excluir" AlterarProduto.Show() End Sub Private Sub ProdutoToolStripMenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProdutoToolStripMenuItem3.Click Consulta.Show() End Sub Private Sub UsuárioToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UsuárioToolStripMenuItem.Click CadastroUsuario.Text = "ALTERAÇÃO DE USUÁRIO" CadastroUsuario.Button5.Text = "Alterar" CadastroUsuario.Button5.Enabled = False 84 CadastroUsuario.Show() End Sub Private Sub LinhaToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinhaToolStripMenuItem2.Click Consulta_linha.Show() End Sub Private Sub MarcaToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MarcaToolStripMenuItem2.Click Consulta_Marca.Show() End Sub Private Sub EstoqueToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EstoqueToolStripMenuItem.Click Relatorio_Produto.Show() End Sub Private Sub VendaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VendaToolStripMenuItem.Click Relatorio_Venda.Show() End Sub Private Sub NovaMarcaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NovaMarcaToolStripMenuItem.Click NovaCategoria.Text = "CADASTRO DA MARCA" NovaCategoria.Label1.Text = "Nome da Marca:" NovaCategoria.Show() End Sub Private Sub VendaToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VendaToolStripMenuItem1.Click Venda.Show() 'executa o fumulário venda End Sub Private Sub VendaToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VendaToolStripMenuItem2.Click Venda.Button1.Text = "Excluir" Venda.Show() End Sub 85 Private Sub NovaLinhaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NovaLinhaToolStripMenuItem.Click NovaCategoria.Text = "CADASTRO DA LINHA" NovaCategoria.Label1.Text = "Nome da Linha:" NovaCategoria.Show() End Sub Private Sub UsuárioToolStripMenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UsuárioToolStripMenuItem3.Click Consulta_Usuario.Show() End Sub Private Sub FunçõesDeUsuarioToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FunçõesDeUsuarioToolStripMenuItem.Click Acessos.Text = "Configuções do Sistema" Acessos.Show() End Sub 'fechar a aplicação ao clicar no botão fechar (X) Private Sub principal_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing End Sub Private Sub principal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If dados(0, 0) = 1 Then 'condição para habilitar alteração de categoria CategoriaToolStripMenuItem.Enabled = True Else CategoriaToolStripMenuItem.Enabled = False End If If dados(0, 1) = 1 Then 'condição para habilitar a alteração de linha LinhaToolStripMenuItem.Enabled = True Else LinhaToolStripMenuItem.Enabled = False End If If dados(0, 2) = 1 Then 'condição para habilitar a alteração de marca MarcaToolStripMenuItem.Enabled = True 86 Else MarcaToolStripMenuItem.Enabled = False End If If dados(0, 3) = 1 Then 'condição para habilitar a alteração de produto ProdutoToolStripMenuItem.Enabled = True Else ProdutoToolStripMenuItem.Enabled = False End If If dados(0, 4) = 1 Then 'condição para habilitar a alteração de venda VendaToolStripMenuItem1.Enabled = True Else VendaToolStripMenuItem1.Enabled = False End If If dados(0, 5) = 1 Then 'condição para habilitar a alteração de usuário UsuárioToolStripMenuItem.Enabled = True Else UsuárioToolStripMenuItem.Enabled = False End If 'exclusão If dados(0, 6) = 1 Then 'condição para habilitar a exclusão de categoria CategoriaToolStripMenuItem1.Enabled = True Else CategoriaToolStripMenuItem1.Enabled = False End If If dados(0, 7) = 1 Then 'condição para habilitar a exclusão de linha LinhaToolStripMenuItem1.Enabled = True Else LinhaToolStripMenuItem1.Enabled = False End If If dados(0, 8) = 1 Then 'condição para habilitar a exclusão de marca MarcaToolStripMenuItem1.Enabled = True Else MarcaToolStripMenuItem1.Enabled = False End If 87 If dados(0, 9) = 1 Then 'condição para habilitar a exclusão de produto ProdutoToolStripMenuItem1.Enabled = True Button2.Enabled = True Else ProdutoToolStripMenuItem1.Enabled = False Button2.Enabled = False End If If dados(0, 10) = 1 Then 'condição para habilitar a exclusão de Itens venda ItensVendaToolStripMenuItem1.Enabled = True Else ItensVendaToolStripMenuItem1.Enabled = False End If If dados(0, 11) = 1 Then 'condição para habilitar a exclusão de venda VendaToolStripMenuItem2.Enabled = True Else VendaToolStripMenuItem2.Enabled = False End If If dados(0, 12) = 1 Then 'condição para habilitar a exclusão de usuario UsuárioToolStripMenuItem1.Enabled = True Else UsuárioToolStripMenuItem1.Enabled = False End If 'cadastro If dados(0, 13) = 1 Then 'condição para habilitar o cadastro de nova categoria CategoriasToolStripMenuItem.Enabled = True Else CategoriasToolStripMenuItem.Enabled = False End If If dados(0, 14) = 1 Then 'condição para habilitar o cadastro de nova categoria NovaLinhaToolStripMenuItem.Enabled = True Else NovaLinhaToolStripMenuItem.Enabled = False End If If dados(0, 15) = 1 Then 'condição para habilitar o cadastro de nova marca 88 NovaMarcaToolStripMenuItem.Enabled = True Else NovaMarcaToolStripMenuItem.Enabled = False End If If dados(0, 16) = 1 Then 'condição para habilitar o cadastro de produto ProdutoToolStripMenuItem4.Enabled = True btnconsult.Enabled = True Else ProdutoToolStripMenuItem4.Enabled = False btnconsult.Enabled = False End If If dados(0, 17) = 1 Then 'condição para habilitar o cadastro de usuário UsuárioToolStripMenuItem2.Enabled = True Else UsuárioToolStripMenuItem2.Enabled = False End If 'habilitar configuração de sistema If dados(0, 0) = 1 And dados(0, 1) = 1 And dados(0, 2) = 1 And dados(0, 3) = 1 And dados(0, 4) = 1 And dados(0, 5) = 1 And dados(0, 6) = 1 And dados(0, 7) = 1 And dados(0, 8) = 1 And dados(0, 9) = 1 And dados(0, 10) = 1 And dados(0, 11) = 1 And dados(0, 12) = 1 And dados(0, 13) = 1 And dados(0, 14) = 1 And dados(0, 15) = 1 And dados(0, 16) = 1 And dados(0, 17) = 1 And dados(0, 18) = 1 Then FunçõesDeUsuarioToolStripMenuItem.Enabled = True Else FunçõesDeUsuarioToolStripMenuItem.Enabled = False End If 'habilitar consulta de usuário If dados(0, 5) = 1 Or dados(0, 12) = 1 And dados(0, 17) = 1 Then UsuárioToolStripMenuItem3.Enabled = True Else UsuárioToolStripMenuItem3.Enabled = False End If 'habilitar a função atualizar If dados(0, 18) = 1 Then 89 AtualizarToolStripMenuItem.Enabled = True Else AtualizarToolStripMenuItem.Enabled = False End If 'habilitar a função relatório If dados(0, 19) = 1 Then Button3.Enabled = True EstoqueToolStripMenuItem.Enabled = True VendaToolStripMenuItem.Enabled = True Else Button3.Enabled = False EstoqueToolStripMenuItem.Enabled = False VendaToolStripMenuItem.Enabled = False End If Label4.Text = Date.Today End Sub Private Sub CategoriaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CategoriaToolStripMenuItem.Click AlterarCategoria.Show() End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Label3.Text = TimeString End Sub Private Sub VendasToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VendasToolStripMenuItem.Click Consulta_venda.Show() End Sub Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick confere_qtde() 'método que confere a contida no banco de dados End Sub Private Sub ItensVendaToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ItensVendaToolStripMenuItem1.Click 90 Itens_Venda.Show() End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Relatorio_Produto.Show() End Sub Private Sub AtualizarToolStripMenuItem_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AtualizarToolStripMenuItem.Click AtualizarProduto.Show() End Sub Private Sub ContatarOSuporteToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContatarOSuporteToolStripMenuItem.Click Suporte_tecnico.ShowDialog() End Sub Private Sub AjudaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AjudaToolStripMenuItem.Click System.Diagnostics.Process.Start("C:\Users\Adeildo\Desktop\Perfumaria 1.0(Beta) sql_server\Perfumaria - 1.0(Beta)\Perfumaria - 1.0(Beta)\Resources\ajuda_estoque.htm") End Sub End Class „********************************************************************** 'CONSULTA GERAL '********************************************************************** ‟ CONSULTA.VB ' Public Class Consulta Dim dacad, data_froma As Date Dim tabcategoria, tablinha, tabmarca, prod, codigop, descricao, VLR_UNITARIO, BARRAS As String Dim qtde As Integer Private Sub consulta_grid() 'método para para preencher o datagrid 91 reader = cmd.ExecuteReader() While (reader.Read) codigop = reader("cod_produto") BARRAS = reader("cod_barras") prod = reader("nome_produto") descricao = reader("descricao_produto") qtde = reader("qtde_produto") VLR_UNITARIO = Format(reader("vlr_unitario"), "Currency") tabcategoria = reader("nome_categoria") tabmarca = reader("nome_marca") tablinha = reader("nome_linha") dacad = reader("data_cads_prod") DataGridView1.Rows.Add(New String() {codigop, BARRAS, prod, descricao, qtde, VLR_UNITARIO, tabcategoria, tabmarca, tablinha, dacad}) End While con.Close() End Sub Private Sub limpar_campos() 'método para limpar os campos. TextBox1.Clear() TextBox2.Clear() TextBox3.Clear() TextBox4.Clear() TextBox6.Clear() TextBox7.Clear() TextBox8.Clear() TextBox9.Clear() TextBox10.Clear() End Sub 'fim do método limpar Private Sub desabilitar_checbox() 'método apra desabailitar a checagem da checkbox CheckBox1.Checked = False CheckBox2.Checked = False CheckBox3.Checked = False End Sub 'fim do método check 92 Private Sub instrucao_checbox() 'método para checbox. será executa as instrções abaixo quando o checar for verdadeiro conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abrre a conexão 'Pesquida feita pela data de cadastro do produto If CheckBox1.Checked = True Then cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) order by nome_produto" DataGridView1.Rows.Clear() 'limpa os dados e carrega o grid novamente consulta_grid() 'Método consulta, adiciona dados da pesquia ao grid. limpar_campos() 'método para limpar as textbox. No momento em que é habilitado o objeto checkbox3 os campos são limpos. ElseIf CheckBox2.Checked = True Then cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) order by cod_produto desc" DataGridView1.Rows.Clear() 'limpa os dados e carrega o grid novamente consulta_grid() 'Método consulta, adiciona dados da pesquia ao grid. limpar_campos() 'método para limpar as textbox. No momento em que é habilitado o objeto checkbox3 os campos são limpos. ElseIf CheckBox3.Checked = True Then cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) order by data_cads_prod desc" DataGridView1.Rows.Clear() 'limpa os dados e carrega o grid novamente consulta_grid() 'Método consulta, adiciona dados da pesquia ao grid. limpar_campos() 'método para limpar as textbox. No momento em que é habilitado o objeto checkbox3 os campos são limpos. Else grid_default() 'método defaul para datagrid DataGridView1.Rows.Clear() 'limpa os dados e carrega o grid novamente 93 consulta_grid() 'Método consulta, adiciona dados da pesquia ao grid. End If End Sub 'fim do método para as checbox - ordenação. Private Sub TextBox10_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox10.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox1.Focus() End If End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then 94 e.Handled = True End If If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox3.Focus() End If End Sub Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox2.Focus() End If End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox9.Focus() End If End Sub Private Sub TextBox9_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox9.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox7.Focus() End If End Sub Private Sub TextBox7_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox7.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox8.Focus() End If 95 End Sub Private Sub TextBox8_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox8.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox6.Focus() End If End Sub Private Sub TextBox6_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox4.Focus() End If End Sub Private Sub TextBox4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. If KeyAscii = 0 Then 96 e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox10.Focus() End If If e.KeyChar = "/" Or e.KeyChar = "-" Then e.Handled = True SendKeys.Send("") End If If Len(TextBox4.Text) = 2 Then TextBox4.Text = "-" + TextBox4.Text Else TextBox1.Clear() End If If Len(TextBox4.Text) = 5 Then TextBox4.Text = "-" + TextBox4.Text End If End Sub Private Sub Consulta_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End Sub Private Sub Consulta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try With DataGridView1 97 'campos do datagrid .Columns.Add("1", "Código") .Columns.Add("2", "Cod.Barras") .Columns.Add("3", "Produto") .Columns.Add("4", "Descrição") .Columns.Add("5", "Quantidade") .Columns.Add("6", "Valor Unit.") .Columns.Add("7", "Categoria") .Columns.Add("8", "Marca") .Columns.Add("9", "Linha") .Columns.Add("10", "Data Cadastro") 'cor de fundo .BackgroundColor = Color.White 'Cabeçalho .EnableHeadersVisualStyles = False .ColumnHeadersDefaultCellStyle.Font = New Font("Bookman Old Style", 14, FontStyle.Bold) .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSize- Mode.AutoSizeToAllHeaders 'auto dimensiona o cabeçalho .ColumnHeadersDefaultCellStyle.ForeColor = Color.White .ColumnHeadersDefaultCellStyle.BackColor = Color.Black 'linha .AlternatingRowsDefaultCellStyle.BackColor = Color.DarkGray .AlternatingRowsDefaultCellStyle.ForeColor = Color.Purple .AlternatingRowsDefaultCellStyle.Font = New Font("Bookman Old Style", 12, FontStyle.Regular) .AlternatingRowsDefaultCellStyle.Alignment = DataGridViewContentA- lignment.MiddleLeft 'colunha .DefaultCellStyle.Font = New Font("Bookman FontStyle.Regular) .DefaultCellStyle.ForeColor = Color.Black Old Style", 12, 98 .DefaultCellStyle.BackColor = Color.DarkCyan .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft End With conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abrre a conexão cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria)" consulta_grid() 'método para enviar as informações do banco de dados para o datagrid Catch erro As Exception MsgBox(erro.Message & "Contate seu administrador.", vbCritical) End Try End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged Try If TextBox2.Text <> " " Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abrre a conexão 'Pesquida feita pelo nome do produto cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where nome_produto like '%" & Trim(TextBox2.Text) & "%'" DataGridView1.Rows.Clear() 'limpa os dados e carrega o grid novamente consulta_grid() 'método para enviar as informações do banco de dados para o datagrid desabilitar_checbox() 'método para desabilitar as checkbox. End If 99 Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub TextBox9_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox9.TextChanged Try 'Tratando erro If TextBox9.Text <> " " Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abrre a conexão ' Pesquisa feita pela marca do produto cmd.CommandText = "select A.*,B.*,C.*, D.* from marcas A inner join produtos B on(B.cod_marca=A.cod_marca)inner join linha C on(B.cod_linha=C.cod_linha) inner join categoria D on(B.cod_categoria=D.cod_categoria) where nome_marca like '%" & Trim(TextBox9.Text) & "%'" DataGridView1.Rows.Clear() 'limpa os dados e carrega o grid novamente consulta_grid() 'Método consulta, adicionar dados pesquisa ao grid. desabilitar_checbox() 'método para desabilitar as checkbox. End If Catch ex As Exception MsgBox(ex.Message) 'mesagem de trativa de erro End Try 'fim da trativa de erros. End Sub Private Sub TextBox8_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox8.TextChanged Try 'Tratando erro If TextBox8.Text <> " " Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abrre a conexão 'Pesquida feita pela linha do produto 100 cmd.CommandText = "select A.*,B.*,C.*, D.* from linha A inner join produtos B on(B.cod_linha=A.cod_linha) inner join marcas C on(B.cod_marca=C.cod_marca) inner join categoria D on(B.cod_categoria=D.cod_categoria) where nome_linha like '%" & Trim(TextBox8.Text) & "%'" DataGridView1.Rows.Clear() 'limpa os dados e carrega o grid novamente consulta_grid() 'Método consulta, adiciona dados da pequisa no grid. desabilitar_checbox() 'método para desabilitar as checkbox. End If Catch ex As Exception MsgBox(ex.Message) 'mesagem de trativa de erro End Try 'fim da trativa de erros. End Sub Private Sub TextBox7_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox7.TextChanged Try 'Tratando erro If TextBox7.Text <> " " Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abrre a conexão 'Pesquis feita categoria do produto cmd.CommandText = "select A.*,B.*,C.*, D.* from categoria A inner join produtos B on(B.cod_categoria=A.cod_categoria) inner join marcas C on(B.cod_marca=C.cod_marca) inner join linha D on(B.cod_linha=D.cod_linha) where nome_categoria like '%" & Trim(TextBox7.Text) & "%'" DataGridView1.Rows.Clear() 'limpa os dados e carrega o grid novamente consulta_grid() 'Método consulta, adiciona os dados pesquisa ao grid. desabilitar_checbox() 'método para desabilitar as checkbox. End If Catch ex As Exception MsgBox(ex.Message) 'mesagem de trativa de erro End Try 'fim da trativa de erros. End Sub 101 Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged Try 'Tratando erro If TextBox3.Text <> " " Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abrre a conexão 'Pesquida feita pela descrição do produto cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where descricao_produto like '%" & Trim(TextBox3.Text) & "%'" DataGridView1.Rows.Clear() 'limpa os dados e carrega o grid novamente consulta_grid() 'Método consulta, adiciona dados da pesquia ao grid. desabilitar_checbox() 'método para desabilitar as checkbox. End If Catch ex As Exception MsgBox(ex.Message) 'mesagem de trativa de erro End Try 'fim da trativa de erros. End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged Try 'Tratando erro If TextBox1.Text <> " " Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abrre a conexão 'Pesquisa feita pelo código de barras cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where cod_barras like '%" & Trim(TextBox1.Text) & "%'" 102 DataGridView1.Rows.Clear() 'limpa os dados e carrega o grid novamente consulta_grid() 'Método consulta, adiciona dados da pesquia ao grid. desabilitar_checbox() 'método para desabilitar as checkbox. End If Catch ex As Exception MsgBox(ex.Message) 'mesagem de trativa de erro End Try 'fim da trativa de erros. End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged Try If TextBox4.Text <> " " Then 'TextBox4.Text = Format(TextBox4.Text, " - - ") 'inverte_data = Format(CType(TextBox4.Text, Date), "yyyy-MM-dd") conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abrre a conexão 'Pesquida feita pela data de cadastro do produto cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where data_cads_prod like '%" & Trim(TextBox4.Text) & "%'" DataGridView1.Rows.Clear() 'limpa os dados e carrega o grid novamente consulta_grid() 'Método consulta, adiciona dados da pesquia ao grid. desabilitar_checbox() 'método para desabilitar as checkbox. End If Catch ex As Exception 'MsgBox(ex.Message) 'mesagem de trativa de erro End Try 'fim da trativa de erros. End Sub Private Sub TextBox10_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox10.TextChanged Try 'Tratando erro 103 If TextBox10.Text <> " " Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abrre a conexão 'Pesquisa feita pelo código do produto cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where cod_produto like '%" & Trim(TextBox10.Text) & "%'" DataGridView1.Rows.Clear() 'limpa os dados e carrega o grid novamente consulta_grid() 'Método consulta, adiciona dados da pesquia ao grid. desabilitar_checbox() 'método para desabilitar as checkbox. End If Catch ex As Exception MsgBox(ex.Message) 'mesagem de trativa de erro End Try 'fim da trativa de erros. End Sub Private Sub TextBox6_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox6.TextChanged Try 'Tratando erro If TextBox6.Text <> " " Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abrre a conexão 'Pesquisa feita pela quantidade produto cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where qtde_produto like '%" & Trim(TextBox6.Text) & "%'" DataGridView1.Rows.Clear() 'limpa os dados e carrega o grid novamente consulta_grid() 'Método consulta, adiciona dados da pesquia ao grid. desabilitar_checbox() 'método para desabilitar as checkbox. 104 End If Catch ex As Exception MsgBox(ex.Message) 'mesagem de trativa de erro End Try 'fim da trativa de erros. End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Close() 'fecha o formuário principal.Show() 'executa o formulário principal End Sub Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged Try 'ordena por data instrucao_checbox() 'método para ordenar em ordem alfabética, descrecente e por data Catch ex As Exception MsgBox(ex.Message) 'mesagem de trativa de erro End Try 'fim da trativa de erros. End Sub Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged Try 'ordena por ordem descrecente instrucao_checbox() 'método para ordenar em ordem alfabética, descrecente e por data Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged Try 'ordena alfabeticamente 105 instrucao_checbox() 'método para ordenar em ordem alfabética, descrecente e por data Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub CheckBox2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox2.Click CheckBox1.Checked = False CheckBox3.Checked = False End Sub Private Sub CheckBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.Click CheckBox2.Checked = False CheckBox3.Checked = False End Sub Private Sub CheckBox3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox3.Click CheckBox1.Checked = False CheckBox2.Checked = False End Sub End Class „********************************************************************** 'EXCLUSÃO DE ÍTENS DE VENDAS '********************************************************************** ‟ ITENS_VENDAS.VB ' Public Class Itens_Venda Dim total As Double Dim quantidade, qtde2, venda As Integer Private Function limpar_dados() 'Função apagar 'Instrução para o botão apagar TextBox1.Clear() 106 TextBox2.Clear() TextBox3.Clear() TextBox4.Clear() TextBox5.Clear() TextBox6.Clear() TextBox7.Clear() TextBox8.Clear() TextBox1.Enabled = True 'Função abilitar, abilita determinados objetos no formulário TextBox3.Enabled = True Button1.Enabled = False TextBox1.Focus() 'função focus, quando o botão apagar e clickado o cursor irá para a textbox1 Return TextBox1.Text() End Function Private Function consulta_banco() 'função executa para a atulização da quantidade e valor na textbox 6 e 7 deste fórmulário. conexao_mysql() 'procedure para a de conexção com o banco de dados e variaveis cmd e con cmd.Connection = con con.Open() cmd.CommandType = System.Data.CommandType.Text cmd.CommandText = "select qtde_produto, vlr_unitario from produtos where cod_produto = " & cod reader = cmd.ExecuteReader() reader.Read() TextBox6.Text = reader("qtde_produto") TextBox7.Text = reader("vlr_unitario") reader.Close() 'Fecha a leitura com o banco de dados con.Close() 'Fecha a conexão com o banco de dados Return 1 End Function Private Sub excluir() TextBox1.Enabled = False 107 TextBox2.Enabled = False TextBox3.Enabled = False TextBox5.Enabled = False Button1.Enabled = True End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try 'Tratando erro If CInt(TextBox1.Text) > 0 And CInt(TextBox2.Text) > 0 Then If MsgBox("Deseja excluir esta categoria?", vbYesNo, "confirma") = vbYes Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados With cmd .CommandType = CommandType.Text .CommandText = "Delete FROM itens_venda where cod_item = " & CInt(Trim(TextBox1.Text)) 'O tipo de dados dever ser integer e a função trim romove os espaços iniciais e finais da textbox .Parameters.Add("itens_venda", OleDb.OleDbType.VarChar) .Parameters("itens_venda").Value = CInt(TextBox1.Text) 'Função trim. Romove espaços iniciais e finsais da textbox .ExecuteNonQuery() End With con.Close() 'Fecha a conexão com o banco de dados MsgBox("Registro excluído com êxito!", vbInformation) limpar_dados() 'função para limpar os dados após a exclusão de um item. TextBox6.Clear() 'limpa a textbox TextBox7.Clear() 'limpa as textbox Else MsgBox("Exclusão cancelada!", vbExclamation) TextBox1.Focus() 'função focus, quando a exclusão é cancelada o cursor volta para a textbox1 End If 108 Else MsgBox("Informação para exclusão inválida!", vbCritical) TextBox1.Focus() 'função focus, quando a algum dado incorreto para pesquisa o cursor volta para a textbox1 End If Catch ex As Exception MsgBox(ex.Message) TextBox1.Enabled = True 'Função abilitar, abilita determinados objetos no formulário Button2.Enabled = False TextBox1.Focus() 'função focus, quando a mensagem de erro é exibida na tela o cursor volta para a textbox1 End Try End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Try 'Tratando erro conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.Connection = con con.Open() 'Abre a conexão com o banco de dados cmd.CommandType = System.Data.CommandType.Text If Val(TextBox1.Text) > 0 Then 'Condição para a pesquisa no banco de dados cmd.CommandText B.nome_produto from = itens_venda "select A A.*, inner B.qtde_produto, join B.vlr_unitario, produtos B on (A.cod_produto=B.cod_produto) where cod_item = " & CInt(Trim(TextBox1.Text)) 'Só pode haver valores inteiros(número). Função trim romove espaços iniciais e finais da textbox ElseIf Val(TextBox3.Text) > 0 Then cmd.CommandText B.nome_produto from = itens_venda "select A A.*, inner B.qtde_produto, join B.vlr_unitario, produtos B on (A.cod_produto=B.cod_produto) where qtde_item = " & CInt(Trim(TextBox3.Text)) Else MsgBox("Dados inválidos para pesquisa!", vbCritical) TextBox1.Focus() 'função focus, quando a algum campo de pesquisa inválido o cursor é movido para a testbox1 109 End If reader = cmd.ExecuteReader() reader.Read() TextBox1.Text = reader("cod_item") TextBox2.Text = reader("cod_venda") TextBox5.Text = reader("cod_produto") cod = reader("cod_produto") TextBox3.Text = reader("qtde_item") TextBox4.Text = reader("vlr_total_item") TextBox6.Text = reader("qtde_produto") quantidade = reader("qtde_item") TextBox7.Text = reader("vlr_unitario") TextBox8.Text = reader("nome_produto") reader.Close() 'Fecha a leitura com o banco de dados con.Close() 'Fecha a conexão com o banco de dados excluir() 'objeto para desabilitar os campos e habilitar o botão exluir TextBox2.Focus() 'quando a select é executado com sucesso o cursor irá para a textbox2 por que a textbox1 fica desabilitada Catch ex As Exception MsgBox(ex.Message) TextBox1.Focus() 'função focus, move o cursor quando tem algum erro para a textbox1 End Try End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click limpar_dados() 'Função limpar. apaga todos os dados pequisado nas textboxs TextBox8.Clear() TextBox6.Clear() TextBox7.Clear() End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) 110 KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os número. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Chr(13) Then Button2_Click(Me, EventArgs.Empty) 'Evento click, quando o usuario digita enter o botão é clickado TextBox2.Focus() 'após pesquisar o cursor é movido para a textbox 2 End If End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os número. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox5.Focus() 'função focus, move o cursor para o campo especificado. 111 End If End Sub Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os número. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Chr(13) Then Button2_Click(Me, EventArgs.Empty) TextBox4.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub TextBox5_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox5.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os número. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True 112 End If If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox3.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub TextBox4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os número. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True Button1.Focus() End If End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Close() 'fecha o formulário principal.Show() 'executa o formulário príncipal End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged TextBox4.Text = Format(TextBox4.Text, "Currency") End Sub 113 Private Sub TextBox7_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox7.TextChanged TextBox7.Text = Format(TextBox7.Text, "Currency") End Sub Private Sub Itens_Venda_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button4.PerformClick() End If End Sub End Class „********************************************************************** 'CONSULTA DE VENDAS '********************************************************************** ‟ CONSULTA_VENDAS.VB ' Public Class Consulta_venda Dim codigo_item, qtde_item, COD_VENDA, QTDE_VENDA As Integer Dim DATA_VENDA, HORA_VENDA As DateTime Dim NOME_USUARIO, PAGAMENTO, VLR_TOTAL, VLR_T_VENDA, CODIGO_PRODUTO, BARRAS, NOME_PRODUTO As String Private Sub consulta_grid() 'método para consultar os dados no banco de dados, não há condição para esta consulta. reader = cmd.ExecuteReader() While (reader.Read) 'TABELA ITENS VENDA codigo_item = reader("cod_item") qtde_item = reader("qtde_item") VLR_TOTAL = Format(reader("vlr_total_item"), "Currency") CODIGO_PRODUTO = reader("cod_produto") BARRAS = reader("cod_barras") NOME_PRODUTO = reader("nome_produto") 'TABELA VENDA 114 COD_VENDA = reader("cod_venda") NOME_USUARIO = reader("nome_usuario") PAGAMENTO = reader("tipo_pagamento") DATA_VENDA = reader("data_venda") HORA_VENDA = reader("hora_venda") QTDE_VENDA = reader("qtde_venda") VLR_T_VENDA = Format(reader("vlr_total_venda"), "Currency") DataGridView1.Rows.Add(New String() {codigo_item, qtde_item, VLR_TOTAL, NOME_PRODUTO, CODIGO_PRODUTO, BARRAS, COD_VENDA, NOME_USUARIO, PAGAMENTO, DATA_VENDA, HORA_VENDA, QTDE_VENDA, VLR_T_VENDA}) End While con.Close() End Sub 'método para consulta com condição Private Sub consulta_com_condicao() Try CheckBox1.Checked = False CheckBox2.Checked = False CheckBox3.Checked = False conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão If TextBox1.Text <> " " Then cmd.CommandText = "select A.*, B.*, C.nome_usuario, D.tipo_pagamento, E.nome_produto, E.cod_barras, E.cod_produto from itens_venda A inner join venda B on (A.cod_venda = B.cod_venda) inner join usuario C on (B.cod_usuario = C.cod_usuario) inner join forma_pagamento D on (B.cod_pagamento=D.cod_pagamento) inner join produtos E on (A.cod_produto=E.cod_produto) where cod_item like '%" & Trim(TextBox1.Text) & "%'" & "or nome_produto like '%" & Trim(TextBox1.Text) & "%'" & "or cod_barras like '%" & Trim(TextBox1.Text) & "%'" & "or tipo_pagamento like '%" & Trim(TextBox1.Text) & "%'" & "or nome_usuario like '%" & Trim(TextBox1.Text) & "%'" & "or vlr_total_venda like '%" & Trim(TextBox1.Text) & "%'" & "or qtde_venda like '%" & Trim(TextBox1.Text) & "%'" 115 & "or hora_venda like '%" & Trim(TextBox1.Text) & "%'" & "or data_venda like '%" & Trim(TextBox1.Text) & "%'" & "or cod_item like '%" & Trim(TextBox1.Text) & "%'" & "or qtde_item like '%" & Trim(TextBox1.Text) & "%'" & "or vlr_total_item like '%" & Trim(TextBox1.Text) & "%'" 'finalizar a select de vendas Else MsgBox("Campo vazio!", vbExclamation) End If DataGridView1.Rows.Clear() consulta_grid() 'método para preencher o data grid através da pesquisa. Catch erro As Exception MsgBox(erro.Message, vbCritical) End Try End Sub Private Sub ordenacao() 'método para ordenação dos dados no datagrid conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão If CheckBox1.Checked = True Then cmd.CommandText = "select A.*, B.*, C.nome_usuario, D.tipo_pagamento, E.nome_produto, E.cod_barras, E.cod_produto from itens_venda A inner join venda B on (A.cod_venda = B.cod_venda) inner join usuario C on (B.cod_usuario = C.cod_usuario) inner join forma_pagamento D on (B.cod_pagamento=D.cod_pagamento) inner join produtos E on (A.cod_produto=E.cod_produto) order by nome_produto" 'ordena por ordem alfabética. Pode ordenada com o que esta sendo pesquisado ou não. DataGridView1.Rows.Clear() consulta_grid() 'método para preencher o datagrid ElseIf CheckBox2.Checked = True Then cmd.CommandText = "select A.*, B.*, C.nome_usuario, D.tipo_pagamento, E.nome_produto, E.cod_barras, E.cod_produto from itens_venda A inner join venda B on (A.cod_venda = B.cod_venda) inner join usuario C on (B.cod_usuario = C.cod_usuario) inner join forma_pagamento D on (B.cod_pagamento=D.cod_pagamento) inner join produtos E on (A.cod_produto=E.cod_produto) order by cod_item desc" 'Ordena por ordem descrencente. Ordena pelo o que já foi pesquisa ou não. 116 DataGridView1.Rows.Clear() consulta_grid() 'método para preencher o datagrid ElseIf CheckBox3.Checked = True Then cmd.CommandText = "select A.*, B.*, C.nome_usuario, D.tipo_pagamento, E.nome_produto, E.cod_barras, E.cod_produto from itens_venda A inner join venda B on (A.cod_venda = B.cod_venda) inner join usuario C on (B.cod_usuario = C.cod_usuario) inner join forma_pagamento D on (B.cod_pagamento=D.cod_pagamento) inner join produtos E on (A.cod_produto=E.cod_produto) order by data_venda desc" 'ordena por data. Pode ser ordenada por dados digitados ou não. DataGridView1.Rows.Clear() consulta_grid() 'método para preencher o datagrid Else consulta_com_condicao() 'método para consultar os dados na textbox. End If End Sub Private Sub Consulta_venda_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End Sub Private Sub Consulta_venda_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try With DataGridView1 'colunas do datagrid. Campos do datagrid 'tabela itens_venda .Columns.Add("1", "Cód.Item") .Columns.Add("2", "Quant.Item") .Columns.Add("3", "Val.Total") .Columns.Add("4", "Produto") .Columns.Add("5", "Cod.Produto") .Columns.Add("6", "cod.Barras") 'tabela venda 117 .Columns.Add("7", "Cód.Venda") .Columns.Add("8", "Vendedor") .Columns.Add("9", "Pagamento") .Columns.Add("10", "Data") .Columns.Add("11", "Hora") .Columns.Add("12", "Quant.Vend.") .Columns.Add("13", "Total_Venda") 'cor de fundo .BackgroundColor = Color.White 'tamanho da coluna codigo venda .Columns(0).Width = 90 'Cabeçalho .EnableHeadersVisualStyles = False .ColumnHeadersDefaultCellStyle.Font = New Font("Arial", 14, FontStyle.Bold) .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSize- Mode.AutoSizeToAllHeaders 'auto dimensiona o cabeçalho .ColumnHeadersDefaultCellStyle.ForeColor = Color.White .ColumnHeadersDefaultCellStyle.BackColor = Color.Black 'linha .AlternatingRowsDefaultCellStyle.BackColor = Color.DarkGray .AlternatingRowsDefaultCellStyle.ForeColor = Color.Purple .AlternatingRowsDefaultCellStyle.Font = New Font("Arial", 12, FontStyle.Regular) 'colunha .DefaultCellStyle.Font = New Font("Arial", 12, FontStyle.Bold) .DefaultCellStyle.ForeColor = Color.Black .DefaultCellStyle.BackColor = Color.DarkCyan '.DefaultCellStyle.WrapMode = DataGridViewTriState.False 'evita a quebra de linha End With conexao_mysql() 'procedure de conexão e comando (cmd e con) 118 cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão cmd.CommandText = "select A.*, B.*, C.nome_usuario, D.tipo_pagamento, E.nome_produto, E.cod_barras, E.cod_produto from itens_venda A inner join venda B on (A.cod_venda = B.cod_venda) inner join usuario C on (B.cod_usuario = C.cod_usuario) inner join forma_pagamento D on (B.cod_pagamento=D.cod_pagamento) inner join produtos E on (A.cod_produto=E.cod_produto)" consulta_grid() 'método para preencher o datagrid. Tudo que há no banco de dados será enviado para este método. Catch erro As Exception MsgBox(erro.Message & " " & "Contate seu administrador.", vbCritical) End Try End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Close() principal.Show() End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = ","c Then e.Handled = True SendKeys.Send(".") 'converte o ponto para virgula ElseIf e.KeyChar = "/"c Or e.KeyChar = "-"c Then e.Handled = True SendKeys.Send("") 'converte / para If Len(TextBox1.Text) = 2 Then TextBox1.Text = "-" + TextBox1.Text End If If Len(TextBox1.Text) = 5 Then TextBox1.Text = "-" + TextBox1.Text End If End If 119 End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged consulta_com_condicao() 'realiza a consulta de acordo com o que há na textbox. End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged Try ordenacao() 'método para ordenar os dados no datagrid. Ordena alfabeticamente. Catch erro As Exception MsgBox(erro.Message & " " & "Contate seu administrador.", vbCritical) End Try End Sub Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged Try ordenacao() 'método para ordenar os dados no datagrid. Ordem descrencente. Catch erro As Exception MsgBox(erro.Message & " " & "Contate seu administrador.", vbCritical) End Try End Sub Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged Try ordenacao() 'método para ordenar os dados na datagrid. Ordena por data. Catch erro As Exception MsgBox(erro.Message & " " & "Contate seu administrador.", vbCritical) End Try End Sub Private Sub CheckBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.Click If CheckBox2.Checked = True Or CheckBox3.Checked = True Then CheckBox2.Checked = False CheckBox3.Checked = False 120 CheckBox1.Checked = True End If End Sub Private Sub CheckBox2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox2.Click If CheckBox1.Checked = True Or CheckBox3.Checked = True Then CheckBox1.Checked = False CheckBox3.Checked = False CheckBox2.Checked = True End If End Sub Private Sub CheckBox3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox3.Click If CheckBox1.Checked = True Or CheckBox2.Checked = True Then CheckBox1.Checked = False CheckBox2.Checked = False CheckBox3.Checked = True End If End Sub End Class „********************************************************************** 'CONSULTA DE USUÁRIOS '********************************************************************** ‟ CONSULTA_USUARIO.VB ' Public Class Consulta_Usuario Dim codigo_user As Integer Dim nome_user, cpf_user, rg_user, nome_lg, SENHA As String Private Sub consulta_usuario_grid() 'método para preencher o datagrid reader = cmd.ExecuteReader() While (reader.Read) codigo_user = reader("cod_usuario") nome_user = reader("nome_usuario") 121 cpf_user = reader("cpf_usuario") rg_user = reader("rg_usuario") nome_lg = reader("nome_login") SENHA = reader("senha") If CheckBox3.Checked = False Then DataGridView1.Rows.Add(New String() {codigo_user, nome_user, cpf_user, rg_user, nome_lg}) Else DataGridView1.Rows.Add(New String() {codigo_user, nome_user, cpf_user, rg_user, nome_lg, SENHA}) End If End While con.Close() End Sub Private Sub consulta_condicao() 'método para consultar conforme informações fornecidas pelo o usuário. conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão If TextBox1.Text <> " " Then cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where cod_usuario > 1 and (cod_usuario like '%" & Trim(TextBox1.Text) & "%'" & "or nome_usuario like'%" & Trim(TextBox1.Text) & "%'" & "or cpf_usuario like'%" & Trim(TextBox1.Text) & "%'" & "or rg_usuario like '%" & Trim(TextBox1.Text) & "%')" 'Esta selec realiza a consulta no banco de dados pelo nome da categoria ou pelo código da categoria Else MsgBox("Campo vazio!", vbExclamation) End If DataGridView1.Rows.Clear() consulta_usuario_grid() 'método para preencher o datagrd através da pesquida realizada na textbox End Sub 122 Private Sub ordenacao() 'método para ordenar as informações presente no datagrid Try conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão If CheckBox1.Checked = True Then cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where cod_usuario > 1 order by nome_usuario" DataGridView1.Rows.Clear() consulta_usuario_grid() 'método para preencher o datagrid ElseIf CheckBox2.Checked = True Then cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where cod_usuario > 1 order by cod_usuario desc" DataGridView1.Rows.Clear() consulta_usuario_grid() 'método para preencher o datagrid Else consulta_condicao() 'método apra consultar os dado "se houver" na textbox End If Catch erro As Exception MsgBox(erro.Message & " " & "Contate seu administrador", vbCritical) End Try End Sub Private Sub Consulta_Usuario_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End Sub Private Sub Consulta_Usuario_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try With DataGridView1 .Columns.Add("1", "Codigo") 123 .Columns.Add("2", "Nome do Usuário") .Columns.Add("3", "CPF Usuário") .Columns.Add("4", "RG Usuário") .Columns.Add("5", "Nome do Login") .Columns.Add("6", "Senha") 'cor de fundo .BackgroundColor = Color.White 'tamanho da coluna codigo linha .Columns(0).Width = 90 'Cabeçalho .EnableHeadersVisualStyles = False .ColumnHeadersDefaultCellStyle.Font = New Font("Arial", 14, FontStyle.Bold) .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSize- Mode.AutoSizeToAllHeaders 'auto dimensiona o cabeçalho .ColumnHeadersDefaultCellStyle.ForeColor = Color.White .ColumnHeadersDefaultCellStyle.BackColor = Color.Black 'linha .AlternatingRowsDefaultCellStyle.BackColor = Color.DarkGray .AlternatingRowsDefaultCellStyle.ForeColor = Color.Purple .AlternatingRowsDefaultCellStyle.Font = New Font("Arial", 12, FontStyle.Regular) .AlternatingRowsDefaultCellStyle.Alignment = DataGridViewContentA- lignment.MiddleLeft 'colunha .DefaultCellStyle.Font = New Font("Arial", 12, FontStyle.Bold) .DefaultCellStyle.ForeColor = Color.Black .DefaultCellStyle.BackColor = Color.DarkCyan .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft '.RowHeadersVisible = False 'retira a coluna da esquerda End With conexao_mysql() 'procedure de conexão e comando (cmd e con) 124 cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where cod_usuario > 1" consulta_usuario_grid() 'método para preecher o data grid através da select realizada na tabela login e usuário. If acrescenta_campo = 1 Then 'conidção para definir o campo senha. Se for administrador a checkbox senha fica visivel. If CheckBox3.Checked = True Then DataGridView1.Columns("6").Visible = True 'a coluna fica visivel quendo o usuário administrador clica na checkbox. Else DataGridView1.Columns("6").Visible = False 'a coluna fica invisivel quando usuário administrador clica novamente a checkbox3. End If Else CheckBox3.Visible = False 'condição, se o usário segundo usuário administrdor. A checkbox senha e a colunha senha não ficam visiveis. DataGridView1.Columns("6").Visible = False End If Catch erro As Exception MsgBox(erro.Message & "Contate seu administrador.", vbCritical) End Try End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Close() principal.Show() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged Try consulta_condicao() 'método qued exeuta a consulta na textbox. 125 CheckBox1.Checked = False CheckBox2.Checked = False Catch erro As Exception MsgBox(erro.Message, vbCritical) End Try End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged ordenacao() 'método para ordenar os dados do datagrid. Ordenação alfabética End Sub Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged ordenacao() 'método apra ordenar os dados do datagrid. Ordenação descrecente End Sub Private Sub CheckBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.Click CheckBox2.Checked = False End Sub Private Sub CheckBox2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox2.Click CheckBox1.Checked = False End Sub Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged If CheckBox3.Checked = True Then If acrescenta_campo = 1 Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where cod_usuario > 1" DataGridView1.Rows.Clear() 126 consulta_usuario_grid() 'método para preecher o data grid através da select realizada na tabela login e usuário. DataGridView1.Columns("6").Visible = True Else DataGridView1.Columns("6").Visible = False End If Else DataGridView1.Columns("6").Visible = False End If End Sub End Class „********************************************************************** 'CONSULTA DE MARCAS '********************************************************************** ‟ CONSULTA_MARCA.VB ' Public Class Consulta_Marca 'variaveis que serão preenchidas na consulta para preencher o data grid. Dim codigo_marca As Integer Dim nome_marca As String Private Sub consulta_marca_grid() 'método para preencher o datagrid reader = cmd.ExecuteReader() While (reader.Read) codigo_marca = reader("cod_marca") nome_marca = reader("nome_marca") DataGridView1.Rows.Add(New String() {codigo_marca, nome_marca}) End While con.Close() End Sub Private Sub consulta_condicao() 'método para consultar dados conforme dados no textbox conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text 127 cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão If TextBox1.Text <> " " Then cmd.CommandText = "select * from marcas where nome_marca like'%" & TextBox1.Text & "%'" & "or cod_marca = " & Val(TextBox1.Text) 'Esta selec realiza a consulta no banco de dados pelo nome da marca ou pelo código da marca Else MsgBox("Campo vazio!", vbExclamation) End If DataGridView1.Rows.Clear() consulta_marca_grid() 'métod para preencher o datagrid através da consulta realizada na textbox. End Sub Private Sub ordenacao() 'método para ordenar os dados no datagrid Try conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão If CheckBox1.Checked = True Then cmd.CommandText = "select * from marcas order by nome_marca" 'Esta selec realiza a consulta no banco de dados pelo nome da marca ou pelo código da marca DataGridView1.Rows.Clear() consulta_marca_grid() 'método para preencher o datagrid através da consulta realizada na textbox. ElseIf CheckBox2.Checked = True Then cmd.CommandText = "select * from marcas order by cod_marca desc" 'Esta selec realiza a consulta no banco de dados pelo nome da marca ou pelo código da marca DataGridView1.Rows.Clear() consulta_marca_grid() 'métod para preencher o datagrid através da consulta realizada na textbox. Else consulta_condicao() 'método para consulta conforme dados na textbox End If 128 Catch pesquisa As Exception MsgBox(pesquisa.Message & " " & "Contate seu administrador", vbCritical) End Try End Sub Private Sub Consulta_Marca_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End Sub Private Sub Consulta_Marca_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try With DataGridView1 'colunas do datagrid .Columns.Add("1", "Codigo") .Columns.Add("2", "Marca") 'cor de fundo .BackgroundColor = Color.White 'tamanho da coluna codigo linha .Columns(0).Width = 90 'Cabeçalho .EnableHeadersVisualStyles = False .ColumnHeadersDefaultCellStyle.Font = New Font("Arial", 14, FontStyle.Bold) .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSize- Mode.AutoSizeToAllHeaders 'auto dimensiona o cabeçalho .ColumnHeadersDefaultCellStyle.ForeColor = Color.White .ColumnHeadersDefaultCellStyle.BackColor = Color.Black 'linha .AlternatingRowsDefaultCellStyle.BackColor = Color.DarkGray .AlternatingRowsDefaultCellStyle.ForeColor = Color.Purple 129 .AlternatingRowsDefaultCellStyle.Font = New Font("Arial", 12, FontStyle.Regular) .AlternatingRowsDefaultCellStyle.Alignment = DataGridViewContentA- lignment.MiddleLeft 'colunha .DefaultCellStyle.Font = New Font("Arial", 12, FontStyle.Bold) .DefaultCellStyle.ForeColor = Color.Black .DefaultCellStyle.BackColor = Color.DarkCyan .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft End With conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão cmd.CommandText = "select * from marcas" consulta_marca_grid() 'método para preencher o data grid atraves da select realizada na tabela marcas Catch erro As Exception MsgBox(erro.Message & " " & "Contate seu administrador.", vbCritical) End Try End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Close() principal.Show() End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged Try consulta_condicao() 'consulta os dados digitados na textbox CheckBox1.Checked = False CheckBox2.Checked = False Catch pesquisa As Exception MsgBox(pesquisa.Message, vbCritical) 130 End Try End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged ordenacao() 'método para ordenar os dados no datagrid. Ordenação alfabética. End Sub Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged ordenacao() 'método para ordenar os dados no datagrid. Ordenação descrencente End Sub Private Sub CheckBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.Click CheckBox2.Checked = False End Sub Private Sub CheckBox2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox2.Click CheckBox1.Checked = False End Sub End Class „********************************************************************** 'CONSULTA DE MARCAS '********************************************************************** ‟ CONSULTA_MARCA.VB ' Public Class Consulta_Marca 'variaveis que serão preenchidas na consulta para preencher o data grid. Dim codigo_marca As Integer Dim nome_marca As String Private Sub consulta_marca_grid() 'método para preencher o datagrid reader = cmd.ExecuteReader() While (reader.Read) codigo_marca = reader("cod_marca") nome_marca = reader("nome_marca") 131 DataGridView1.Rows.Add(New String() {codigo_marca, nome_marca}) End While con.Close() End Sub Private Sub consulta_condicao() 'método para consultar dados conforme dados no textbox conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão If TextBox1.Text <> " " Then cmd.CommandText = "select * from marcas where nome_marca like'%" & TextBox1.Text & "%'" & "or cod_marca = " & Val(TextBox1.Text) 'Esta selec realiza a consulta no banco de dados pelo nome da marca ou pelo código da marca Else MsgBox("Campo vazio!", vbExclamation) End If DataGridView1.Rows.Clear() consulta_marca_grid() 'métod para preencher o datagrid através da consulta realizada na textbox. End Sub Private Sub ordenacao() 'método para ordenar os dados no datagrid Try conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão If CheckBox1.Checked = True Then cmd.CommandText = "select * from marcas order by nome_marca" 'Esta selec realiza a consulta no banco de dados pelo nome da marca ou pelo código da marca DataGridView1.Rows.Clear() consulta_marca_grid() 'método para preencher o datagrid através da consulta realizada na textbox. ElseIf CheckBox2.Checked = True Then 132 cmd.CommandText = "select * from marcas order by cod_marca desc" 'Esta selec realiza a consulta no banco de dados pelo nome da marca ou pelo código da marca DataGridView1.Rows.Clear() consulta_marca_grid() 'métod para preencher o datagrid através da consulta realizada na textbox. Else consulta_condicao() 'método para consulta conforme dados na textbox End If Catch pesquisa As Exception MsgBox(pesquisa.Message & " " & "Contate seu administrador", vbCritical) End Try End Sub Private Sub Consulta_Marca_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End Sub Private Sub Consulta_Marca_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try With DataGridView1 'colunas do datagrid .Columns.Add("1", "Codigo") .Columns.Add("2", "Marca") 'cor de fundo .BackgroundColor = Color.White 'tamanho da coluna codigo linha .Columns(0).Width = 90 'Cabeçalho .EnableHeadersVisualStyles = False .ColumnHeadersDefaultCellStyle.Font FontStyle.Bold) = New Font("Arial", 14, 133 .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSize- Mode.AutoSizeToAllHeaders 'auto dimensiona o cabeçalho .ColumnHeadersDefaultCellStyle.ForeColor = Color.White .ColumnHeadersDefaultCellStyle.BackColor = Color.Black 'linha .AlternatingRowsDefaultCellStyle.BackColor = Color.DarkGray .AlternatingRowsDefaultCellStyle.ForeColor = Color.Purple .AlternatingRowsDefaultCellStyle.Font = New Font("Arial", 12, FontStyle.Regular) .AlternatingRowsDefaultCellStyle.Alignment = DataGridViewContentA- lignment.MiddleLeft 'colunha .DefaultCellStyle.Font = New Font("Arial", 12, FontStyle.Bold) .DefaultCellStyle.ForeColor = Color.Black .DefaultCellStyle.BackColor = Color.DarkCyan .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft End With conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão cmd.CommandText = "select * from marcas" consulta_marca_grid() 'método para preencher o data grid atraves da select realizada na tabela marcas Catch erro As Exception MsgBox(erro.Message & " " & "Contate seu administrador.", vbCritical) End Try End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Close() principal.Show() 134 End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged Try consulta_condicao() 'consulta os dados digitados na textbox CheckBox1.Checked = False CheckBox2.Checked = False Catch pesquisa As Exception MsgBox(pesquisa.Message, vbCritical) End Try End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged ordenacao() 'método para ordenar os dados no datagrid. Ordenação alfabética. End Sub Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged ordenacao() 'método para ordenar os dados no datagrid. Ordenação descrencente End Sub Private Sub CheckBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.Click CheckBox2.Checked = False End Sub Private Sub CheckBox2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox2.Click CheckBox1.Checked = False End Sub End Class „********************************************************************** 'CONSULTA DE LINHA '********************************************************************** ‟ CONSULTA_LINHA.VB ' 135 Public Class Consulta_linha 'variaveis que serão preenchidas na consulta para preencher o data grid. Dim codigo_linha As Integer Dim nome_linha As String Private Sub consulta_linha_grid() 'método para preencher o datagrid reader = cmd.ExecuteReader() While (reader.Read) codigo_linha = reader("cod_linha") nome_linha = reader("nome_linha") DataGridView1.Rows.Add(New String() {codigo_linha, nome_linha}) End While con.Close() End Sub 'fim do método Private Sub consulta_com_condicao() 'método para consultar dados na textbox conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão If TextBox1.Text <> " " Then cmd.CommandText = "select * from linha where nome_linha like'%" & TextBox1.Text & "%'" & "or cod_linha = " & Val(TextBox1.Text) 'Esta selec realiza a consulta no banco de dados pelo nome da linh ou pelo código da linha Else MsgBox("Campo vazio!", vbExclamation) End If DataGridView1.Rows.Clear() consulta_linha_grid() 'método para preenhcer o datagrid através da select com condição de pesquisa realizada na tabela linha End Sub Private Sub ordenacao() conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abre a conexão. 136 If CheckBox1.Checked = True Then cmd.CommandText = "select * from linha order by nome_linha" DataGridView1.Rows.Clear() consulta_linha_grid() 'método para preencher o datagrid ElseIf CheckBox2.Checked = True Then cmd.CommandText = "select * from linha order by cod_linha desc" DataGridView1.Rows.Clear() consulta_linha_grid() 'método para preencher o datagrid Else consulta_com_condicao() 'método consultar no textbox End If End Sub Private Sub Consulta_linha_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End Sub Private Sub Consulta_linha_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try With DataGridView1 'colunas do datagrid .Columns.Add("1", "Codigo") .Columns.Add("2", "Linha") 'cor de fundo .BackgroundColor = Color.White 'tamanho da coluna codigo linha .Columns(0).Width = 90 'Cabeçalho .EnableHeadersVisualStyles = False .ColumnHeadersDefaultCellStyle.Font FontStyle.Bold) = New Font("Arial", 14, 137 .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSize- Mode.AutoSizeToAllHeaders 'auto dimensiona o cabeçalho .ColumnHeadersDefaultCellStyle.ForeColor = Color.White .ColumnHeadersDefaultCellStyle.BackColor = Color.Black 'linha .AlternatingRowsDefaultCellStyle.BackColor = Color.DarkGray .AlternatingRowsDefaultCellStyle.ForeColor = Color.Purple .AlternatingRowsDefaultCellStyle.Font = New Font("Arial", 12, FontStyle.Regular) .AlternatingRowsDefaultCellStyle.Alignment = DataGridViewContentA- lignment.MiddleLeft 'colunha .DefaultCellStyle.Font = New Font("Arial", 12, FontStyle.Regular) .DefaultCellStyle.ForeColor = Color.Black .DefaultCellStyle.BackColor = Color.DarkCyan .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft End With conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão cmd.CommandText = "select * from linha" consulta_linha_grid() 'método para preencher o datagrid através da select realiza na tabela linha Catch erro As Exception MsgBox(erro.Message & "Contate seu administrador.", vbCritical) End Try End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Close() principal.Show() 138 End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged Try consulta_com_condicao() 'método para a consulta na textbox CheckBox1.Checked = False CheckBox2.Checked = False Catch pesquisa As Exception MsgBox(pesquisa.Message, vbCritical) End Try End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged ordenacao() 'método para ordenar alfabeticamente. End Sub Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged ordenacao() 'método para ordenação descrecente. End Sub Private Sub CheckBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.Click CheckBox2.Checked = False End Sub Private Sub CheckBox2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox2.Click CheckBox1.Checked = False End Sub End Class „********************************************************************** 'CONSULTA DE CATEGORIA '********************************************************************** ‟ CONSULTA_CATEGORIA.VB ' 139 Imports MySql.Data.MySqlClient Public Class Consulta_categoria 'variaveis que serão preenchidas na consulta para preencher o data grid. Dim codigo_categoria As Integer Dim nome_categoria As String Private Sub consulta_categoria_grid() 'método para preencher o datagrid. reader = cmd.ExecuteReader() While (reader.Read) codigo_categoria = reader("cod_categoria") nome_categoria = reader("nome_categoria") DataGridView1.Rows.Add(New String() {codigo_categoria, nome_categoria}) End While con.Close() End Sub Private Sub preencher_datagrid_padrao() 'método para preencher o datagrid assim que o fomulário é executado. conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão cmd.CommandText = "select * from categoria" consulta_categoria_grid() 'método que preenchera o datagrid através da select realizada na tabela categoria End Sub Private Sub ordenacao_checkbox() 'ordena por ordem alfabética Try conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abre a conexão. If CheckBox1.Checked = True Then cmd.CommandText = "select * from categoria order by nome_categoria" 'ordena em ordem alfabética DataGridView1.Rows.Clear() 140 consulta_categoria_grid() 'método que preenche o datagrid ElseIf CheckBox2.Checked = True Then cmd.CommandText = "select * from categoria order by cod_categoria desc" 'ordena em ordem descrecente. DataGridView1.Rows.Clear() consulta_categoria_grid() 'método que preenche o datagrid Else consulta_com_condicao() 'método que será exetudado quando as condições não forem correspondida End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub consulta_com_condicao() 'método para consultar os dados no datagrid conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecata ao banco de dados con.Open() 'abrre a conexão If TextBox1.Text <> " " Then cmd.CommandText = "select * from categoria where nome_categoria like'%" & Trim(TextBox1.Text) & "%'" & "or cod_categoria = " & Val(Trim(TextBox1.Text)) 'Esta selec realiza a consulta no banco de dados pelo nome da categoria ou pelo código da categoria Else MsgBox("Campo vazio!", vbExclamation) End If DataGridView1.Rows.Clear() 'limpa os dodos consulta_categoria_grid() 'método que preenchera o datagrid através da pesquisa com condição na tabela categoria End Sub Private Sub Consulta_categoria_KeyDown(sender As Object, tem.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() 'tecla de atalho para sair do formulário e As Sys- 141 End If End Sub Private Sub Consulta_categoria_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Try With DataGridView1 'colunas do datagrid .Columns.Add("1", "Codigo") .Columns.Add("2", "Categoria") 'cor de fundo .BackgroundColor = Color.White 'tamanho da coluna codigo linha .Columns(0).Width = 90 'Cabeçalho .EnableHeadersVisualStyles = False .ColumnHeadersDefaultCellStyle.Font = New Font("Arial", 14, FontStyle.Bold) .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSize- Mode.AutoSizeToAllHeaders 'auto dimensiona o cabeçalho .ColumnHeadersDefaultCellStyle.ForeColor = Color.White .ColumnHeadersDefaultCellStyle.BackColor = Color.Black 'linha .AlternatingRowsDefaultCellStyle.BackColor = Color.DarkGray .AlternatingRowsDefaultCellStyle.ForeColor = Color.Purple .AlternatingRowsDefaultCellStyle.Font = New Font("Arial", FontStyle.Regular) 'colunha .DefaultCellStyle.Font = New Font("Arial", 12, FontStyle.Bold) .DefaultCellStyle.ForeColor = Color.Black .DefaultCellStyle.BackColor = Color.DarkCyan End With 12, 142 preencher_datagrid_padrao() 'executa o método para preencher o datagrid como forma padrão. Catch erro As Exception MsgBox(erro.Message & "Contate seu administrador.", vbCritical) End Try End Sub Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click Me.Close() principal.Show() End Sub Private Sub TextBox1_TextChanged(sender As System.Object, e As Sys- tem.EventArgs) Handles TextBox1.TextChanged Try consulta_com_condicao() CheckBox1.Checked = False CheckBox2.Checked = False Catch pesquisa As Exception MsgBox(pesquisa.Message) End Try End Sub Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged ordenacao_checkbox() 'método para ordenar os itens no datagrid End Sub Private Sub CheckBox2_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox2.CheckedChanged ordenacao_checkbox() 'método para ordenar os itens no datagrid End Sub Private Sub CheckBox1_Click(sender As Object, e As System.EventArgs) Handles CheckBox1.Click CheckBox2.Checked = False End Sub 143 Private Sub CheckBox2_Click(sender As Object, e As System.EventArgs) Handles CheckBox2.Click CheckBox1.Checked = False End Sub End Class „********************************************************************** 'ALTERAR SENHA '********************************************************************** ‟ ALTERARSENHA.VB ' Imports MySql.Data.MySqlClient Public Class AlterarSenha Dim NOME_LOGIN, SENHA_LOGIN As String Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Try ' trataviva de erro do banco e do formulário conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'variavel de conexão con.Open() 'abri a conexão com o banco de dados cmd.CommandText = "select * from login where nome_login = '" & Trim(TextBox4.Text) & "'" 'Função trim, remove os espaços iniciais e finais. reader = cmd.ExecuteReader() 'comando para executar a reader reader.Read() 'variável reader para ler os dados selecionado na select NOME_LOGIN = reader("nome_login") SENHA_LOGIN = reader("senha") reader.Close() 'fechando a reader con.Close() 'fecha a conexão com o banco de dados Catch ex As Exception MsgBox("Usuario incorreto.", vbCritical) TextBox4.Focus() 'função focus, quando acontece algum erro o cursor volta para o campo especificado. End Try 144 If MaskedTextBox1.Text = SENHA_LOGIN Then 'condição para a alteração de senha. A maskedtextbox tem de ser igual a variavel em questão. Try If MaskedTextBox2.Text = MaskedTextBox3.Text Then 'segunda condição, a senha que estiver igual na primeira condição irá fazer estas instruções. A nova senha da MaskedTextBox2 tem de ser igual a MaskedTextBox3 If MsgBox("Deseja alterar sua senha?", vbYesNo, "confirmação") = vbYes Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() 'abri a conexão com o banco de dados With cmd .CommandType = CommandType.Text .CommandText = "UPDATE login SET senha = ? WHERE nome_login = '" & NOME_LOGIN & "'" .Parameters.Add("senha", OleDb.OleDbType.VarChar) .Parameters("senha").Value = MaskedTextBox3.Text .ExecuteNonQuery() End With con.Close() 'fecha a conexão com o banco de dados TextBox4.Clear() 'função clear, limpa os campos após a alteração MaskedTextBox1.Clear() MaskedTextBox2.Clear() MaskedTextBox3.Clear() MsgBox("Senha alterada com sucesso.", vbInformation) Button2.Focus() 'função focus, após efetuar a alteração o botão cancelar fica selecionado. Else MsgBox("Alteração cancelada!", vbCritical) TextBox4.Focus() 'função focus, quando a alteração e cancelada o cursor volta para a textbox4 (campo login). End If Else MsgBox("Senha não confere!", vbCritical) 145 MaskedTextBox2.Focus() 'função focus, quando a senha não confere o cursor volta para o campo especificado (campo nova senha) End If Catch ex As Exception MsgBox(ex.Message) TextBox4.Focus() 'quando acontece algum erro o cursor volta para a textbox4 (campo login) End Try Else MsgBox("Senha antiga incorreta.", vbCritical) MaskedTextBox1.Focus() End If End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Me.Close() 'Fecha o formulário login.Show() 'executa o formuário login login.TextBox1.Focus() End Sub Private Sub TextBox4_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then 'condição, quando o usuário digitar enter o curso irá para o próximo campo e.Handled = True MaskedTextBox1.Focus() End If End Sub Private Sub MaskedTextBox1_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox1.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then 'condição, quando o usuário digitar enter o curso irá para o próximo campo e.Handled = True MaskedTextBox2.Focus() End If 146 End Sub Private Sub MaskedTextBox2_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox2.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then 'condição, quando o usuário digitar enter o curso irá para o próximo campo e.Handled = True MaskedTextBox3.Focus() End If End Sub Private Sub MaskedTextBox3_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox3.KeyPress If e.KeyChar = Chr(13) Then 'condição, quando o usuário digitar enter o button1 e clickado automaticamente Button1_Click(Me, EventArgs.Empty) End If End Sub Private Sub AlterarSenha_KeyDown(sender As Object, e As Sys- tem.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button2.PerformClick() End If End Sub End Class „********************************************************************** 'CONEXÃO DE METODOS E VARIÁVEIS '********************************************************************** ‟ CONEXAO_METODOS_VARIAVEIS.VB ' Module conexao_metodos_variaveis 'método para o botão sair Public Sub sair() Dim confirmar As MsgBoxResult 147 confirmar = (MsgBox("Deseja realmente sair?", MsgBoxStyle.YesNo, "Confirmar")) If confirmar = vbYes Then Application.Exit() End If End Sub 'variveis do banco de dados Public cmd As OleDb.OleDbCommand Public con As OleDb.OleDbConnection Public reader As OleDb.OleDbDataReader 'variaveis publicas do sistema Public teste, cod, qtde, codproduto, codlogin, codiloginfk, codlinha, dados(0, 19), acrescenta_campo, cont As Integer Public produto, descricao, linha, marca, categoria, codigo_categoria, confere, arquivo_banco, usu_sgbd As String Public barras As Char 'cod variavel usada em itens_venda, venda e consulta. Dados(0,19), variavel usada no form login e principal. Quando o usuário se loga é feito uma select da qual será defino os tipo de acesso ao sistema. Public Sub conexao_mysql() 'procedure de conexão do banco de dados If (System.IO.File.Exists("C:\Acesso_Banco\conectar\acesso\acesso_banco.txt") <> True) Then MsgBox("Conexão não configurada.!", MsgBoxStyle.Critical, "Configuração de conexão") Application.Exit() Else Dim filereader As New O.StreamReader("C:\Acesso_Banco\conectar\acesso\acesso_banco.txt") While (filereader.Peek > -1) linha = filereader.ReadLine 'condição para ler as linhas do arquivo de acesso ao banco If cont = 3 Then 'linha 3 arquivo_banco = linha usu_sgbd = arquivo_banco.Substring(0) I- 148 End If cont += 1 End While End If con = New OleDb.OleDbConnection 'instanciando a variavel con (conexão) cmd = New OleDb.OleDbCommand 'instacinando a variavel cmd (comandos) 'con.ConnectionString = "Provider=SQLOLEDB;Data Source=ADEILDO- PC\ADEILDO;Integrated Security=SSPI;Initial Catalog=lojacosmeticos" con.ConnectionString = usu_sgbd End Sub Public Sub selecao() 'select utilizada na tabela produtos. Try If barras > " " Then 'cada condição representa um tipo de pesquisa no banco de dados de acordo com o que é digitado no fórmulario, no caso as textbox. cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where cod_barras = '" & Trim(barras) & "'" ElseIf codproduto > 0 Then cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where cod_produto = " & Trim(codproduto) ElseIf produto <> " " Then cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where nome_produto like '%" & Trim(produto) & "%'" ElseIf descricao > " " Then cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where descricao_produto like '%" & Trim(descricao) & "%'" ElseIf marca <> " " Then 149 cmd.CommandText = "select A.*,B.*,C.*, D.* from marcas A inner join produtos B on(B.cod_marca=A.cod_marca)inner join linha C on(B.cod_linha=C.cod_linha) inner join categoria D on(B.cod_categoria=D.cod_categoria) where nome_marca like '%" & Trim(marca) & "%'" ElseIf linha > " " Then cmd.CommandText = "select A.*,B.*,C.*, D.* from linha A inner join produtos B on(B.cod_linha=A.cod_linha) inner join marcas C on(B.cod_marca=C.cod_marca) inner join categoria D on(B.cod_categoria=D.cod_categoria) where nome_linha like '%" & Trim(linha) & "%'" ElseIf categoria > " " Then cmd.CommandText = "select A.*,B.*,C.*, D.* from categoria A inner join produtos B on(B.cod_categoria=A.cod_categoria) inner join marcas C on(B.cod_marca=C.cod_marca) inner join linha D on(B.cod_linha=D.cod_linha) where nome_categoria like '%" & Trim(categoria) & "%'" Else MsgBox("Dados inválidos para pesquisa!") 'caso o usuario não digite nada nas condições de pesquisa será exibida esta mensagem End If Catch mensagem As Exception MsgBox(mensagem.Message) 'mensagem de erro. End Try End Sub Public Sub foregn_key_usuario() 'esta procedure será utilizada no formulário cadastro de usuario. Obs: apenas cadastro. Try ' tratando o erro na conexão, no formulário e na select conexao_mysql() 'procidure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con con.Open() cmd.CommandText = "select MAX(cod_login) as cod_login from login" 'selecionar o maior valor da coluna cod_atendente no banco de dados reader = cmd.ExecuteReader() If reader.Read() Then 150 codlogin = reader.GetValue(0) 'registro que será lido, no caso cod_atenden da qual se trata de uma coluna na tabela atendente codiloginfk = codlogin + 1 reader.Close() 'fecha a leitura no banco con.Close() 'fecha o banco Else codiloginfk = codlogin + 1 End If Catch selecao_atendente As Exception MsgBox(selecao_atendente.Message & " " & "Contate o suporte técnico", vbInformation) End Try End Sub 'confere o a quantidade e exibe na tela para o usuário Public Sub confere_qtde() Dim produto_conf, barras_conf, qtde_conf As String Try conexao_mysql() cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con con.Open() cmd.CommandText = "select nome_produto, cod_barras, qtde_produto from produtos where qtde_produto <=5" reader = cmd.ExecuteReader() While reader.Read() barras_conf = reader("cod_barras") produto_conf = reader("nome_produto") qtde_conf = reader("qtde_produto") MsgBox("PRODUTO: " & produto_conf & vbCrLf & "CÓDIGO BARRAS: " & barras_conf & vbCrLf & "QUANTIDADE: " & qtde_conf & vbCrLf & "Quantidade baixa!", vbExclamation) End While con.Close() Catch ex As Exception 151 MsgBox(ex.Message) End Try End Sub 'método para apresentar os dados no datagrid com default Public Sub grid_default() conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'conecta ao banco de dados con.Open() 'abrre a conexão 'Pesquida feita pela data de cadastro do produto cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria)" End Sub 'função para manipulação de números na textbox. Está função habilita apenas números. Function SoNumeros(ByVal Keyascii As Short) As Short If InStr("1234567890", Chr(Keyascii)) = 0 Then 'condição para definir o que será aceito. 0 significa número SoNumeros = 0 Else SoNumeros = Keyascii End If Select Case Keyascii Case 8 SoNumeros = Keyascii '8 bits Case 13 SoNumeros = Keyascii '13 bits Case 32 SoNumeros = Keyascii '32 bits Case 64 SoNumeros = Keyascii '64 bist End Select End Function 152 'função para manipulação de números na textbox. Está função abilita números e virgula. Forma decimal. Function Sodecimal(ByVal Keyascii As Short) As Short If InStr("1234567890,", Chr(Keyascii)) = 0 Then 'condição para definir o que será aceito. 0 significa número Sodecimal = 0 Else Sodecimal = Keyascii End If Select Case Keyascii Case 8 Sodecimal = Keyascii '8 bits Case 13 Sodecimal = Keyascii '13 bits Case 32 Sodecimal = Keyascii '32 bits Case 64 Sodecimal = Keyascii '64 bits End Select End Function End Module „********************************************************************** 'CADASTRO DE USUÁRIOS '********************************************************************** ‟ CADASTROUSUARIO.VB ' Public Class CadastroUsuario Dim codigologin As Integer Dim matriz(0, 3) As Object 'Matriz: armazena os dados pesquisado pela função conferir login 'tacesso: armazeno valores númericos 0 e 1 para definir os tipos de acesso do sistema. Private Function conferir_login() 'função para conferir se o cadastro de usuário já existe. 153 Try conexao_mysql() 'peocedure de conexão com o mysql cmd.Connection = con 'conecta ao banco de dados con.Open() 'abre a conexão. If TextBox1.Text > " " Then 'select que é executado no banco quando o botão 1 e acionado. cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where nome_usuario = '" & Trim(TextBox1.Text) & "'" 'primeira condição para a pesquisa no banco de dados ElseIf Val(MaskedTextBox1.Text) > 0 Then cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where rg_usuario = '" & Trim(MaskedTextBox1.Text) & "'" 'segunda condição para a pesquisa no banco de dados ElseIf Val(MaskedTextBox2.Text) > 0 Then cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where cpf_usuario = '" & Trim(MaskedTextBox2.Text) & "'" 'terceira condição de ElseIf TextBox2.Text > " " Then cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where nome_login = '" & Trim(TextBox2.Text) & "'" End If reader = cmd.ExecuteReader() 'comando para executar a reader reader.Read() 'variável reader para ler os dados selecionado na select matriz(0, 0) = reader("nome_usuario") matriz(0, 1) = reader("rg_usuario") matriz(0, 2) = reader("cpf_usuario") matriz(0, 3) = reader("nome_login") con.Close() Catch ex As Exception End Try Return 1 End Function Private Function apagar() 'função para limpara as textbox TextBox1.Clear() 154 MaskedTextBox1.Clear() MaskedTextBox2.Clear() TextBox2.Clear() MaskedTextBox3.Clear() MaskedTextBox4.Clear() TextBox3.Clear() TextBox3.Focus() 'move o cursor para o campo requerido matriz(0, 0) = " " matriz(0, 1) = " " matriz(0, 2) = " " matriz(0, 3) = " " Return TextBox1.Text() End Function Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click If Button3.Text = "Cancelar" Then Close() login.TextBox1.Focus() login.tabela_login_vazia() login.Show() Else Close() principal.Show() End If End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click If Button5.Text = "Cadastrar" Then 'condição para ação do botão cadastrar. Obs: esta condição é para (cadastro, alteração e exlcusão). Try 'trativa de erro para a função cadastro administrador e cadastro de login normal. 'condição para não haver campos nulos If TextBox1.Text > " " And TextBox2.Text > " " And MaskedTextBox3.Text > " " And MaskedTextBox4.Text > " " Then 155 'condição para conferir senha. If MaskedTextBox4.Text = MaskedTextBox3.Text Then 'função conferir login conferir_login() 'Condição para cadastrp de login, verifica se há login já cadastrado If matriz(0, 0) = TextBox1.Text Or matriz(0, 1) = MaskedTextBox1.Text Or matriz(0, 2) = MaskedTextBox2.Text Or matriz(0, 3) = TextBox2.Text Then MsgBox("Cadastro existente.", vbCritical) Else 'caso não tenha um administrador cadastro as instruções abaixo serma compiladas 'condição para o cadastro do login administrador If Button3.Text = "Cancelar" Then If MsgBox("Deseja cadastrar este usuario?", vbYesNo, "confirmação") = vbYes Then 'Pergunta que será exibida quando o susuario vai cadastrar-se ou vai cadastrar um usuário. 'Tabela login - Cadastro de LOGIN - CADASTRO DE ADMINSTRADOR conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con 'variavel de conexão con.Open() 'abre o banco With cmd .CommandType = System.Data.CommandType.Text .CommandText = "INSERT into login (cod_login, nome_login, senha, alt_categoria, alt_linha, alt_marca, alt_produto, alt_venda, alt_usuario, exc_categoria, exc_linha, exc_marca, exc_produto, exc_itens_venda, exc_venda, exc_usuario, cad_categoria, cad_linha, cad_marca, cad_produto, cad_usuario, atualizar, relatorio) VALUES (?, ?,?, ?, ?, ?,?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)" 'comando para inserção de dados no banco de dados. Tabela usuario .Parameters.Add("cod_login", OleDb.OleDbType.Integer) .Parameters("cod_login").Value = codiloginfk .Parameters.Add("nome_login", OleDb.OleDbType.VarChar) .Parameters("nome_login").Value = Trim(TextBox2.Text) 'Campo onde será incluso o nome do login .Parameters.Add("senha", OleDb.OleDbType.VarChar) 156 .Parameters("senha").Value = Trim(MaskedTextBox3.Text) 'Campo onde será incluso a senha do login 'variaveis para alteração .Parameters.Add("alt_categoria", OleDb.OleDbType.Integer) .Parameters("alt_categoria").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("alt_linha", OleDb.OleDbType.Integer) .Parameters("alt_linha").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("alt_marca", OleDb.OleDbType.Integer) .Parameters("alt_marca").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("alt_produto", OleDb.OleDbType.Integer) .Parameters("alt_produto").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("alt_venda", OleDb.OleDbType.Integer) .Parameters("alt_venda").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("alt_usuario", OleDb.OleDbType.Integer) .Parameters("alt_usuario").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox 'variaveis para exclusão. .Parameters.Add("exc_categoria", OleDb.OleDbType.Integer) .Parameters("exc_categoria").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("exc_linha", OleDb.OleDbType.Integer) .Parameters("exc_linha").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("exc_marca", OleDb.OleDbType.Integer) .Parameters("exc_marca").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("exc_produto", OleDb.OleDbType.Integer) .Parameters("exc_produto").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox 157 .Parameters.Add("exc_itens_venda", O- leDb.OleDbType.Integer) .Parameters("exc_itens_venda").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("exc_venda", OleDb.OleDbType.Integer) .Parameters("exc_venda").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("exc_usuario", OleDb.OleDbType.Integer) .Parameters("exc_usuario").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox 'variaveis para cadastro .Parameters.Add("cad_categoria", OleDb.OleDbType.Integer) .Parameters("cad_categoria").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("cad_linha", OleDb.OleDbType.Integer) .Parameters("cad_linha").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("cad_marca", OleDb.OleDbType.Integer) .Parameters("cad_marca").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("cad_produto", OleDb.OleDbType.Integer) .Parameters("cad_produto").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("cad_usuario", OleDb.OleDbType.Integer) .Parameters("cad_usuario").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("atualizar", OleDb.OleDbType.Integer) .Parameters("atualizar").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("relatorio", OleDb.OleDbType.Integer) .Parameters("relatorio").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .ExecuteNonQuery() End With 158 con.Close() 'fecha a conexão com o banco 'tabela usuário - CADASTRO DE USUÁRIO conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con 'variavel de conexão con.Open() 'abre o banco With cmd .CommandType = System.Data.CommandType.Text .CommandText = "insert into usuario (nome_usuario, cpf_usuario, rg_usuario, cod_login) values (?, ?, ?, ?)" 'comando para inserção de dados no banco de dados. Tabela usuario .Parameters.Add("nome_usuario", O- leDb.OleDbType.VarChar) .Parameters("nome_usuario").Value = Trim(TextBox1.Text) .Parameters.Add("cpf_usuario", OleDb.OleDbType.VarChar) .Parameters("cpf_usuario").Value = Trim(MaskedTextBox2.Text) 'Campo onde será incluso o cpf .Parameters.Add("rg_usuario", OleDb.OleDbType.VarChar) .Parameters("rg_usuario").Value = Trim(MaskedTextBox1.Text) 'Campo onde será incluso o rg .Parameters.Add("cod_login", OleDb.OleDbType.Integer) .Parameters("cod_login").Value = codiloginfk .ExecuteNonQuery() End With con.Close() ' fecha a conexão com o banco de dados foregn_key_usuario() 'Nesta procedure ocorre uma select para a preecher a variavel codigoat com um outro número, ou seja, _ela pesquisa cod_atenden e soma mais um ex: 5 + 1 = 6. Caso tenha um outro cadastro de usário aforeign key será 6. apagar() 'função para limpara as textbox MsgBox("Cadastro efetuado com sucesso.", vbInformation) 'mensagem que aparece quando não ocorre nenhum erro. Button3.PerformClick() 'executa os códigos do botão5 Else MsgBox("Cadastro cancelado.", vbCritical) 'mensagem exibida quando a inclusão é cancelada. 159 TextBox3.Focus() 'move o cursor para o campo código. End If 'fim da condição se o usuaário quer cadastradrar outro usuário 'quando houver um login administrador já cadastro, os códigos seram copilados de acordo com esta condição. ElseIf Button3.Text = "Retornar ao Menu Principal" Then If MsgBox("Deseja cadastrar este usuario?", vbYesNo, "confirmação") = vbYes Then 'Pergunta que será exibida quando o susuario vai cadastrar-se ou vai cadastrar um usuário. 'Tabela login - cadastro login comum conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con 'variavel de conexão con.Open() 'abri o banco With cmd .CommandType = System.Data.CommandType.Text .CommandText = "INSERT into login (cod_login, nome_login, senha, alt_categoria, alt_linha, alt_marca, alt_produto, alt_venda, alt_usuario, exc_categoria, exc_linha, exc_marca, exc_produto, exc_itens_venda, exc_venda, exc_usuario, cad_categoria, cad_linha, cad_marca, cad_produto, cad_usuario, atualizar, relatorio) VALUES (?, ?, ?, ?,?, ?, ?, ?,?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" 'comando para inserção de dados no banco de dados. Tabela usuario .Parameters.Add("cod_login", OleDb.OleDbType.Integer) .Parameters("cod_login").Value = codiloginfk .Parameters.Add("nome_login", OleDb.OleDbType.VarChar) .Parameters("nome_login").Value = Trim(TextBox2.Text) 'Campo onde será incluso o nome do login .Parameters.Add("senha", OleDb.OleDbType.VarChar) .Parameters("senha").Value = Trim(MaskedTextBox3.Text) 'Campo onde será incluso a senha do login 'Itens de acesso no sistema - ALTERAÇÃO .Parameters.Add("alt_categoria", OleDb.OleDbType.Integer) .Parameters("alt_categoria").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("alt_linha", OleDb.OleDbType.Integer) 160 .Parameters("alt_linha").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("alt_marca", OleDb.OleDbType.Integer) .Parameters("alt_marca").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("alt_produto", OleDb.OleDbType.Integer) .Parameters("alt_produto").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("alt_venda", OleDb.OleDbType.Integer) .Parameters("alt_venda").Value = 0 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("alt_usuario", OleDb.OleDbType.Integer) .Parameters("alt_usuario").Value = 0 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox 'Itens de acesso no sistema - EXCLUSÃO. .Parameters.Add("exc_categoria", OleDb.OleDbType.Integer) .Parameters("exc_categoria").Value = 0 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("exc_linha", OleDb.OleDbType.Integer) .Parameters("exc_linha").Value = 0 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("exc_marca", OleDb.OleDbType.Integer) .Parameters("exc_marca").Value = 0 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("exc_produto", OleDb.OleDbType.Integer) .Parameters("exc_produto").Value = 0 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add(" exc_itens_venda", O- leDb.OleDbType.Integer) .Parameters(" exc_itens_venda").Value = 0 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("exc_venda", OleDb.OleDbType.Integer) .Parameters("exc_venda").Value = 0 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox 161 .Parameters.Add("exc_usuario", OleDb.OleDbType.Integer) .Parameters("exc_usuario").Value = 0 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox 'Itens de acesso no sistema - CADASTRO .Parameters.Add("cad_categoria", OleDb.OleDbType.Integer) .Parameters("cad_categoria").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("cad_linha", OleDb.OleDbType.Integer) .Parameters("cad_linha").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("cad_marca", OleDb.OleDbType.Integer) .Parameters("cad_marca").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("cad_produto", OleDb.OleDbType.Integer) .Parameters("cad_produto").Value = 1 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .Parameters.Add("cad_usuario", OleDb.OleDbType.Integer) .Parameters("cad_usuario").Value = 0 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox 'atualziar .Parameters.Add("atualizar", OleDb.OleDbType.Integer) .Parameters("atualizar").Value = 0 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox 'relatório .Parameters.Add("relatorio", OleDb.OleDbType.Integer) .Parameters("relatorio").Value = 0 'Vairavel que será incluso o número 0 para falso e 1 para verdaeiro na checkbox .ExecuteNonQuery() End With con.Close() 'fecha a conexão com o banco 'tabela usuário - cadastro de usuario comum conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con 'variavel de conexão con.Open() 'abre o banco 162 With cmd .CommandType = System.Data.CommandType.Text .CommandText = "insert into usuario (nome_usuario, cpf_usuario, rg_usuario, cod_login) values (?, ?, ?, ?)" 'comando para inserção de dados no banco de dados. Tabela usuario .Parameters.Add("nome_usuario", O- leDb.OleDbType.VarChar) .Parameters("nome_usuario").Value = Trim(TextBox1.Text) 'codiloginfk .Parameters.Add("cpf_usuario", OleDb.OleDbType.VarChar) .Parameters("cpf_usuario").Value = Trim(MaskedTextBox2.Text) 'Campo onde será incluso o cpf .Parameters.Add("rg_usuario", OleDb.OleDbType.VarChar) .Parameters("rg_usuario").Value = Trim(MaskedTextBox1.Text) 'Campo onde será incluso o rg .Parameters.Add("cod_login", OleDb.OleDbType.Integer) .Parameters("cod_login").Value = codiloginfk .ExecuteNonQuery() End With con.Close() ' fecha a conexão com o banco de dados apagar() 'função para limpara as textbox MsgBox("Cadastro efetuado com sucesso.", vbInformation) 'mensagem que aparece quando não ocorre nenhum erro. TextBox1.Focus() 'Move o cursor para a textox3 após o cadastro. foregn_key_usuario() 'Nesta procedure ocorre uma select para a preecher a variavel codigoat com um outro número, ou seja, _ela pesquisa cod_usuário e soma mais um ex: 5 + 1 = 6. Caso tenha um outro cadastro de usário aforeign key será 6. Else MsgBox("Cadastro cancelado.", vbCritical) 'mensagem exibida quando a inclusão é cancelada. TextBox3.Focus() 'move o cursor para o campo código. End If 'fim da condição do cancelamento da inclusão de usuário End If 'fim da condição do cadastro do login administrdor e do login comum 163 End If 'fim da condição para verificar se a cadastro a ser inserido já existe. Else 'mensagem a se exibida para quando a senha for diferente. MsgBox("Senha não confere!", MsgBoxStyle.Critical) End If Else 'mensagem a ser exibida para dados nulos no formulário, exceto para rg e cp usuário. MsgBox("Atenção, existem campos nulos!", vbExclamation) TextBox1.Focus() 'move o cursor para o campo nome do usuário. End If 'fim da condição que veririca os campos nulos. Catch ex2 As Exception MsgBox(ex2.Message) 'mensagem de tratativa de erro. TextBox3.Focus() 'move o cursor para o campo código. End Try ElseIf Button5.Text = "Alterar" Then 'Alteração de usuario. Neste ponto será utilizaod o mesmo formulario tanto para cadastro quanto para alteração. Try If TextBox1.Text > " " And TextBox2.Text > " " And MaskedTextBox1.Text > " " And MaskedTextBox2.Text > " " Then 'condição dos campos. Não pode ser nulo If MsgBox("Deseja alterar este usuario?", vbYesNo, "confirmação") = vbYes Then 'pergunta a ser exibida no momento da alteração 'Tabela login - Alterar conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con 'variavel de conexão con.Open() 'abri o banco With cmd .CommandType = CommandType.Text .CommandText = "UPDATE login SET nome_login = ? WHERE cod_login = " & codigologin 'comando para alteração de dados da tabela login .Parameters.Add("nome_login", OleDb.OleDbType.VarChar) .Parameters("nome_login").Value = Trim(TextBox2.Text) 'dados digitado que será alterado no banco .ExecuteNonQuery() End With 164 con.Close() 'fecha o banco 'Tabela usuario - Alterar conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() 'abri o banco With cmd .CommandType = CommandType.Text .CommandText = "UPDATE usuario SET nome_usuario = ?, rg_usuario = ?, cpf_usuario = ? WHERE cod_usuario = " & Val(Trim(TextBox3.Text)) 'comando para inserir dados no banco de datos. Tabela usuario .Parameters.Add("nome_usuario", OleDb.OleDbType.VarChar) .Parameters("nome_usuario").Value = Trim(TextBox1.Text) 'dados digitado que será alterado no banco .Parameters.Add("rg_usuario", OleDb.OleDbType.VarChar) .Parameters("rg_usuario").Value = Trim(MaskedTextBox1.Text) 'dados digitado que será alterado no banco .Parameters.Add("cpf_usuario", OleDb.OleDbType.VarChar) .Parameters("cpf_usuario").Value = Trim(MaskedTextBox2.Text) 'dados digitado que será alterado no banco .ExecuteNonQuery() End With con.Close() 'fecha a conexão com o banco apagar() 'função para limpara os campos digitados TextBox3.Enabled = True TextBox3.Focus() 'move o cursor para o campo código. MsgBox("Cadastro alterado com sucesso.", vbInformation) Else MsgBox("Alteração cancelada.", vbCritical) 'mensagem que aparece para o usuario quando ele cancela a alteração TextBox3.Focus() 'move o cursor para o campo código. End If Else MsgBox("Campo invalido!", vbCritical) 'mensagem que aparece para o usuario quando a campos nulos. 165 TextBox1.Focus() 'move o cursor para o campo código. End If Catch ex3 As Exception MsgBox(ex3.Message) 'mensagem da tratativa de erro. Verifica toto o formulário. TextBox3.Focus() 'move o cursor para o campo código. End Try ElseIf Button5.Text = "Excluir" Then If TextBox1.Text > " " And TextBox2.Text > " " And MaskedTextBox1.Text > " " And MaskedTextBox2.Text > " " And codigologin > 0 Then If MsgBox("Deseja excluir este usuário?", vbYesNo, "confirma") = vbYes Then Try 'Tratando erro 'Tabela atendente - Excluir conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() With cmd .CommandType = CommandType.Text .CommandText = "Delete FROM usuario where cod_usuario = " & Val(Trim(TextBox3.Text)) 'comando para exclusão do usuário .Parameters.Add("usuario", OleDb.OleDbType.VarChar) .Parameters("usuario").Value = Trim(TextBox3.Text) .ExecuteNonQuery() End With con.Close() 'fecha a conexão com o banco 'Tabela usuario - Excluir conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() With cmd .CommandType = CommandType.Text .CommandText = "Delete FROM login where cod_login = " & codigologin 'comando para exclusão do login. 166 .Parameters.Add("login", OleDb.OleDbType.VarChar) .Parameters("login").Value = Trim(TextBox3.Text) .ExecuteNonQuery() End With con.Close() 'fecha a conexão com o banco apagar() 'função para limpara as textbox TextBox3.Enabled = True Button5.Enabled = False TextBox3.Focus() 'move o cursor para o campo código. MsgBox("Registro excluído com êxito!", vbExclamation) 'mensagem que aparece no momento em que nenhum erro ocorre. Catch ex4 As Exception MsgBox(ex4.Message) TextBox3.Focus() 'move o cursor para o campo código. End Try Else MsgBox("Exclusão cancelada!", vbExclamation) TextBox3.Focus() 'move o cursor para o campo código. End If Else MsgBox("Valor informado inválido!", vbCritical) TextBox3.Focus() 'move o cursor para o campo código. End If End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try ' trataviva de erro do banco e do formulário conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'variavel de conexão con.Open() 'abri o banco If TextBox1.Text > " " Then 167 cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where nome_usuario like '%" & Trim(TextBox1.Text) & "%'" ElseIf Val(TextBox3.Text) > 0 Then 'select que é executado no banco quando o botão 1 e acionado. cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where cod_usuario = " & Trim(TextBox3.Text) ElseIf Val(MaskedTextBox1.Text) > 0 Then cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where rg_usuario = '" & Trim(MaskedTextBox1.Text) & "'" ElseIf Val(MaskedTextBox2.Text) > 0 Then cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where cpf_usuario = '" & Trim(MaskedTextBox2.Text) & "'" ElseIf TextBox2.Text > " " Then cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where nome_login like '%" & Trim(TextBox2.Text) & "%'" Else MsgBox("Dados inocrreto para pesquisa!", vbCritical) 'quando os campos estã nulos e o usuário tenta fazer pequisa. TextBox3.Focus() End If reader = cmd.ExecuteReader() 'comando para executar a reader reader.Read() 'variável reader para ler os dados selecionado na select cod = reader("cod_login") If cod > 1 Then 'confere o login. Se for igual a 1 ele não traz a pesquisa. Login adimnitrador não pode ser editado, excluído ou consultado TextBox2.Text = reader("nome_login") TextBox1.Text = reader("nome_usuario") MaskedTextBox1.Text = reader("rg_usuario") MaskedTextBox2.Text = reader("cpf_usuario") TextBox3.Text = reader("cod_usuario") codigologin = reader("cod_login") 'codigo atendente. será usado na alteração do usuario reader.Close() 'fechando a reader con.Close() 'fechando o banco de dados 168 If Val(TextBox3.Text) > 0 And TextBox1.Text > " " And MaskedTextBox1.Text > " " And MaskedTextBox2.Text > " " And TextBox2.Text > " " Then TextBox3.Enabled = False Button5.Enabled = True Else TextBox3.Enabled = True Button5.Enabled = False End If TextBox1.Focus() Else MsgBox("Consulta inválida", MsgBoxStyle.Critical) TextBox3.Focus() End If Catch ex As Exception MsgBox(ex.Message) TextBox1.Focus() End Try End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click apagar() 'função limpar If Button5.Text = "Alterar" And Button1.Text = "Consultar" Then 'condição para o botão alterar. TextBox3.Enabled = True 'abilita a textbox Button5.Enabled = False 'deabilita o botão quando ocorre o evento de click. TextBox3.Focus() ElseIf Button5.Text = "Excluir" And Button1.Text = "Consultar" Then 'instruções para o botão excluir. TextBox3.Enabled = True 'abilita a textbox Button5.Enabled = False 'deabilita o botão quando ocorre o evento de click. TextBox3.Focus() ElseIf Button5.Text = "Cadastrar" And Button1.Text = "Consultar" Then 'condição para o botão cadastrar, instuções adicionais para a função cadastar TextBox3.Enabled = False 'abilita a textbox 169 Button5.Enabled = True 'abilita o button no formulário quando ocorre o evento de click. TextBox1.Focus() 'move o cursor para o campo requerido ElseIf Button3.Text = "Cancelar" Then Label6.Enabled = False Button1.Enabled = False TextBox3.Enabled = False End If End Sub Private Sub CadastroUsuario_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End Sub Private Sub CadastroUsuario_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load foregn_key_usuario() 'procedure para preechimento da foreign key da tabela usuário. If Button5.Text = "Alterar" Then Button5.Enabled = False Label9.Enabled = False Label8.Enabled = False MaskedTextBox4.Enabled = False MaskedTextBox3.Enabled = False 'desabilitando os dados que não seram alterados, esta ação é feita em outro formulário. ElseIf Button5.Text = "Excluir" Then Button5.Enabled = False Label9.Enabled = False Label8.Enabled = False MaskedTextBox4.Enabled = False MaskedTextBox3.Enabled = False 'desabili os campos que não serão utilizado na exclusão, mas seram excluso. Else 170 Label9.Enabled = True Label8.Enabled = True MaskedTextBox4.Enabled = True MaskedTextBox3.Enabled = True 'desabilitando os dados que não seram alterados, esta ação é feita em outro formulário. End If End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True MaskedTextBox1.Focus() End If End Sub Private Sub MaskedTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox1.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True MaskedTextBox2.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub MaskedTextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox2.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox2.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True 171 MaskedTextBox4.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub MaskedTextBox4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox4.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True MaskedTextBox3.Focus() End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) If KeyAscii = 32 Then e.Handled = True End If End Sub Private Sub MaskedTextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox3.KeyPress 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) If KeyAscii = 32 Then e.Handled = True End If 'condição para quando o usuário digitar enter cadastrar e mover o cursor para a textbox1 If e.KeyChar = Chr(13) Then Button5_Click(Me, EventArgs.Empty) TextBox1.Focus() End If End Sub Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress 172 Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os número. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If 'condição para quando o usuário digitar enter pesquisar If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) TextBox3.Focus() End If End Sub End Class „********************************************************************** 'CADASTRAR PRODUTOS '********************************************************************** ‟ CADASTROPRODUTO.VB ' Public Class CadastroProduto Dim CodigoCategoria, CodigoMarca, CodigoLinha, CodigoProduto As Integer 'variaveis para uso exclusivo da ação do botão excluir Public Function sele_cambobox() 'função para seleionar o dados da tabela linha Try conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con con.Open() 173 cmd.CommandText = "select * from categoria order by nome_categoria" 'Seleção feita para a combobox. reader = cmd.ExecuteReader() ComboBox1.Items.Clear() 'limpa a pesquisa While reader.Read() ComboBox1.Items.Add(UCase(reader("nome_categoria"))) 'Adiciona as categoria a combobox End While reader.Close() 'fecha a leitura com o banco de dados con.Close() 'fecha a conexão Catch ex As Exception End Try Return ComboBox1.Text() 'retorna o valor da combobox End Function Public Function sele_cambobox2() 'função para seleionar o dados da tabela marcas Try conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con con.Open() cmd.CommandText = "select * from marcas order by nome_marca" 'Seleção feita para a combobox. reader = cmd.ExecuteReader() ComboBox2.Items.Clear() 'limpa a pesquisa While reader.Read() ComboBox2.Items.Add(UCase(reader("nome_marca"))) 'Adiciona as categoria a combobox End While reader.Close() 'fecha a leitura com o banco de dados con.Close() 'fecha a conexão Catch ex As Exception End Try Return ComboBox2.Text() 'retorna o valor da combobox End Function 174 Public Function sele_combobox3() 'função para seleionar o dados da tabela linha Try conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con con.Open() cmd.CommandText = "select * from linha order by nome_linha" 'Seleção feita para a combobox. reader = cmd.ExecuteReader() ComboBox3.Items.Clear() 'limpa a pesquisa While reader.Read() ComboBox3.Items.Add(UCase(reader("nome_linha"))) 'Adiciona as categoria a combobox End While reader.Close() 'fecha a leitura com o banco de dados con.Close() 'fecha a conexão Catch combo_sele As Exception End Try Return ComboBox3.Text() End Function Private Function limpar() 'método limpar TextBox1.Clear() 'função clear, limpa as textbox TextBox2.Clear() TextBox3.Clear() TextBox4.Clear() TextBox6.Clear() TextBox1.Focus() 'função focus, move o cursor para o campo especificado. Return TextBox1.Text() End Function Private Sub confere_produto() 'métod para verificar se o produto já esta cadastrado. Try conexao_mysql() 'procedure de conexão com mysql e variavel cmd e con cmd.Connection = con con.Open() 175 cmd.CommandType = System.Data.CommandType.Text If TextBox1.Text > " " Then cmd.CommandText = "select * from produtos where cod_barras = '" & Trim(TextBox1.Text) & "'" ElseIf TextBox2.Text > " " Then cmd.CommandText = "select * from produtos where nome_produto = '" & Trim(TextBox2.Text) & "'" End If reader = cmd.ExecuteReader() reader.Read() barras = reader("cod_barras") confere = reader("nome_produto") reader.Close() con.Close() Catch ex As Exception End Try End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try If Val(TextBox1.Text) > 0 And TextBox2.Text > " " And ComboBox2.Text > " " And ComboBox3.Text > " " And ComboBox1.Text > " " And Val(TextBox4.Text) > -1 And Val(TextBox6.Text) > 0 Then 'conidção para que haja o cadastro do produto, marca, linha e categoria confere_produto() 'objeto para conferir se o item em questão já esta cadastrado. If barras <> TextBox1.Text And confere <> TextBox2.Text Then If MsgBox("Deseja cadastrar este produto?", vbYesNo, "confirmação") = vbYes Then 'Tabela produtos - CADASTRO DE PRODUTOS conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados 176 If CodigoCategoria > 0 And CodigoLinha > 0 And CodigoMarca > 0 Then With cmd .CommandType = System.Data.CommandType.Text .CommandText = "INSERT into produtos (cod_barras, nome_produto, descricao_produto, vlr_unitario, qtde_produto, cod_marca, cod_linha, cod_categoria, data_cads_prod) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)" 'Comando para inserir dados no MySQL .Parameters.Add("cod_barras", OleDb.OleDbType.Char) .Parameters("cod_barras").Value = Trim(TextBox1.Text) 'Função trim e cint, um reomve dos epaços finais e iniciais e a outra só permite valores inteiros .Parameters.Add("nome_produto", OleDb.OleDbType.VarChar) .Parameters("nome_produto").Value = Trim(TextBox2.Text) 'função trim. Remove os epaçsos iniciais e finais .Parameters.Add("descricao_produto", OleDb.OleDbType.VarChar) .Parameters("descricao_produto").Value = Trim(TextBox3.Text) 'função trim. Remove os epaçsos iniciais e finais .Parameters.Add("vlr_unitario", OleDb.OleDbType.Decimal) .Parameters("vlr_unitario").Value = Trim(Replace(TextBox4.Text, ".", ",")) 'Função trim e cdec, um reomve dos epaços finais e iniciais e a outra permite valores inteiros e quebrados .Parameters.Add("qtde_produto", OleDb.OleDbType.Integer) .Parameters("qtde_produto").Value = CInt(Trim(TextBox6.Text)) 'Função trim e cint, um reomve dos epaços finais e iniciais e a outra só permite valores inteiros .Parameters.Add("cod_marca", OleDb.OleDbType.Integer) .Parameters("cod_marca").Value = Trim(CodigoMarca) 'função trim. Remove os epaçsos iniciais e finais .Parameters.Add("cod_linha", OleDb.OleDbType.Integer) .Parameters("cod_linha").Value = Trim(CodigoLinha) 'função trim. Remove os epaçsos iniciais e finais .Parameters.Add("cod_categoria", OleDb.OleDbType.Integer) .Parameters("cod_categoria").Value = Trim(CodigoCategoria) 'função trim. Remove os epaçsos iniciais e finais 177 .Parameters.Add("data_cads_prod", OleDb.OleDbType.DBDate) .Parameters("data_cads_prod").Value = Trim(Label11.Text) 'função trim. Remove os epaçsos iniciais e finais .ExecuteNonQuery() End With con.Close() 'fecha a conexão com o banco End If limpar() 'função limpar MsgBox("Cadastro efetuado com sucesso.", vbInformation) CheckBox1.Checked = False Else MsgBox("Cadastro cancelado!", vbExclamation) End If Else MsgBox("Item já cadastrado.", vbExclamation) End If Else MsgBox("Erro! Verifique os campos.", vbCritical) TextBox1.Focus() 'função focus End If Catch ex As Exception MsgBox(ex.Message) TextBox1.Focus() 'função focus End Try End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Close() principal.Show() End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click limpar() 'função limpar TextBox1.Focus() 178 End Sub Private Sub CadastroProduto_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If Button1.Text = "Cadastrar" Then If e.Control AndAlso e.KeyCode = Keys.T Then 'tecla de atalho para cadastrar uma nova categoria principal.CategoriasToolStripMenuItem.PerformClick() 'executa o objeto nova categoria no menu principal NovaCategoria.Button3.Text = "VOLTAR" 'nome para o botão 3(quando o usuário quiser voltar para a tela de cadastro e não o menu principal) ElseIf e.Control AndAlso e.KeyCode = Keys.A Then 'tecla de atalho para cadastrar uma nova marca principal.NovaMarcaToolStripMenuItem.PerformClick() 'executa o objeto nova marca no menu principal NovaCategoria.Button3.Text = "VOLTAR" 'nome para o botão 3(quando o usuário quiser voltar para a tela de cadastro e não o menu principal) ElseIf e.Control AndAlso e.KeyCode = Keys.L Then 'tecla de atalho para ca- dastrar uma nova marca principal.NovaLinhaToolStripMenuItem.PerformClick() 'executa o objeto nova marca no menu principal NovaCategoria.Button3.Text = "VOLTAR" 'nome para o botão 3(quando o usuário quiser voltar para a tela de cadastro e não o menu principal) ElseIf e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End If End Sub Private Sub CadastroProduto_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Label11.Text = Date.Today If Button1.Text = "Cadastrar" Then CheckBox1.Enabled = True Label12.Visible = True Label13.Visible = True 179 Label14.Visible = True sele_cambobox() 'função combobox (seleciona os dados no banco antes de entrar cadastro) sele_cambobox2() 'função combobox2 (seleciona os dados no banco antes de entrar no cadastro) sele_combobox3() 'função combobox2 (seleciona os dados no banco antes de entrar no cadastro) End If End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os número. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If 'função focus, move o cursor para o campo especificado. If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox2.Focus() End If End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox3.Focus() 'função focus, move o cursor para o campo especificado. 180 End If End Sub Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox4.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub TextBox4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress Dim cod_askii As Short = CShort(Asc(e.KeyChar)) cod_askii = CShort(Sodecimal(cod_askii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. If cod_askii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (valor unitário) If cod_askii = 32 Then e.Handled = True End If 'função focus, move o cursor para o campo especificado. If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox6.Focus() End If 'condição para limitar a vírgula. Só é aceito uma vírgula no campo valor do produto. If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "," Then e.Handled = True If e.KeyChar = "," And (InStr(TextBox4.Text, ",")) > 0 Then e.Handled = True End Sub Private Sub Combobox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox2.KeyPress 181 If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True ComboBox3.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub TextBox6_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço para a textbox (quantidade de produto) If KeyAscii = 32 Then e.Handled = True End If 'função focus, move o cursor para o campo especificado. If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True ComboBox2.Focus() End If End Sub Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) TextBox1.Focus() 'função focus, move o cursor para o campo especificado End If End Sub Private Sub TextBox10_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Dim cod_askii As Short = CShort(Asc(e.KeyChar)) 182 cod_askii = CShort(Sodecimal(cod_askii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. If cod_askii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (valor unitário) If cod_askii = 32 Then e.Handled = True End If If e.KeyChar = Chr(13) Then Button2_Click(Me, EventArgs.Empty) 'ação para o botão, quando o usuário ditigitar enter. End If End Sub Private Sub ComboBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox3.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True ComboBox1.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Consulta.Show() End Sub Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged Try 'Tratando erro conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.Connection = con con.Open() 'Abre a conexão com o banco de dados cmd.CommandType = System.Data.CommandType.Text If ComboBox2.Text > " " Then 'Condição para a pesquisa no banco de dados 183 cmd.CommandText = "SELECT * FROM marcas where nome_marca = '" & ComboBox2.Text & "'" 'condição para buscar o código do item selecionado Else MsgBox("Dados inválidos para pesquisa!", vbCritical) TextBox1.Focus() 'função focus, quando a algum campo de pesquisa for inválido o cursor é movido para a testbox1 End If reader = cmd.ExecuteReader() reader.Read() CodigoMarca = reader("cod_marca") reader.Close() 'Fecha a leitura com o banco de dados con.Close() 'Fecha a conexão com o banco de dados Catch ex As Exception MsgBox(ex.Message) Button1.Focus() 'função focus End Try End Sub Private Sub ComboBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged Try conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.Connection = con con.Open() 'Abre a conexão com o banco de dados cmd.CommandType = System.Data.CommandType.Text If ComboBox3.Text > " " Then 'Condição para a pesquisa no banco de dados cmd.CommandText = "SELECT * FROM linha where nome_linha = '" & ComboBox3.Text & "'" 'condição para buscar o código do item selecionado Else MsgBox("Dados inválidos para pesquisa!", vbCritical) TextBox1.Focus() 'função focus, quando a algum campo de pesquisa for inválido o cursor é movido para a testbox1 End If reader = cmd.ExecuteReader() reader.Read() 184 CodigoLinha = reader("cod_linha") reader.Close() 'Fecha a leitura com o banco de dados con.Close() 'Fecha a conexão com o banco de dados Catch ex As Exception MsgBox(ex.Message) ComboBox2.Focus() 'função focus End Try End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Try 'Tratando erro conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.Connection = con con.Open() 'Abre a conexão com o banco de dados cmd.CommandType = System.Data.CommandType.Text If ComboBox1.Text <> " " Then 'Condição para a pesquisa no banco de dados cmd.CommandText = "SELECT * FROM categoria where nome_categoria = '" & ComboBox1.Text & "'" 'condição para buscar o código do item selecionado Else MsgBox("Dados inválidos para pesquisa!", vbCritical) TextBox1.Focus() 'função focus, quando a algum campo de pesquisa for inválido o cursor é movido para a testbox1 End If reader = cmd.ExecuteReader() reader.Read() CodigoCategoria = reader("cod_categoria") reader.Close() 'Fecha a leitura com o banco de dados con.Close() 'Fecha a conexão com o banco de dados Catch ex As Exception MsgBox(ex.Message) Button1.Focus() 'função focus End Try End Sub 185 Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then cod_barras() TextBox1.Text = dimi Else TextBox1.Clear() End If End Sub End Class „********************************************************************** 'ATUALIZAÇÃO DE PRODUTOS '********************************************************************** ‟ ATUALIZARPRODUTO.VB ' Imports MySql.Data.MySqlClient Public Class AtualizarProduto Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click 'Botão atualizar Try If Val(TextBox6.Text) > 0 And Val(TextBox7.Text) > 0 Then If MsgBox("Deseja atualizar este produto?", vbYesNo, "confirmação") = vbYes Then ' Atualização conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados With cmd .CommandType = CommandType.Text .CommandText = "UPDATE produtos SET qtde_produto = ? WHERE cod_produto = " & CInt(Trim(TextBox5.Text)) 'condição para alteração. Função trim (para remover espaços iniciais e finais), função cint (o número digitado deve sempre ser inteiro. .Parameters.Add("qtde_produto", OleDb.OleDbType.Integer) 186 .Parameters("qtde_produto").Value = +CInt(Trim(TextBox7.Text)) + CInt(Trim(TextBox6.Text)) 'a nova quantidade será somada com a quantidade antiga e assim atualizanda a quantidade .ExecuteNonQuery() End With con.Close() 'fecha a conexão com o banco de dados MsgBox("Cadastro atualizado com sucesso!", vbInformation) 'função clear, limpa os dados digitados na textbox TextBox1.Clear() TextBox2.Clear() TextBox3.Clear() TextBox4.Clear() TextBox5.Clear() TextBox6.Clear() TextBox7.Clear() TextBox8.Clear() TextBox9.Clear() TextBox10.Clear() 'Função enabled. TextBox1.Enabled = True TextBox2.Enabled = True TextBox3.Enabled = True TextBox4.Enabled = True TextBox5.Enabled = True TextBox6.Enabled = True TextBox8.Enabled = True TextBox9.Enabled = True TextBox10.Enabled = True Button5.Enabled = False 'função focus TextBox5.Focus() Else MsgBox("Atualização cancelada.", vbCritical) TextBox5.Focus() 187 End If Else MsgBox("Campo invalido. Existem campos nulos!", vbCritical) TextBox6.Focus() End If Catch erro As Exception MsgBox(erro.Message) TextBox6.Focus() End Try End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 'botão consultar Try 'Tratando erro conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con con.Open() 'Abri o banco de dados 'SELEÇÃO de dados no banco If Val(TextBox1.Text) > 0 Then cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where cod_barras = " & CInt(Trim(TextBox1.Text)) 'segunda condição de pesquisa. Função trim (remove espaços iniciais e finais), função cint(valor inteiro) ElseIf TextBox5.Text > " " Then 'cada condição representa um tipo de pesquisa no banco de dados de acordo com o que é digitado no fórmulario, no caso as textbox. cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where cod_produto = '" & Trim(TextBox5.Text) & "'" 'condição de pesquisa. Função trim (remove espaços iniciais e finais), função cint(valor inteiro) ElseIf TextBox2.Text > " " Then 188 cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where nome_produto like '%" & Trim(TextBox2.Text) & "%'" 'terceira condição de pesquisa. Função trim (remove espaços iniciais e finais) ElseIf TextBox3.Text > " " Then cmd.CommandText = "select A.*,B.*,C.*, D.* from produtos A inner join marcas B on(A.cod_marca=B.cod_marca)inner join linha C on(A.cod_linha=C.cod_linha) inner join categoria D on(A.cod_categoria=D.cod_categoria) where descricao_produto like '%" & Trim(TextBox3.Text) & "%'" 'quarta condição de pesquisa. Função trim (remove espaços iniciais e finais) ElseIf TextBox9.Text > " " Then cmd.CommandText = "select A.*,B.*,C.*, D.* from marcas A inner join produtos B on(B.cod_marca=A.cod_marca)inner join linha C on(B.cod_linha=C.cod_linha) inner join categoria D on(B.cod_categoria=D.cod_categoria) where nome_marca like '%" & Trim(TextBox9.Text) & "%'" 'quinta condição de pesquisa. Função trim (remove espaços iniciais e finais) ElseIf TextBox8.Text > " " Then cmd.CommandText = "select A.*,B.*,C.*, D.* from linha A inner join produtos B on(B.cod_linha=A.cod_linha) inner join marcas C on(B.cod_marca=C.cod_marca) inner join categoria D on(B.cod_categoria=D.cod_categoria) where nome_linha like '%" & Trim(TextBox8.Text) & "%'" 'sexta condição de pesquisa. Função trim (remove espaços iniciais e finais) ElseIf TextBox10.Text > " " Then cmd.CommandText = "select A.*,B.*,C.*, D.* from categoria A inner join produtos B on(B.cod_categoria=A.cod_categoria) inner join marcas C on(B.cod_marca=C.cod_marca) inner join linha D on(B.cod_linha=D.cod_linha) where nome_categoria like '%" & Trim(TextBox10.Text) & "%'" 'sétima condição de pesquisa. Função trim (remove espaços iniciais e finais) Else MsgBox("Dados inválidos para pesquisa!") 'caso o usuario não digite nada nas condições de pesquisa será exibida esta mensagem TextBox5.Focus() 'função focus move o cursor para a textbox5 End If 189 reader = cmd.ExecuteReader() reader.Read() TextBox1.Text = reader("cod_barras") TextBox2.Text = reader("nome_produto") TextBox3.Text = reader("descricao_produto") TextBox4.Text = reader("vlr_unitario") TextBox5.Text = reader("cod_produto") TextBox6.Text = reader("qtde_produto") TextBox9.Text = reader("nome_marca") TextBox8.Text = reader("nome_linha") TextBox10.Text = reader("nome_categoria") reader.Close() 'fecha a leitura com o banco de dados con.Close() 'fecha a conexão com o banco de dados 'função enabled TextBox1.Enabled = False TextBox2.Enabled = False TextBox3.Enabled = False TextBox4.Enabled = False TextBox5.Enabled = False TextBox6.Enabled = False TextBox8.Enabled = False TextBox9.Enabled = False TextBox10.Enabled = False Button5.Enabled = True 'função focus. Move o curso para a textbox7 TextBox7.Focus() Catch mensagem As Exception MsgBox(mensagem.Message) 'mensagem de erro. TextBox5.Focus() 'função focus move o cursor para a textbox5 End Try End Sub Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click 'botão retornar 190 Close() 'fecha o formulário principal.Show() 'executa o menu principal End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click 'Função para o botão limpar TextBox1.Enabled = True 'função enabled TextBox2.Enabled = True TextBox3.Enabled = True TextBox4.Enabled = True TextBox5.Enabled = True TextBox6.Enabled = True TextBox8.Enabled = True TextBox9.Enabled = True TextBox10.Enabled = True Button5.Enabled = False TextBox1.Clear() 'função clear limpa as textbox TextBox2.Clear() TextBox3.Clear() TextBox4.Clear() TextBox5.Clear() TextBox6.Clear() TextBox7.Clear() TextBox8.Clear() TextBox9.Clear() TextBox10.Clear() TextBox5.Focus() 'função focus move o cursor para a textbox5 End Sub Private Sub TextBox5_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox5.KeyPress Dim cod_askii As Short = CShort(Asc(e.KeyChar)) cod_askii = CShort(SoNumeros(cod_askii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. 191 If cod_askii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (valor unitário) If cod_askii = 32 Then e.Handled = True End If If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) 'Evento click, quando o usuario digita enter o botão é clickado End If End Sub Private Sub TextBox1_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim cod_askii As Short = CShort(Asc(e.KeyChar)) cod_askii = CShort(SoNumeros(cod_askii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. If cod_askii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (valor unitário) If cod_askii = 32 Then e.Handled = True End If If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) 'Evento click, quando o usuario digita enter o botão é clickado End If End Sub Private Sub TextBox2_KeyPress(sender As Object, tem.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Chr(13) Then e As Sys- 192 Button1_Click(Me, EventArgs.Empty) 'Evento click, quando o usuario digita enter o botão é clickado End If End Sub Private Sub TextBox3_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) 'Evento click, quando o usuario digita enter o botão é clickado End If End Sub Private Sub TextBox4_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress Dim cod_askii As Short = CShort(Asc(e.KeyChar)) cod_askii = CShort(Sodecimal(cod_askii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. If cod_askii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (valor unitário) If cod_askii = 32 Then e.Handled = True End If 'condição para limitar a vírgula. Só é aceito uma vírgula no campo valor do produto. If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "," Then e.Handled = True If e.KeyChar = "," And (InStr(TextBox4.Text, ",")) > 0 Then e.Handled = True If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox6.Focus() 'função focus, quando o usuário digita enter o cursor irá para a textbox6 End If End Sub 193 Private Sub TextBox6_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress Dim cod_askii As Short = CShort(Asc(e.KeyChar)) cod_askii = CShort(Sodecimal(cod_askii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. If cod_askii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (valor unitário) If cod_askii = 32 Then e.Handled = True End If If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox7.Focus() 'função focus, quando o usuário digita enter o cursor irá para a textbox7 End If End Sub Private Sub TextBox7_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox7.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço para a textbox (quantidade de produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Chr(13) Then Button5_Click(Me, EventArgs.Empty) 'Evento click, quando o usuario digita enter o botão é clickado 194 End If End Sub Private Sub TextBox8_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox8.KeyPress If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) 'Evento click, quando o usuario digita enter o botão é clickado End If End Sub Private Sub TextBox9_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox9.KeyPress If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) 'Evento click, quando o usuario digita enter o botão é clickado End If End Sub Private Sub TextBox10_KeyPress(sender As Object, e As Sys- tem.Windows.Forms.KeyPressEventArgs) Handles TextBox10.KeyPress Dim cod_askii As Short = CShort(Asc(e.KeyChar)) cod_askii = CShort(Sodecimal(cod_askii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. If cod_askii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (valor unitário) If cod_askii = 32 Then e.Handled = True End If If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) 'Evento click, quando o usuario digita enter o botão é clickado End If End Sub 195 Private Sub AtualizarProduto_KeyDown(sender As Object, e As Sys- tem.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then End If End Sub End Class „********************************************************************** 'ALTERAÇÃO DE PRODUTO '********************************************************************** ‟ ALTERARPRODUTO.VB ' Public Class AlterarProduto Dim moeda As String Private Function limpar() 'função para limpar os campos. 'função para o botão apagar TextBox1.Clear() 'função clear, apaga os dados na textbox TextBox2.Clear() TextBox3.Clear() TextBox4.Clear() TextBox5.Clear() TextBox6.Clear() MaskedTextBox1.Clear() CheckBox1.Checked = False TextBox5.Enabled = True 'função enabled. Abilita determiados objetos Button5.Enabled = False TextBox5.Focus() 'função focus, move o cursor para o campo informado Return TextBox1.Text() End Function Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click If Button5.Text = "Alterar" Then Try 196 If Val(TextBox1.Text) > 0 And TextBox2.Text > " " And Val(TextBox4.Text) > -1 And Val(TextBox6.Text) > 0 Then 'condição para que seja feita a alteração. Não pode aver valores nulos If MsgBox("Deseja alterar este produto?", vbYesNo, "confirmação") = vbYes Then ' ALTERAÇÃO conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados With cmd .CommandType = CommandType.Text .CommandText = "UPDATE produtos SET cod_barras = ?, nome_produto = ?, descricao_produto = ?, vlr_unitario = ?, qtde_produto = ?, data_cads_prod = ? WHERE cod_produto = " & CInt(Trim(TextBox5.Text)) 'Função trim para tirar os epaços finais e iniciais e cint para o valor ser apenas inteiro .Parameters.Add("cod_barras", OleDb.OleDbType.Char) .Parameters("cod_barras").Value = Trim(TextBox1.Text) 'função trim e cint para remover espaços iniciais e finais. Cint para que o valor seja apenas inteiro .Parameters.Add("nome_produto", OleDb.OleDbType.VarChar) .Parameters("nome_produto").Value = Trim(TextBox2.Text) 'função trim para remover espaços .Parameters.Add("descricao_produto", OleDb.OleDbType.VarChar) .Parameters("descricao_produto").Value = Trim(TextBox3.Text) 'função trim, remove espaços .Parameters.Add("vlr_unitario", OleDb.OleDbType.Decimal) .Parameters("vlr_unitario").Value = Trim(Replace(TextBox4.Text, ".", ",")) 'função trim, remove epaços finais e iniciais. .Parameters.Add("qtde_produto", OleDb.OleDbType.Integer) .Parameters("qtde_produto").Value = Trim(TextBox6.Text) 'função trim e cint para remover espaços iniciais e finais. Cint para que o valor seja apenas inteiro .Parameters.Add("data_cads_prod", OleDb.OleDbType.Date) .Parameters("data_cads_prod").Value CDate(MaskedTextBox1.Text) .ExecuteNonQuery() End With = 197 con.Close() MsgBox("Cadastro alterado com sucesso!", vbInformation) limpar() 'fução para limpar as textbox e abilitar determinado obejto após a lateração. Else MsgBox("Alteração cancelada!", vbExclamation) TextBox5.Focus() 'função focus. Sempre que a alteração é cancelada o curso volta para a textbox5 End If Else MsgBox("Campo inválido.", vbCritical) TextBox5.Focus() 'função focus. Sempre que da algum campo inválido o curso volta para a textbox5 End If Catch ex1 As Exception MsgBox(ex1.Message) TextBox5.Focus() 'função focus. Sempre que da erro o curso volta para a textbox5 End Try ElseIf Button5.Text = "Excluir" Then 'condição para quando o botão for excluir. Executa as instruções abaixo Try 'FUNÇÃO EXCLUÍR If Val(TextBox1.Text) > 0 And TextBox2.Text > " " And Val(TextBox4.Text) > 0 And Val(TextBox6.Text) > 0 Then 'condição para exclusão do produto. Não pode haver valores nulos execeto a descrição do produto If MsgBox("Deseja excluir este produto?", vbYesNo, "Confirmação") = vbYes Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() 'abri a conexão com o banco de dados With cmd .CommandType = CommandType.Text 198 .CommandText = "Delete FROM produtos where cod_produto = " & CInt(Trim(TextBox5.Text)) 'a função cint permite apenas valores interiros na textbox. A função trim remove os espaçosfinais e iniciais .Parameters.Add("produtos", OleDb.OleDbType.VarChar) .Parameters("produtos").Value = TextBox5.Text .ExecuteNonQuery() End With MsgBox("Registro excluído com êxito!", vbInformation) con.Close() 'fecha a conexão com o banco de dados limpar() 'função limpar, o comando é executa após a exclusão do produto. Else MsgBox("Exclusão cancelada!", vbExclamation) TextBox5.Focus() 'função focus. Sempre que uma operação é cancelada o curso volta para a textbox5 End If Else MsgBox("Dados inválido!", vbCritical) TextBox5.Focus() 'função focus. Sempre que há um campo inválido o curso volta para a textbox5 End If Catch ex As Exception MsgBox(ex.Message) TextBox5.Focus() 'função focus. Sempre que da erro o curso volta para a textbox5 End Try End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Close() 'fecha o formulário principal.Show() 'executa o formulário prinpical End Sub 199 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try 'Tratando erros Dim data As Date conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados If CChar(TextBox1.Text) > " " Then cmd.CommandText = "SELECT * FROM produtos where cod_barras = '" & Trim(TextBox1.Text) & "'" 'a função cint permite apenas valores interiros na textbox. A função trim remove os espaçosfinais e iniciais ElseIf Val(TextBox5.Text) > 0 Then cmd.CommandText = "SELECT * FROM produtos where cod_produto = " & CInt(Trim(TextBox5.Text)) 'a função cint permite apenas valores interiros na textbox. A função trim remove os espaçosfinais e iniciais ElseIf TextBox2.Text > " " Then cmd.CommandText = "SELECT * FROM produtos where nome_produto like '%" & Trim(TextBox2.Text) & "%'" 'Função trim, remove os epaços iniciais e finais ElseIf TextBox3.Text > " " Then cmd.CommandText = "SELECT * FROM produtos where descricao_produto like '%" & Trim(TextBox3.Text) & "%'" 'Função trim, remove os epaços iniciais e finais Else MsgBox("Dados inválido para pesquisa!", vbCritical) TextBox5.Focus() 'função focus. Sempre que é feito uma consulta e algum campo está inválido o curso volta para a textbox5 End If reader = cmd.ExecuteReader() reader.Read() TextBox1.Text = reader("cod_barras") TextBox2.Text = reader("nome_produto") TextBox3.Text = reader("descricao_produto") TextBox4.Text = reader("vlr_unitario") TextBox5.Text = reader("cod_produto") 200 TextBox6.Text = reader("qtde_produto") data = reader("data_cads_prod") MaskedTextBox1.Text = data con.Close() 'fecha o conexão com o banco de dados Button5.Enabled = True 'função enabled TextBox5.Enabled = False TextBox5.Focus() ' função focus, move o cursor para o campo especificado Catch ex As Exception MsgBox(ex.Message) TextBox5.Focus() ' função focus. Sempre que ocorre um erro quando cultado um produto o curso volta para a textbox5 End Try End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click limpar() 'Função limpar. Instruções executada para limpar as textbox End Sub Private Sub TextBox4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress Dim cod_askii As Short = CShort(Asc(e.KeyChar)) cod_askii = CShort(Sodecimal(cod_askii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. If cod_askii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (valor unitário) If cod_askii = 32 Then e.Handled = True End If 'condição para limitar a vírgula. Só é aceito uma vírgula no campo valor do produto. If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "," Then e.Handled = True If e.KeyChar = "," And (InStr(TextBox4.Text, ",")) > 0 Then e.Handled = True 201 If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox6.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub TextBox5_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox5.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os número. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) 'Ação executada no momente em que o usuário digita enter End If End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os número. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 202 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox2.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox3.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True TextBox4.Focus() 'função focus, move o cursor para o campo especificado. End If End Sub Private Sub TextBox6_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os número. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 203 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True If MaskedTextBox1.Enabled = True Then MaskedTextBox1.Focus() 'função focus, move o cursor para o campo especificado. Else e.KeyChar = Chr(13) Button5_Click(Me, EventArgs.Empty) End If End If End Sub Private Sub MaskedTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox1.KeyPress If e.KeyChar = Chr(13) Then Button5_Click(Me, EventArgs.Empty) 'Ação executada no momente em que o usuário digita enter End If End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then MaskedTextBox1.Enabled = True TextBox6.Focus() Else MaskedTextBox1.Enabled = False TextBox6.Focus() End If End Sub 204 Private Sub AlterarProduto_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End Sub Private Sub AlterarProduto_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Button5.Text = "Excluir" Then CheckBox1.Enabled = False End If End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged End Sub End Class „********************************************************************** 'ALTERAR MARCA '********************************************************************** ‟ ALTERARMARCA.VB ' Public Class AlterarMarca Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If Button2.Text = "Alterar" Then Try conexao_mysql() 'procedure de conexão e comando (cmd e con) If CInt(TextBox1.Text) > 0 And TextBox2.Text > " " Then ' If MsgBox("Deseja alterar esta marca?", vbYesNo, "confirmação") = vbYes Then cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados With cmd 205 .CommandType = CommandType.Text .CommandText = "UPDATE marcas SET nome_marca = ? WHERE cod_marca = " & CInt(Trim(TextBox1.Text)) 'Só pode haver valores inteiros(número). Função trim romove espaços iniciais e finais da textbox .Parameters.Add("nome_marca", OleDb.OleDbType.VarChar) .Parameters("nome_marca").Value = Trim(TextBox2.Text) 'Função trim romove espaços iniciais e finais da textbox .ExecuteNonQuery() End With con.Close() 'Fecha a conexão com o banco de dados MsgBox("Cadastro alterado com sucesso!", vbInformation) TextBox1.Clear() 'função clear, limpa as textbox após a alteração TextBox2.Clear() TextBox1.Enabled = True 'função enabled para determinar o campo que fica desabilitado ou o botãõ que recebe a ação. Button2.Enabled = False TextBox1.Focus() 'Função focus, move o cursor para o campo informado Else MsgBox("Alteração cancelada!", vbExclamation) TextBox1.Focus() 'Função focus, move o cursor para o campo informado End If Else MsgBox("Campo inválido.", vbCritical) TextBox1.Focus() 'Função focus, move o cursor para o campo informado End If Catch ex1 As Exception MsgBox(ex1.Message) TextBox1.Focus() 'Função focus, move o cursor para o campo informado End Try ElseIf Button2.Text = "Excluir" Then 'Condição para quando o botão for excluir. Executa as instruções abaixo Try 'Tratando erro If CInt(TextBox1.Text) > 0 And TextBox2.Text > " " Then 'condição para exclusão. Nenhum valor pode ser nulo 206 If MsgBox("Deseja excluir esta marca?", vbYesNo, "confirma") = vbYes Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados With cmd .CommandType = CommandType.Text .CommandText = "Delete FROM marcas where cod_marca = " & CInt(Trim(TextBox1.Text)) .Parameters.Add("nome_marca", OleDb.OleDbType.VarChar) .Parameters("nome_marca").Value = TextBox1.Text .ExecuteNonQuery() End With con.Close() 'Feha a conexão com o banco de dados MsgBox("Registro excluído com êxito!", vbInformation) TextBox1.Clear() 'função clear TextBox2.Clear() TextBox1.Enabled = True 'função enabled Button2.Enabled = False TextBox1.Focus() 'Função focus, move o cursor para o campo informado Else MsgBox("Exclusão cancelada!", vbExclamation) TextBox1.Focus() 'Função focus, move o cursor para o campo informado End If Else MsgBox("Valor informado inválido!", vbCritical) TextBox1.Focus() 'Função focus, move o cursor para o campo informado End If Catch ex2 As Exception MsgBox(ex2.Message) MsgBox("A marca não foi excluída. Exclua o produto desta marca antes!", vbCritical) TextBox1.Enabled = True 'função enabled Button2.Enabled = False 207 TextBox1.Focus() 'Função focus, move o cursor para o campo informado End Try End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Close() 'fecha o formulário principal.Show() 'executa o menu principal End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try 'Tratando erro de conexão conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados If TextBox2.Text > " " Then cmd.CommandText = "SELECT * FROM marcas where nome_marca like '%" & Trim(TextBox2.Text) & "%'" 'Função trim romove espaços iniciais e finais da textbox ElseIf Val(TextBox1.Text) > 0 Then cmd.CommandText = "SELECT * FROM marcas where cod_marca = " & CInt(Trim(TextBox1.Text)) 'Só pode haver valores inteiros(número). Função trim romove espaços iniciais e finais da textbox Else MsgBox("Valor inválido!", vbCritical) TextBox1.Focus() End If reader = cmd.ExecuteReader() reader.Read() TextBox1.Text = reader("cod_marca") TextBox2.Text = reader("nome_marca") reader.Close() 'fecha a leitura do no banco con.Close() 'fecha a conexão com o banco de dados TextBox1.Enabled = False 208 Button2.Enabled = True TextBox2.Focus() 'Função focus, move o cursor para o campo informado Catch ex3 As Exception MsgBox(ex3.Message) TextBox1.Enabled = True Button2.Enabled = False TextBox1.Focus() 'Função focus, move o cursor para o campo informado End Try End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click 'Instrução para o botão apagar TextBox1.Clear() TextBox2.Clear() TextBox1.Enabled = True Button2.Enabled = False TextBox1.Focus() 'Função focus, move o cursor para o campo informado End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os número. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Chr(13) Then 209 Button1_Click(Me, EventArgs.Empty) 'ação para quando uma das textbox é digitado enter. End If End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) 'ação para quando uma das textbox é digitado enter. End If End Sub Private Sub AlterarMarca_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End Sub End Class „********************************************************************** 'ALTERAR LINHA '********************************************************************** ‟ ALTERARLINHA.VB ' Public Class AlterarLinha Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If Button2.Text = "Alterar" Then 'instução para quando o botão for Alterar Try If CInt(TextBox1.Text) > 0 And TextBox2.Text > " " Then If MsgBox("Deseja alterar esta linha?", vbYesNo, "confirmação") = vbYes Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con 210 con.Open() 'Abri a conexão com o banco de dados With cmd .CommandType = CommandType.Text .CommandText = "UPDATE linha SET nome_linha = ? WHERE cod_linha = " & CInt(Trim(TextBox1.Text)) 'Condição para a primeira pesquisa. Os dados digitados tem de ser do tipo integer. A função trim remove espaços iniciais e finais .Parameters.Add("nome_linha", OleDb.OleDbType.VarChar) .Parameters("nome_linha").Value = Trim(TextBox2.Text) 'Condição para a segunda pesquisa. Os dados digitados tem de ser do tipo texto. A função trim remove espaços iniciais e fianis .ExecuteNonQuery() End With con.Close() 'fecha a conexão com o banco de dados MsgBox("Cadastro alterado com sucesso!", vbInformation) TextBox1.Clear() 'limpa a textbox após o cadastro TextBox2.Clear() TextBox1.Enabled = True 'Função abilitar, abilita determinados objetos no formulário Button2.Enabled = False TextBox1.Focus() 'Função focus, move o cursor para o campo informado Else MsgBox("Alteração cancelada!", vbExclamation) TextBox1.Focus() 'Função focus, move o cursor para o campo informado End If Else MsgBox("Campo invalido.", vbCritical) TextBox1.Focus() 'Função focus, move o cursor para o campo informado End If Catch ex1 As Exception MsgBox(ex1.Message) TextBox1.Focus() 'Função focus, move o cursor para o campo informado End Try ElseIf Button2.Text = "Excluir" Then 'instrução para quando o botão for Excluir Try 211 If CInt(TextBox1.Text) > 0 And TextBox2.Text > " " Then If MsgBox("Deseja excluir esta linha?", vbYesNo, "confirma") = vbYes Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() With cmd .CommandType = CommandType.Text .CommandText = "Delete FROM linha where cod_linha = " & CInt(Trim(TextBox1.Text)) 'função trim: remove espaços iniciais e finais. Cint: os valores númericos devem ser do tipo integer .Parameters.Add("linha", OleDb.OleDbType.VarChar) .Parameters("linha").Value = TextBox1.Text .ExecuteNonQuery() End With con.Close() 'fecha a conexão com o banco de dados MsgBox("Registro excluído com êxito!", vbInformation) TextBox1.Clear() 'função clear, limpa as textbox TextBox2.Clear() TextBox1.Enabled = True ''Função abilitar, abilita determinados objetos no formulário Button2.Enabled = False TextBox1.Focus() 'Função focus, move o cursor para o campo informado Else MsgBox("Exclusão cancelada!", vbExclamation) TextBox1.Focus() 'Função focus, move o cursor para o campo informado End If Else MsgBox("Informação para exclusão inválida!", vbCritical) TextBox1.Focus() 'Função focus, move o cursor para o campo informado End If Catch ex2 As Exception MsgBox(ex2.Message) 212 MsgBox("A linha não foi excluída. Exclua o produto desta linha antes!", vbCritical) TextBox1.Enabled = True 'função enabled Button2.Enabled = False TextBox1.Focus() 'Função focus, move o cursor para o campo informado End Try End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Close() 'fecha o formulário principal.Show() 'executa o menu principal End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try 'Tratando no formulario e na conexão conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con con.Open() 'abri a conexão com o banco de dados If TextBox2.Text > " " Then cmd.CommandText = "SELECT * FROM linha where nome_linha like '%" & Trim(TextBox2.Text) & "%'" 'Condição para a segunda pesquisa. Os dados digitados tem de ser do tipo texto. A função trim remove espaços iniciais e fianis ElseIf Val(TextBox1.Text) > 0 Then cmd.CommandText = "SELECT * FROM linha where cod_linha = " & CInt(Trim(TextBox1.Text)) 'Condição para a primeira pesquisa. Os dados digitados tem de ser do tipo integer. A função trim remove espaços iniciais e finais Else MsgBox("Valor inválido!", vbCritical) TextBox1.Focus() 'Função focus, move o cursor para o campo informado End If reader = cmd.ExecuteReader() reader.Read() 213 TextBox1.Text = reader("cod_linha") TextBox2.Text = reader("nome_linha") reader.Close() 'fecha a leitura do banco de dados con.Close() 'fecha a conexão com o banco de dados 'Função abilitar Button2.Enabled = True TextBox1.Enabled = False TextBox2.Focus() 'Função focus, move o cursor para o campo informado Catch ex3 As Exception MsgBox(ex3.Message) TextBox1.Enabled = True ''Função abilitar, abilita determinados objetos no formulário Button2.Enabled = False TextBox1.Focus() 'Função focus, move o cursor para o campo informado End Try End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click 'Instrução para o botão apagar TextBox1.Clear() 'função clear TextBox2.Clear() Button2.Enabled = False 'Função abilitar, abilita determinados objetos no formulário TextBox1.Enabled = True TextBox1.Focus() 'Função focus, move o cursor para o campo informado End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os número. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True 214 End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) 'ação quando o usuário digita enter em uma das textbox End If End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) 'ação quando o usuário digita enter em uma das textbox End If End Sub Private Sub AlterarLinha_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End Sub End Class „********************************************************************** 'ALTERAR CATEGORIA '********************************************************************** ‟ ALTERARCATEGORIA.VB ' Public Class AlterarCategoria Private Sub seta_navegator(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) 215 If e.KeyCode = Keys.Up Then If Not Me.GetNextControl(sender, False) Is Nothing Then Me.GetNextControl(sender, False).Focus() ElseIf e.KeyCode = Keys.Down Then 'Or e.KeyCode = Keys.Enter Then If Not Me.GetNextControl(sender, True) Is Nothing Then Me.GetNextControl(sender, True).Focus() End If End Sub Private Function limpar_dados() 'Instrução para o botão apagar TextBox1.Clear() TextBox2.Clear() TextBox1.Enabled = True 'Função abilitar, abilita determinados objetos no formulário Button2.Enabled = False TextBox1.Focus() 'função focus, quando o botão apagar e clickado o cursor irá para a textbox1 Return TextBox1.Text() End Function Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If Button2.Text = "Alterar" Then 'ação para o botão quando for Alterar Try If Val(TextBox1.Text) > 0 And TextBox2.Text > " " Then conexao_mysql() 'procedure de conexão e comando (cmd e con) If MsgBox("Deseja alterar esta categoria?", vbYesNo, "confirmação") = vbYes Then cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados With cmd .CommandType = CommandType.Text .CommandText = "UPDATE categoria SET nome_categoria = ? WHERE cod_categoria = " & CInt(Trim(TextBox1.Text)) 'O tipo de dados dever ser integer e a função trim romove os espaços iniciais e finais da textbox 216 .Parameters.Add("nome_categoria", OleDb.OleDbType.VarChar) .Parameters("nome_categoria").Value = Trim(TextBox2.Text) 'Função trim. Romove espaços iniciais e finais da textbox .ExecuteNonQuery() End With con.Close() 'Fecha a conexão com o banco de dados limpar_dados() 'função limpar, limpa as textbox após a alteração MsgBox("Cadastro alterado com sucesso!", vbInformation) Else MsgBox("Alteração cancelada!", vbExclamation) TextBox1.Focus() 'função focus, usado para mover o cursor para o campo requerido. End If Else MsgBox("Campo invalido.", vbCritical) TextBox1.Focus() 'função focus, usado para mover o cursor para o campo requerido. End If Catch ex As Exception MsgBox(ex.Message) TextBox1.Focus() 'função focus, usado para mover o cursor para o campo requerido. End Try ElseIf Button2.Text = "Excluir" Then 'quando o botão seja seja excluir Try 'Tratando erro If CInt(TextBox1.Text) > 0 And TextBox2.Text > " " Then If MsgBox("Deseja excluir esta categoria?", vbYesNo, "confirma") = vbYes Then conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.Connection = con con.Open() 'Abri a conexão com o banco de dados With cmd .CommandType = CommandType.Text 217 .CommandText = "Delete FROM categoria where cod_categoria = " & CInt(Trim(TextBox1.Text)) 'O tipo de dados dever ser integer e a função trim romove os espaços iniciais e finais da textbox .Parameters.Add("categoria", OleDb.OleDbType.VarChar) .Parameters("categoria").Value = TextBox1.Text 'Função trim. Romove espaços iniciais e finsais da textbox .ExecuteNonQuery() End With con.Close() 'Fecha a conexão com o banco de dados limpar_dados() 'função limpar, limpa as textbox após a exclusão MsgBox("Registro excluído com êxito!", vbInformation) Else MsgBox("Exclusão cancelada!", vbExclamation) TextBox1.Focus() 'função focus, quando a exclusão é cancelada o cursor volta para a textbox1 End If Else MsgBox("Informação para exclusão inválida!", vbCritical) TextBox1.Focus() 'função focus, quando a algum dado incorreto para pesquisa o cursor volta para a textbox1 End If Catch ex As Exception MsgBox(ex.Message) MsgBox("A categoria não foi excluída. Exclua o produto desta categoria antes!", vbCritical) TextBox1.Enabled = True 'Função abilitar, abilita determinados objetos no formulário Button2.Enabled = False TextBox1.Focus() 'função focus, quando a mensagem de erro é exibida na tela o cursor volta para a textbox1 End Try End If End Sub 218 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Close() 'fecha o formulário principal.Show() 'Executa o formulário principal End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try 'Tratando erro conexao_mysql() 'procedure de conexão e comando (cmd, con) cmd.Connection = con con.Open() 'Abre a conexão com o banco de dados cmd.CommandType = System.Data.CommandType.Text If TextBox2.Text > " " Then 'Segunda condição para pequisa no banco de dados cmd.CommandText = "SELECT * FROM categoria where nome_categoria like '%" & Trim(TextBox2.Text) & "%'" 'Função trim romove espaços iniciais e finais da textbox ElseIf Val(TextBox1.Text) > 0 Then 'Condição para a pesquisa no banco de dados cmd.CommandText = "SELECT * FROM categoria where cod_categoria = " & CInt(Trim(TextBox1.Text)) 'Só pode haver valores inteiros(número). Função trim romove espaços iniciais e finais da textbox Else MsgBox("Dados inválidos para pesquisa!", vbCritical) TextBox1.Focus() 'função focus, quando a algum campo de pesquisa inválido o cursor é movido para a testbox1 End If reader = cmd.ExecuteReader() reader.Read() TextBox1.Text = reader("cod_categoria") TextBox2.Text = reader("nome_categoria") reader.Close() 'Fecha a leitura com o banco de dados con.Close() 'Fecha a conexão com o banco de dados TextBox1.Enabled = False 'Função abilitar, abilita determinados objetos no formulário 219 Button2.Enabled = True TextBox2.Focus() 'quando a select é executado com sucesso o cursor irá para a textbox2 por que a textbox1 fica desabilitada Catch ex As Exception MsgBox(ex.Message) TextBox1.Focus() 'função focus, move o cursor quando tem algum erro para a textbox1 End Try End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click limpar_dados() End Sub Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown seta_navegator(sender, e) End Sub Private Sub TextBox2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox2.KeyDown seta_navegator(sender, e) End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True 220 End If If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) 'Evento click, quando o usuario digita enter o botão é clickado End If End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) 'Evento click, quando o usuario digita enter o botão é clickado End If End Sub Private Sub AlterarCategoria_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End Sub End Class „********************************************************************** 'ACESSOS '********************************************************************** ‟ ACESSOS.VB ' Public Class Acessos Dim nome_login, nome_usuario As String Private Function auto_checar() CheckBox1.Checked = True CheckBox2.Checked = True CheckBox3.Checked = True CheckBox4.Checked = True CheckBox5.Checked = True 221 CheckBox6.Checked = True CheckBox7.Checked = True CheckBox8.Checked = True CheckBox9.Checked = True CheckBox10.Checked = True CheckBox11.Checked = True CheckBox12.Checked = True CheckBox13.Checked = True CheckBox16.Checked = True CheckBox18.Checked = True CheckBox19.Checked = True CheckBox20.Checked = True CheckBox21.Checked = True CheckBox22.Checked = True CheckBox23.Checked = True Return CheckBox1.Checked() End Function Private Function desabilitar_checbox() CheckBox1.Checked = False CheckBox2.Checked = False CheckBox3.Checked = False CheckBox4.Checked = False CheckBox5.Checked = False CheckBox6.Checked = False CheckBox7.Checked = False CheckBox8.Checked = False CheckBox9.Checked = False CheckBox10.Checked = False CheckBox11.Checked = False CheckBox12.Checked = False CheckBox13.Checked = False CheckBox16.Checked = False CheckBox18.Checked = False CheckBox19.Checked = False 222 CheckBox20.Checked = False CheckBox21.Checked = False CheckBox22.Checked = False CheckBox23.Checked = False Return CheckBox1.Checked() End Function Private Function apagar() TextBox1.Clear() TextBox2.Clear() MaskedTextBox1.Clear() MaskedTextBox2.Clear() Button5.Enabled = False Return TextBox1.Text() End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try conexao_mysql() 'procedure de conexão e comando (cmd e con) cmd.CommandType = System.Data.CommandType.Text cmd.Connection = con 'variavel de conexão con.Open() 'abri o banco If TextBox1.Text > " " Then cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where nome_usuario like '%" & Trim(TextBox1.Text) & "%'" ElseIf Val(MaskedTextBox1.Text) > 0 Then cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where rg_usuario = '" & Trim(MaskedTextBox1.Text) & "'" ElseIf Val(MaskedTextBox2.Text) > 0 Then cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where cpf_usuario = '" & Trim(MaskedTextBox2.Text) & "'" ElseIf TextBox2.Text > " " Then cmd.CommandText = "select A.*, B.* from usuario A INNER JOIN login B on(A.cod_login=B.cod_login) where nome_login = '" & Trim(TextBox2.Text) & "'" Else 223 MsgBox("Dados inocrreto para pesquisa!", vbCritical) 'quando os campos estã nulos e o usuário tenta fazer pequisa. TextBox1.Focus() End If reader = cmd.ExecuteReader() 'comando para executar a reader reader.Read() 'variável reader para ler os dados selecionado na select cod_login = reader("cod_login") 'codigo atendente. será usado na alteração do usuario If cod_login > 1 Then TextBox2.Text = reader("nome_login") nome_login = TextBox2.Text TextBox1.Text = reader("nome_usuario") nome_usuario = TextBox1.Text MaskedTextBox1.Text = reader("rg_usuario") MaskedTextBox2.Text = reader("cpf_usuario") CheckBox1.Checked = reader("alt_categoria") CheckBox2.Checked = reader("cad_categoria") CheckBox3.Checked = reader("exc_categoria") CheckBox4.Checked = reader("exc_linha") CheckBox5.Checked = reader("cad_linha") CheckBox6.Checked = reader("alt_linha") CheckBox7.Checked = reader("exc_marca") CheckBox8.Checked = reader("cad_marca") CheckBox9.Checked = reader("alt_marca") CheckBox10.Checked = reader("exc_produto") CheckBox11.Checked = reader("cad_produto") CheckBox12.Checked = reader("alt_produto") CheckBox13.Checked = reader("exc_itens_venda") CheckBox16.Checked = reader("exc_venda") CheckBox18.Checked = reader("alt_venda") CheckBox19.Checked = reader("exc_usuario") CheckBox20.Checked = reader("cad_usuario") CheckBox21.Checked = reader("alt_usuario") CheckBox22.Checked = reader("relatorio") 224 CheckBox23.Checked = reader("atualizar") Button5.Enabled = True reader.Close() 'fechando a reader con.Close() 'fechando o banco de dados Else MsgBox("Consulta inválida.", vbCritical) End If Catch ex As Exception MsgBox(ex.Message & vbCrLf & " Login não encontrado!", vbCritical) Button5.Enabled = False TextBox1.Focus() End Try End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click apagar() 'função apagar. desabilitar_checbox() 'função para desabilitar as checbox TextBox1.Focus() 'move o cursor para a textbox1 End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Try If TextBox1.Text > " " And TextBox2.Text > " " Then If nome_login = TextBox2.Text And nome_usuario = TextBox1.Text Then If MsgBox("Deseja efetuar estas configurações?", vbYesNo, "confirmação") = vbYes Then sisve_acessos() 'procedure de configuração de acesso ao sistema TextBox1.Focus() desabilitar_checbox() 'função de checkbox - deixa como 0 a chechbox, ou seja, checbox=false apagar() 'função apagar Else MsgBox("Configuração cancelada.", vbExclamation) End If 225 Else MsgBox("Alteração inválida! Cadastro diferente do consultado.", vbCritical) End If Else MsgBox("Alteração invalida, verifique os campos e tente novamente!", vbCritical) End If Catch sal As Exception MsgBox(sal.Message) TextBox1.Focus() End Try End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Close() principal.Show() End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then tacesso(0, 0) = 1 'alterar categoria Else tacesso(0, 0) = 0 End If End Sub Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged If CheckBox2.Checked = True Then tacesso(0, 1) = 1 'cadastrar categoria Else tacesso(0, 1) = 0 End If End Sub 226 Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged If CheckBox3.Checked = True Then tacesso(0, 2) = 1 'excluir categoria Else tacesso(0, 2) = 0 End If End Sub Private Sub CheckBox6_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox6.CheckedChanged If CheckBox6.Checked = True Then tacesso(0, 3) = 1 'alterar linha Else tacesso(0, 3) = 0 End If End Sub Private Sub CheckBox5_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox5.CheckedChanged If CheckBox5.Checked = True Then tacesso(0, 4) = 1 'cadastrar linha Else tacesso(0, 4) = 0 End If End Sub Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged If CheckBox4.Checked = True Then tacesso(0, 5) = 1 'excluir linha Else tacesso(0, 5) = 0 End If End Sub Private Sub CheckBox9_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox9.CheckedChanged 227 If CheckBox9.Checked = True Then tacesso(0, 6) = 1 'alteerar marca Else tacesso(0, 6) = 0 End If End Sub Private Sub CheckBox8_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox8.CheckedChanged If CheckBox8.Checked = True Then tacesso(0, 7) = 1 'cadastrar marca Else tacesso(0, 7) = 0 End If End Sub Private Sub CheckBox7_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox7.CheckedChanged If CheckBox7.Checked = True Then tacesso(0, 8) = 1 'excluir marca Else tacesso(0, 8) = 0 End If End Sub Private Sub CheckBox12_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox12.CheckedChanged If CheckBox12.Checked = True Then tacesso(0, 9) = 1 'alterar produto Else tacesso(0, 9) = 0 End If End Sub Private Sub CheckBox11_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox11.CheckedChanged If CheckBox11.Checked = True Then tacesso(0, 10) = 1 'cadastrar produto 228 Else tacesso(0, 10) = 0 End If End Sub Private Sub CheckBox10_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox10.CheckedChanged If CheckBox10.Checked = True Then tacesso(0, 11) = 1 'excluir produto Else tacesso(0, 11) = 0 End If End Sub Private Sub CheckBox13_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox13.CheckedChanged If CheckBox13.Checked = True Then tacesso(0, 12) = 1 'excluir itens venda Else tacesso(0, 12) = 0 End If End Sub Private Sub CheckBox18_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox18.CheckedChanged If CheckBox18.Checked = True Then tacesso(0, 13) = 1 'alterar venda Else tacesso(0, 13) = 0 End If End Sub Private Sub CheckBox16_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox16.CheckedChanged If CheckBox16.Checked = True Then tacesso(0, 14) = 1 'excluir venda Else tacesso(0, 14) = 0 229 End If End Sub Private Sub CheckBox21_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox21.CheckedChanged If CheckBox21.Checked = True Then tacesso(0, 15) = 1 'alterar usuário Else tacesso(0, 15) = 0 End If End Sub Private Sub CheckBox20_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox20.CheckedChanged If CheckBox20.Checked = True Then tacesso(0, 16) = 1 'cadastrar usuário Else tacesso(0, 16) = 0 End If End Sub Private Sub CheckBox19_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox19.CheckedChanged If CheckBox19.Checked = True Then tacesso(0, 17) = 1 'excluir usuário Else tacesso(0, 17) = 0 End If End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click If Button4.Text = "Habilitar" Then auto_checar() Button4.Text = "Desabilitar" Button5.Focus() ElseIf Button4.Text = "Desabilitar" Then desabilitar_checbox() 230 Button4.Text = "Habilitar" TextBox1.Focus() End If End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) TextBox1.Focus() 'função focus, move o cursor para o campo especificado End If End Sub Private Sub MaskedTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox1.KeyPress If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) TextBox1.Focus() 'função focus, move o cursor para o campo especificado End If End Sub Private Sub MaskedTextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox2.KeyPress If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) TextBox1.Focus() 'função focus, move o cursor para o campo especificado End If End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Chr(13) Then Button1_Click(Me, EventArgs.Empty) TextBox1.Focus() 'função focus, move o cursor para o campo especificado End If End Sub Private Sub CheckBox23_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox23.CheckedChanged 231 If CheckBox23.Checked = True Then tacesso(0, 18) = 1 'atualizar produtos Else tacesso(0, 18) = 0 End If End Sub Private Sub CheckBox22_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox22.CheckedChanged If CheckBox22.Checked = True Then tacesso(0, 19) = 1 'relatório Else tacesso(0, 19) = 0 End If End Sub Private Sub Acessos_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Escape Then Button3.PerformClick() End If End Sub End Class „********************************************************************** 'PRODUTOS '********************************************************************** ‟ COSMETICOSDATASET1.VB ' Partial Class cosmeticosDataSet1 End Class „********************************************************************** 'REL_VENDAS '********************************************************************** ‟ REL_VENDAS.VB 232 ' Partial Class lojacosmeticosDataSet End Class „********************************************************************** 'CRISTALREPORT1 '********************************************************************** ‟ CRISTALREPORT1.VB ' Option Strict Off Option Explicit On Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.ReportSource Imports CrystalDecisions.Shared Imports System Imports System.ComponentModel Public Class CrystalReport1 Inherits ReportClass Public Sub New() MyBase.New End Sub Public Overrides Property ResourceName() As String Get Return "CrystalReport1.rpt" End Get Set 'Do nothing End Set End Property Public Overrides Property NewGenerator() As Boolean Get 233 Return true End Get Set 'Do nothing End Set End Property Public Overrides Property FullResourceName() As String Get Return "Perfumaria___1._0_Beta_.CrystalReport1.rpt" End Get Set 'Do nothing End Set End Property <Browsable(false), _ DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)> _ Public ReadOnly Property Section1() As CrystalDeci- sions.CrystalReports.Engine.Section Get Return Me.ReportDefinition.Sections(0) End Get End Property <Browsable(false), _ DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)> _ Public ReadOnly Property sions.CrystalReports.Engine.Section Get Return Me.ReportDefinition.Sections(1) End Get Section2() As CrystalDeci- 234 End Property <Browsable(false), _ DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)> _ Public ReadOnly Property Section3() As CrystalDeci- sions.CrystalReports.Engine.Section Get Return Me.ReportDefinition.Sections(2) End Get End Property <Browsable(false), _ DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)> _ Public ReadOnly Property Section4() As CrystalDeci- sions.CrystalReports.Engine.Section Get Return Me.ReportDefinition.Sections(3) End Get End Property <Browsable(false), _ DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)> _ Public ReadOnly Property sions.CrystalReports.Engine.Section Get Return Me.ReportDefinition.Sections(4) End Get End Property End Class Section5() As CrystalDeci- 235 <System.Drawing.ToolboxBitmapAttribute(GetType(CrystalDecisions.[Shared].ExportOptions), "report.bmp")> _ Public Class CachedCrystalReport1 Inherits Component Implements ICachedReport Public Sub New() MyBase.New End Sub <Browsable(false), _ DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)> _ Public Overridable Property IsCacheable() As Boolean Implements CrystalDecisions.ReportSource.ICachedReport.IsCacheable Get Return true End Get Set ' End Set End Property <Browsable(false), _ DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)> _ Public Overridable Property ShareDBLogonInfo() As Boolean Implements CrystalDecisions.ReportSource.ICachedReport.ShareDBLogonInfo Get Return false End Get Set ' 236 End Set End Property <Browsable(false), _ DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)> _ Public Overridable Property CacheTimeOut() As System.TimeSpan Implements CrystalDecisions.ReportSource.ICachedReport.CacheTimeOut Get Return CachedReportConstants.DEFAULT_TIMEOUT End Get Set ' End Set End Property Public Overridable Function sions.CrystalReports.Engine.ReportDocument CreateReport() Implements As CrystalDeciCrystalDeci- sions.ReportSource.ICachedReport.CreateReport Dim rpt As CrystalReport1 = New CrystalReport1() rpt.Site = Me.Site Return rpt End Function Public Overridable Function GetCustomizedCacheKey(ByVal request As RequestContext) As String Implements sions.ReportSource.ICachedReport.GetCustomizedCacheKey Dim key As [String] = Nothing '// The following is the code used to generate the default '// cache key for caching report jobs in the ASP.NET Cache. '// Feel free to modify this code to suit your needs. '// Returning key == null causes the default cache key to '// be generated. ' CrystalDeci- 237 'key = RequestContext.BuildCompleteCacheKey( ' request, ' null, // sReportFilename ' this.GetType(), ' this.ShareDBLogonInfo ); Return key End Function End Class „********************************************************************** 'CONFIGURACAO DE ACESSO AO BANCO '********************************************************************** ‟ CONFIGURACAO_ACESSO_BANCO.VB' Public Class Configuracao_acesso_banco 'limpa os campos e move o curso para o primeiro campo Private Sub limpar() txt_usuarioPC.Clear() txt_senha.Clear() txt_usuario.Clear() txt_usuarioPC.Focus() End Sub 'desabilita os campos Private Sub campos() txt_senha.Enabled = False txt_usuario.Enabled = False txt_usuarioPC.Enabled = False End Sub 'habilita os campos Private Sub campos_habilitar() txt_senha.Enabled = True txt_usuario.Enabled = True txt_usuarioPC.Enabled = True End Sub 'desabilita botoes quando não há diretório 238 Private Sub botoes() btn_salvar.Enabled = True btn_editar.Enabled = False btn_abrir.Enabled = False End Sub 'verificando se há diretório Private Sub verifica_diretorio() Try Dim diretorio As New Sys- tem.IO.DirectoryInfo("C:\Acesso_Banco\conectar\acesso") If diretorio.Exists Then campos() 'desabilita compos se houver diretório btn_salvar.Enabled = False btn_editar.Enabled = False btn_abrir.Enabled = True Else campos_habilitar() 'habilitar campos se não houver diretório botoes() System.IO.Directory.CreateDirectory("C:\Acesso_Banco\conectar\acesso") End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub btn_salvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_salvar.Click Try If txt_usuario.Text > " " And txt_senha.Text > " " And txt_usuarioPC.Text > " " Then If MsgBox("Deseja configurar esta conexão?", MsgBoxStyle.YesNo, "Configuração de conexão") = vbYes Then Dim arquivo As New O.FileStream("C:\Acesso_Banco\conectar\acesso\acesso_banco.txt", O.FileMode.OpenOrCreate, IO.FileAccess.ReadWrite, IO.FileShare.None) II- 239 Dim sw As New IO.StreamWriter(arquivo) sw.WriteLine(Label4.Text & " " & txt_usuarioPC.Text) sw.WriteLine(Label3.Text & " " & txt_usuario.Text) sw.WriteLine(Label2.Text & " " & txt_senha.Text) sw.WriteLine("Provider=SQLOLEDB;Data Source=" & Trim(txt_usuarioPC.Text) & "-PC\" & Trim(txt_usuario.Text) & ";Integrated Security=" & Trim(txt_senha.Text) & ";Initial Catalog=lojacosmeticos") sw.Close() arquivo.Close() limpar() 'método limpar verifica_diretorio() 'Método para verificar se há diretório Else MsgBox("Configuração cancelada.", MsgBoxStyle.Exclamation, "Configuração de conexão") End If Else MsgBox("Campo nulo!", MsgBoxStyle.Critical, "Configuração de conexão") txt_usuarioPC.Focus() End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub txt_usuarioPC_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_usuarioPC.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True txt_usuario.Focus() End If End Sub Private Sub txt_usuario_KeyPress1(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_usuario.KeyPress If e.KeyChar = Convert.ToChar(Keys.Return) Then e.Handled = True 240 txt_senha.Focus() End If End Sub Private Sub txt_senha_KeyPress1(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_senha.KeyPress If e.KeyChar = Chr(13) Then btn_salvar_Click(Me, EventArgs.Empty) txt_usuarioPC.Focus() 'função focus, move o cursor para o campo especificado End If End Sub Private Sub btn_abrir_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_abrir.Click Try Dim diretorio As New Sys- tem.IO.DirectoryInfo("C:\Acesso_Banco\conectar\acesso") If diretorio.Exists Then If (Sys- tem.IO.File.Exists("C:\Acesso_Banco\conectar\acesso\acesso_banco.txt") <> True) Then MsgBox("Arquivo não encontrado. Configure a conexão!", MsgBoxStyle.Critical, "Configuração de conexão") campos_habilitar() botoes() txt_usuarioPC.Focus() Else Dim filereader As New O.StreamReader("C:\Acesso_Banco\conectar\acesso\acesso_banco.txt") Dim arquivo_banco, linha As String Dim cont As Integer While (filereader.Peek > -1) linha = filereader.ReadLine 'condição para ler as linhas do arquivo de acesso ao banco If cont = 0 Then 'linha 1 arquivo_banco = linha txt_usuarioPC.Text = arquivo_banco.Substring(12) I- 241 End If If cont = 1 Then 'linha 2 arquivo_banco = linha txt_usuario.Text = arquivo_banco.Substring(14) End If If cont = 2 Then 'linha 3 arquivo_banco = linha txt_senha.Text = arquivo_banco.Substring(12) End If cont += 1 End While filereader.Close() txt_usuarioPC.Focus() btn_editar.Enabled = True End If Else MsgBox("Diretório não encontrado.", MsgBoxStyle.Exclamation, "Configuração de conexão") campos_habilitar() botoes() txt_usuarioPC.Focus() End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub btn_sair_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_sair.Click If MsgBox("Deseja encerrar a configuração?", MsgBoxStyle.YesNo, "Configuração de conexão") = vbYes Then Me.Close() End If End Sub 242 Private Sub Configuracao_acesso_banco_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load verifica_diretorio() 'verifica se existe o dirétório End Sub Private Sub btn_editar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_editar.Click If btn_editar.Text = "Editar" Then 'condição para a edição dos dados da conexão. If txt_senha.Text > " " And txt_usuario.Text > " " And txt_usuarioPC.Text > " " Then 'os campos devem estar preenchidos para a edição. Usuário deve abrir o arquivo btn_editar.Text = "Cancelar" btn_salvar.Enabled = True campos_habilitar() Else MsgBox("Campos inválido para edição.", MsgBoxStyle.Critical, "Configuração de conexão") End If 'Condição para o botão quando ele estiver com cancelar ElseIf btn_editar.Text = "Cancelar" Then btn_editar.Text = "Editar" campos() limpar() btn_editar.Enabled = False btn_salvar.Enabled = False End If txt_usuarioPC.Focus() End Sub End Class 4.3.2 Código de controle de vendas ********************************************************************** ‟MODULE 243 '********************************************************************** ‟ MODULE.VB ' Module Module1 Public vlr_total As Double Public cmd As OleDb.OleDbCommand Public con As OleDb.OleDbConnection Public reader As OleDb.OleDbDataReader Public Sub conectar() con = New OleDb.OleDbConnection 'instanciando a variavel con (conexão) cmd = New OleDb.OleDbCommand 'instacinando a variavel cmd (comandos) con.ConnectionString = "Provider=SQLOLEDB;Data Source=ADEILDO- PC\ADEILDO;Integrated Security=SSPI;Initial Catalog=lojacosmeticos" End Sub Public quant As Integer Public cont As Integer = 0 Public produto As String Public mostrar As String Public cod_venda As Integer Public items_venda As Integer Public local As String Public indice As Integer Public vlr_item As Double Public usuario As String Public cod_login As Integer Public cod_usuario As Integer 'função para manipulação de números na textbox. Esta função habilita apenas números. Function SoNumeros(ByVal Keyascii As Short) As Short If InStr("1234567890", Chr(Keyascii)) = 0 Then 'condição para definir o que será aceito. 0 significa número SoNumeros = 0 Else 244 SoNumeros = Keyascii End If Select Case Keyascii Case 8 SoNumeros = Keyascii '8 bits Case 13 SoNumeros = Keyascii '13 bits Case 32 SoNumeros = Keyascii '32 bits Case 64 SoNumeros = Keyascii '64 bist End Select End Function 'função para manipulação de números na textbox. Está função Habilita números e vírgula. Forma decimal. Function Sodecimal(ByVal Keyascii As Short) As Short If InStr("1234567890,", Chr(Keyascii)) = 0 Then 'condição para definir o que será aceito. 0 significa número Sodecimal = 0 Else Sodecimal = Keyascii End If Select Case Keyascii Case 8 Sodecimal = Keyascii '8 bits Case 13 Sodecimal = Keyascii '13 bits Case 32 Sodecimal = Keyascii '32 bits Case 64 Sodecimal = Keyascii '64 bits End Select End Function End Module 245 „********************************************************************** 'CONSULTAR PRODUTOS '********************************************************************** ‟ CONSULTAR_PRODUTOS.VB ' Public Class Consultar_Produto Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress Dim cod_askii As Short = CShort(Asc(e.KeyChar)) cod_askii = CShort(Sodecimal(cod_askii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. If cod_askii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (valor unitário) If cod_askii = 32 Then e.Handled = True End If 'condição para limitar a vírgula. Só é aceito uma vírgula no campo valor do produto. If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "," Then e.Handled = True If e.KeyChar = "," And (InStr(TextBox3.Text, ",")) > 0 Then e.Handled = True End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged 'Dim valor1 As Single 'If TextBox3.Text <> "" Then ' valor1 = TextBox3.Text ' TextBox3.Text = Format(valor1, "0.#0; $#.#0") ' End If End Sub 246 Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If If e.KeyChar = Chr(13) Then Button1.PerformClick() End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Buscar informações do Produto pelo Cod. de Barras Try conectar() con.Open() cmd = con.CreateCommand cmd.CommandType = CommandType.Text If TextBox1.Text > " " Then cmd.CommandText = "SELECT * FROM produtos WHERE cod_barras = '" & Trim(TextBox1.Text) & "'" ElseIf TextBox2.Text > " " Then cmd.CommandText = "SELECT * FROM produtos WHERE nome_produto = '" & Trim(TextBox2.Text) & "'" End If reader = cmd.ExecuteReader() 247 reader.Read() TextBox1.Text = Trim(reader("cod_barras")) TextBox3.Text = reader("vlr_unitario") TextBox2.Text = reader("nome_produto") TextBox4.Text = reader("qtde_produto") con.Close() Catch ex As Exception MsgBox("Produto não encontrado. Verifique o codigo de barras.", MsgBoxStyle.Information, "Falha na conexão") End Try End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub Private Sub Consultar_Produto_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox1.Focus() End Sub Private Sub TextBox4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) KeyAscii = CShort(SoNumeros(KeyAscii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto. If KeyAscii = 0 Then e.Handled = True 248 End If 'condição para desabilitar a barra de espaço na textbox (código de barras do produto) If KeyAscii = 32 Then e.Handled = True End If End Sub End Class „********************************************************************** 'TELA DE SUPORTE '********************************************************************** ‟ SUPORTE.VB ' Imports System.Net.Mail Public Class Suporte Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ProgressBar1.Maximum = 6 'Máximo de operações (que pode ser variável) ProgressBar1.Value = 0 'cria objeto com dados do e-mail Dim smtpServer As New SmtpClient() ProgressBar1.Value = ProgressBar1.Value + 1 Dim mail As New MailMessage smtpServer.Credentials = New Net.NetworkCredential("[email protected]", "etec@etec") ProgressBar1.Value = ProgressBar1.Value + 1 smtpServer.Port = 25 smtpServer.Host = "smtp.live.com" ProgressBar1.Value = ProgressBar1.Value + 1 smtpServer.EnableSsl = True mail.From = New MailAddress("[email protected]") ProgressBar1.Value = ProgressBar1.Value + 1 mail.To.Add("[email protected]") 249 ProgressBar1.Value = ProgressBar1.Value + 1 mail.Subject = TextBox4.Text mail.Body = TextBox2.Text & Chr(13) & TextBox3.Text & Chr(13) & TextBox1.Text Try smtpServer.Send(mail) ProgressBar1.Value = ProgressBar1.Value + 1 MsgBox("Mensagem enviada com sucesso!", MsgBoxStyle.OkOnly, "Report") TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" ProgressBar1.Value = 0 Catch ex As Exception MsgBox(ex.Message()) End Try End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Tela_de_venda.Show() Me.Close() End Sub End Class „ „********************************************************************** *****LOJACOSMETICOSDATASET '********************************************************************** ‟ LOJACOSMETICOSDATASET.VB ' Partial Class lojacosmeticosDataSet End Class „********************************************************************** 'LOGIN - PONTO DE VENDAS 250 '********************************************************************** ‟ LOGIN1.VB ' Public Class Login Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox2.Text = "" Then Label3.Visible = True ElseIf MaskedTextBox1.Text = "" Then Label4.Visible = True ElseIf TextBox2.Text <> "" And MaskedTextBox1.Text <> "" Then Dim senha As String Try conectar() con.Open() cmd = con.CreateCommand cmd.CommandType = System.Data.CommandType.Text cmd.CommandText = "SELECT * FROM login WHERE nome_login = ?" cmd.Parameters.Add("login", OleDb.OleDbType.VarChar) cmd.Parameters("login").Value = TextBox2.Text reader = cmd.ExecuteReader() reader.Read() senha = reader("senha") cod_login = reader("cod_login") con.Close() If senha = MaskedTextBox1.Text Then conectar() con.Open() cmd = con.CreateCommand cmd.CommandType = CommandType.Text cmd.CommandText = "SELECT * FROM usuario WHERE cod_login = ?" cmd.Parameters.Add("@login", OleDb.OleDbType.VarChar) cmd.Parameters("@login").Value = cod_login 251 reader = cmd.ExecuteReader() reader.Read() cod_usuario = reader("cod_usuario") con.Close() usuario = TextBox2.Text Tela_de_venda.Show() Me.Hide() Else MsgBox("Senha Incorreta", vbCritical, "Erro") MaskedTextBox1.Text = "" End If Catch ex As Exception MsgBox("Usuário Não Cadastrado", vbCritical, "Erro") TextBox2.Text = "" MaskedTextBox1.Text = "" End Try End If End Sub Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress If e.KeyChar = Chr(13) Then Button1.PerformClick() End If End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged Label3.Visible = False End Sub Private Sub MaskedTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox1.KeyPress If e.KeyChar = Chr(13) Then Button1.PerformClick() End If End Sub 252 Private Sub MaskedTextBox1_MaskInputRejected(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MaskInputRejectedEventArgs) Handles MaskedTextBox1.MaskInputRejected End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim result As MsgBoxResult result = MsgBox("Deseja realmente sair ?", MsgBoxStyle.YesNo, "Confirmação") If result = MsgBoxResult.Yes Then Application.Exit() End If End Sub Private Sub MaskedTextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MaskedTextBox1.TextChanged Label4.Visible = False End Sub Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click End Sub End Class „********************************************************************** 'TELA DE DESCONTO '********************************************************************** ‟ DESCONTO.VB ' Public Class desconto Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try Tela_de_venda.txt_valor_total_venda.Text = Vlr_total_venda.Text vlr_total = Vlr_total_venda.Text Me.Close() Catch ex As Exception 253 MsgBox("Campo nulo!", vbCritical) End Try End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Close() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Try Dim porcentagem As Double Dim total As Double porcentagem = CDbl(TextBox1.Text) porcentagem = porcentagem / 100 total = CDbl(Vlr_total_venda.Text) total = total - (total * porcentagem) Vlr_total_venda.Text = total Catch ex As Exception MsgBox(ex.Message & vbCrLf & "Verifique os campos!", vbCritical + MsgBoxStyle.Critical, "Erro") End Try End Sub Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim cod_askii As Short = CShort(Asc(e.KeyChar)) cod_askii = CShort(Sodecimal(cod_askii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. If cod_askii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (valor unitário) If cod_askii = 32 Then e.Handled = True End If 254 'condição para limitar a vírgula. Só é aceito uma vírgula no campo valor do produto. If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "," Then e.Handled = True If e.KeyChar = "," And (InStr(TextBox1.Text, ",")) > 0 Then e.Handled = True If e.KeyChar = Chr(13) Then Button2.PerformClick() End If End Sub Private Sub Vlr_total_venda_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Vlr_total_venda.KeyPress Dim cod_askii As Short = CShort(Asc(e.KeyChar)) cod_askii = CShort(Sodecimal(cod_askii)) 'função para desabilitar texto na textbox 'condição para habilitar os números. zero número, 1 texto.. If cod_askii = 0 Then e.Handled = True End If 'condição para desabilitar a barra de espaço na textbox (valor unitário) If cod_askii = 32 Then e.Handled = True End If 'condição para limitar a vírgula. Só é aceito uma vírgula no campo valor do produto. If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "," Then e.Handled = True If e.KeyChar = "," And (InStr(Vlr_total_venda.Text, ",")) > 0 Then e.Handled = True End Sub End Class‟ 255 CAPÍTULO V – Requisitos mínimos Para o SISVE( Sistema de Controle de venda e Estoque) funcionar de forma eficiente recomenda-se os seguintes requisitos mínimos: Sistema Operacional Microsoft Windows XP ou superior; Processador Intel Pentium IV de 2,33 GHz, AMD Athlon 64 2800 ou superior; Memória Ram: 512 megabytes DDR-I ou superior; Espaço livre no disco rígido de 3 gigabytes; Monitor com resolução esperada 1366 x 768 pixels; Microsoft SQL Server versão 2008; Adobe Acrobat Reader versão 5.05 ou superior; Navegador Internet Explorer 6.0 ou superior. 256 CAPÍTULO VI – Site do projeto Houve a necessidade de possuir uma página na Internet com o objetivo de manter a documentação de ajuda SISVE sempre atualizada. Além disto, essa página serve como forma de promover a divulgação do produto e para fins educativos, pois toda a documentação de elaboração e desenvolvimento do projeto, como o diário de bordo, diagramas, fotografias da empresa e código fonte estão disponíveis para todos. Há também uma apresentação da Escola Técnica Estadual “Irmã Agostina” com os cursos oferecidos e sua localização. O endereço na internet é http://sisve.host.sk. Figura 6.1 – Página inicial do SISVE na internet 257 CONCLUSÃO É de extrema importância todas as empresas, desde as pequenas até as grandes, investirem na sua informatização. Quando instalado o software na "Perfumaria da Praça”, o problema da loja relacionado ao controle de estoque e vendas, através de banco de dados, terá sido solucionado. Pela criação e implantação do software “SISVE - Controle de Vendas e Estoque”, a loja passará a ter uma maior rapidez no seu processo de venda e eficiência na administração do estoque. Este trabalho trouxe muito aprendizado para a equipe, dentre os quais a necessidade do planejamento, da divisão de tarefa, da colaboração mútua, de conhecer profundamente os anseios do cliente, buscar sempre a excelência na qualidade em toda a fase do desenvolvimento do projeto e união, pois só assim é uma equipe e não tão somente um grupo de pessoas. 258 REFERÊNCIAS BIBLIOGRÁFICAS MEIRELLES, F. S. 22ª Pesquisa Anual do Uso de TI. Artigo, Fundação Getúlio Vargas. 2011. 15 p. SEBRAE-SC. Informatizar MPEs garante competitividade e produtividade nos negócios. Disponível em: <http://www.sebrae-sc.com.br/newart/default.asp?materia=20279>. Acesso em: 02 nov. 2011. SILVA, João Carlos Lima. Manual de Elaboração de Relatório do TCC. 2011. HALVORSON, Michael. Microsoft Visual Basic 2010 Passo a Passo. Porto Alegre: Editora Bookman. 2011. MACORATTI, José Carlos. Gerenciando os eventos de teclado no VB.NET. Disponível em: <http://www.macoratti.net/vbn_keyp.htm>. Acesso em: 13 fev.. 2012. VASCONCELOS, Laércio. Hardware na Prática – Construindo e Configurando Micros de 32 e 64 Bits Single Core, Dual Core e Quad Core. Rio de Janeiro. Editora Laércio Vasconcelos Computação. 2009. JONAZ. Press Enter in Textbox to Trigger Click Event. Disponível em: <http://www.a1vbcode.com/snippet-4148.asp>. Acesso em: 08 mar. 2012. VBMANIA. Teclas de atalho no VB. Disponível em: <http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID =341797>. Acesso em: 15 mar. 2012. ______. Trocar vírgula por ponto no VB. Disponível em: <http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID =186981>. Acesso em: 22 fev. 2012. BAIXAKI. Busca. Disponível em: 259 <http://www.baixaki.com.br/busca.asp?q=%93pdv%94+%93estoque%94&go=&ord=4>. Acesso em 10 abr. 2012. TECMUNDO. Sobre o Baixaki. Disponível em: <http://www.tecmundo.com.br/institucional/284-sobre-o-baixaki.htm>. Acesso em 10 abr. 2012. TAGSOFT. Conheça o TagComércio. Disponível em: <http://www.tagsoft.com.br> Acesso em: 15 abril. 2012. SYSTRONIC. Apresentação do Systronic Office Comercial. Disponível em: <http://www.systronic.com.br/portal/index.php/apresentacao/60-systronic-officecomercial.html> Acesso em: 15 abr. 2012. GIOVANE, Informática. Apresentação do SisAdvenPDV. Disponível em: <http://www.giovaneinformatica.com.br/detalhe-sgi.htm> Acesso em: 15 abr. 2012. NOVAVIA. Apresentação. Disponível em: <http://www.novavia.com.br/sistemas/site2/produto.aspx?cod_prod=1> Acesso em: 15 abr. 2012. VVS, Sistemas. Folder de produtos. Disponível em: <http://www.vvssistemas.com.br/arquivos/marketing/FolderProdutos.zip>Acesso em: 15 abr. 2012. p. 2. MICROSOFT. Microsoft® SQL Server® 2008 Express. Disponível em: <http://www.microsoft.com/downloads/details.aspx?FamilyID=58ce885d-508b-45c8-9fd3118edd8e6fff&displaylang=pt-br>. Acesso em: 19 mai. 2012. SILBERSCHATZ, Abraham; KORTH, Henry F; SUDARSHAN, S. Sistema de banco de dados. Traduzido por Daniel Vieira. Rio de Janeiro: Elsevier;Campus, 2006. BOOCH, Grady; RUMBAUGH, James; JACOBSON; Ivar. UML: Guia do Usuário. Rio de Janeiro: Editora Campus, 2000. 260 APÊNDICE A – Questionário aplicado ao Sr. Valdinei Cruz de lima (1ª parte) 261 APÊNDICE B – Questionário aplicado ao Sr. Valdinei Cruz de lima (2ª parte)