none
C# Gravar campos de um formulário em um banco de dados access, usando botão RRS feed

  • Pergunta

  • Bom dia,

    Criei um banco de dados access 2010, onde pretendo registar clientes e funcionários, produtos e serviços, etc.

    Fiz todo o formulário com textbox's, onde cada uma se refere a um dado que será gravado no BD. Fiz conecção entre o projecto Visual Studio (C#), arrastei cada campo da tabela (do menu fontes de dados), para textbox correspondentes (no fomulário).Também arrastei toda a tabela para o formulário, para criar a ligação total.

    Eliminei o menu que a tabela criou no topo da página, pois quero criar "Button's" para fazer essas mesmas acções.

    Ja pesquisei sobre que codigo devo usar nos botões de "Gravar"e "Novo Registo", pelo que nenhuma tentativa feita, realmente resultou. Preencho todo o formulario de Registo em modo de depuração, faço gravar e simplesmente nada acontece. Todo o formulário permanece preenchido, mas os dados nao entrarm na BD.

    Este é o codigo deste form que pretendo gravar na BD:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.OleDb;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.OleDb.OleDbConnection;
    using System.Data.OleDb.OleDbCommand;
    
    namespace PizzaDelivery
    {
        public partial class RegistoClientes : Form
        {
            public RegistoClientes()
            {
                InitializeComponent();
            }
    
            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
    
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                
                    if (MessageBox.Show("Tem a certeza que deseja Fechar?", "Aviso de Sistema", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        this.Close();
                    }
                
    
    
    
    
            }
    
            private void LimparFormularioCliente_Click(object sender, EventArgs e)
            {
               
            }
    
            private void Botao_GravarCliente_Click(object sender, EventArgs e)
            {
                
                //Declaração de Variáveis
    	OleDbConnection objConnection =null;
    	OleDbCommand objCommand = null;
    	string strConnection, strSQL;
    
         //String de Conexão
         strConnection = @"Provider-Microsoft.jet.OLEDB.4.0; Data source= C:\Users\BMR\Desktop\PizzaDelivery\PizzaDelivery\PizzaDelivery\bin\Debug\PizzaDelbd.accdb";
    
         //String SQL
         strSQL = "INSERT INTO Clientes (Cliente_Codigo, Titulo, Cliente_Nome, Cliente_Morada, Cliente_Num_Lote, Cliente_Andar, Cod_Postal, Localidade, Cliente_Ponto_Ref, Cliente_Contacto, Cliente_Contacto_Alt, Cliente_email, Cliente_Aniversario)VALUES ('" + Cliente_Codigo.Text + "', '" + Titulo.Text + "', '" + Nome_Cliente.Text + "', '" + Morada_Cliente.Text + "', '" + Num_Lote_Cliente.Text + "','" + Num_Piso_Cliente.Text + "', '" + cod_Postal_Cliente.Text + "', '" + Localidade_Cliente.Text + "', '" + Pontos_Referencia_Cliente.Text + "', '" + Email_Cliente.Text + "', '" + Anos_Cliente.Text + "')";
    
         //Criando Comando
         objCommand = new OleDbCommand(strSQL, objConnection);
    
         //Executando comando SQL
         objCommand.ExecuteNonQuery();
    
         //Fechando Conexão
         objConnection.Close();
    
         }
    
            private void clientesBindingNavigatorSaveItem_Click(object sender, EventArgs e)
            {
    this.Validate();
    this.clientesBindingSource.EndEdit();
    this.tableAdapterManager.UpdateAll(this.pizzaDelbdDataSet);
            
            }
    
            private void RegistoClientes_Load(object sender, EventArgs e)
            {
    // TODO: esta linha de código carrega dados na tabela 'pizzaDelbdDataSet.Clientes'. Você pode movê-la ou removê-la conforme necessário.
    this.clientesTableAdapter.Fill(this.pizzaDelbdDataSet.Clientes);
            
            }
    
            private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
            {
            
            }
    
            private void cod_PostalTextBox_TextChanged(object sender, EventArgs e)
            {
            
            }
    
            private void Botao_NovoCliente_Click(object sender, EventArgs e)
            {
                       {
                this.Validate();
                this.clientesBindingSource.EndEdit();
                this.tableAdapterManager.UpdateAll(this.pizzaDelbdDataSet);
            
            
            }
            }
        }
    }


    As minhas questões são:

    1º- Que codigo devo usar para criar o botão gravar

    2º Como fazer para que, ao abrir-se este "form", ele ja esteja pronto a aceitar dados para gravação no "campo" e "Tabela" correspondente na BD.

    Eu estou a aprender a programar C# e, ao mesmo tempo, estou a criar um programa para a pizzaria que trabalho. Os meus conhecimentos são bastante limitados ainda. 

    Obrigado pela paciencia

    Bruno M Rosa

    quarta-feira, 26 de março de 2014 10:38

Respostas

  •         private void Botao_GravarCliente_Click(object sender, EventArgs e)
            {
                try
                {
                    //Declaração de Variáveis
                    OleDbConnection objConnection = null;
                    OleDbCommand objCommand = null;
                    string strConnection, strSQL;
    
                    //String de Conexão
                    strConnection = @"Provider-Microsoft.jet.OLEDB.4.0; Data source= C:\Users\BMR\Desktop\PizzaDelivery\PizzaDelivery\PizzaDelivery\bin\Debug\PizzaDelbd.accdb";
    
                    //String SQL
                    strSQL = "INSERT INTO Clientes (Cliente_Codigo, Titulo, Cliente_Nome, Cliente_Morada, Cliente_Num_Lote, Cliente_Andar, Cod_Postal, Localidade, Cliente_Ponto_Ref, Cliente_Contacto, Cliente_Contacto_Alt, Cliente_email, Cliente_Aniversario)VALUES ('" + Cliente_Codigo.Text + "', '" + Titulo.Text + "', '" + Nome_Cliente.Text + "', '" + Morada_Cliente.Text + "', '" + Num_Lote_Cliente.Text + "','" + Num_Piso_Cliente.Text + "', '" + cod_Postal_Cliente.Text + "', '" + Localidade_Cliente.Text + "', '" + Pontos_Referencia_Cliente.Text + "', '" + Email_Cliente.Text + "', '" + Anos_Cliente.Text + "')";
    
                    //Criando Comando
                    objCommand = new OleDbCommand(strSQL, objConnection);
    
                    //Executando comando SQL
                    objCommand.ExecuteNonQuery();
    
                    //Fechando Conexão
                    objConnection.Close();
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex);
                }
            }
    dessa forma o erro sera exibido em uma caixa de menssagem.
    • Sugerido como Resposta GuSouza sexta-feira, 28 de março de 2014 13:27
    • Marcado como Resposta Giovani Cr segunda-feira, 31 de março de 2014 20:35
    quarta-feira, 26 de março de 2014 17:03
  • Bom dia BMRNX,

    Conseguiu resolver?

    Att,


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Giovani Cr segunda-feira, 31 de março de 2014 20:35
    sexta-feira, 28 de março de 2014 20:14

Todas as Respostas

  • Olá Tente colocar bloco Try catch nesse trecho de código(Dentro do botão Gravar) e verifique se ocorre algum erro de conexão através desse erro investigue as opções para corrigir o problema.

    Sobre Try Catch:

    http://msdn.microsoft.com/pt-br/library/xtd0s8kd(v=vs.110).aspx



    • Editado GuSouza quarta-feira, 26 de março de 2014 20:11
    • Sugerido como Resposta GuSouza sexta-feira, 28 de março de 2014 13:28
    quarta-feira, 26 de março de 2014 13:09
  • Devido à minha pouca experiencia e entendimento em C#, na consegui implementar o try catch.

    QUando se está a começar, é dificil até entrar na linguagem.

    Obrigado pela dica

    quarta-feira, 26 de março de 2014 16:43
  •         private void Botao_GravarCliente_Click(object sender, EventArgs e)
            {
                try
                {
                    //Declaração de Variáveis
                    OleDbConnection objConnection = null;
                    OleDbCommand objCommand = null;
                    string strConnection, strSQL;
    
                    //String de Conexão
                    strConnection = @"Provider-Microsoft.jet.OLEDB.4.0; Data source= C:\Users\BMR\Desktop\PizzaDelivery\PizzaDelivery\PizzaDelivery\bin\Debug\PizzaDelbd.accdb";
    
                    //String SQL
                    strSQL = "INSERT INTO Clientes (Cliente_Codigo, Titulo, Cliente_Nome, Cliente_Morada, Cliente_Num_Lote, Cliente_Andar, Cod_Postal, Localidade, Cliente_Ponto_Ref, Cliente_Contacto, Cliente_Contacto_Alt, Cliente_email, Cliente_Aniversario)VALUES ('" + Cliente_Codigo.Text + "', '" + Titulo.Text + "', '" + Nome_Cliente.Text + "', '" + Morada_Cliente.Text + "', '" + Num_Lote_Cliente.Text + "','" + Num_Piso_Cliente.Text + "', '" + cod_Postal_Cliente.Text + "', '" + Localidade_Cliente.Text + "', '" + Pontos_Referencia_Cliente.Text + "', '" + Email_Cliente.Text + "', '" + Anos_Cliente.Text + "')";
    
                    //Criando Comando
                    objCommand = new OleDbCommand(strSQL, objConnection);
    
                    //Executando comando SQL
                    objCommand.ExecuteNonQuery();
    
                    //Fechando Conexão
                    objConnection.Close();
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex);
                }
            }
    dessa forma o erro sera exibido em uma caixa de menssagem.
    • Sugerido como Resposta GuSouza sexta-feira, 28 de março de 2014 13:27
    • Marcado como Resposta Giovani Cr segunda-feira, 31 de março de 2014 20:35
    quarta-feira, 26 de março de 2014 17:03
  • Muito obrigado pela ajuda,

    Vou testar e depois mando feedback.

    Bruno M. Rosa

    quinta-feira, 27 de março de 2014 13:46
  • Bom dia BMRNX,

    Conseguiu resolver?

    Att,


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Giovani Cr segunda-feira, 31 de março de 2014 20:35
    sexta-feira, 28 de março de 2014 20:14