ERRO DE SOBRECARGA AO CADASTRAR
Olá, alguém sabe como resolver erro de [Ô]SOBRECARGA[Ô] ao clicar em [Ô]CADASTRAR[Ô] no VS2012 professional com Access 2007?Tô tentando aprender VB.NET e comecei com essa video-aula de C# do youtube:https://www.youtube.com/watch?v=uUrj4ii_-mU. Fiz tudo como no vÃdeo mas na hora de clicar em cadastrar da erro de [Ô]Sobrecarga[Ô]. Nunca vi esse erro. Alguma ideia???
Segue o código do botão:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
namespace CRUD
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnCadastrar_Click(object sender, EventArgs e)
{
string strCon = @[Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[Ô]+Application.StartupPath+@[Ô]\Empresa.accdb[Ô];
string comando = [Ô]INSERT INTO tbCliente (Nome,Endereco,Telefone,RG,Automovel)values(@Nome,@Endereco,@Telefone,@RG,@Automovel)[Ô];
OleDbConnection con = new OleDbConnection(strCon);
OleDbCommand com = new OleDbCommand(comando, con);
com.Parameters.Add([Ô]@Nome[Ô], OleDbType.VarChar).Value = txtNome.Text;
com.Parameters.Add([Ô]@Endereco[Ô], OleDbType.VarChar).Value = txtEnd.Text;
com.Parameters.Add([Ô]@Telefone[Ô], OleDbType.VarChar).Value = maskedTextBox1.Text;
com.Parameters.Add([Ô]@RG[Ô], OleDbType.VarChar).Value = maskedTextBox2.Text;
com.Parameters.Add([Ô]@Automovel[Ô],OleDbType.VarChar).Value = txtAuto.Text;
try
{
con.Open();
com.ExecuteNonQuery();
MessageBox.Show([Ô]Cadastro Bem Sucedido![Ô]);
}
catch (Exception E)
{
MessageBox.Show(E.Message);
}
finally
{
con.Close();
}
}
Segue o código do botão:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
namespace CRUD
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnCadastrar_Click(object sender, EventArgs e)
{
string strCon = @[Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[Ô]+Application.StartupPath+@[Ô]\Empresa.accdb[Ô];
string comando = [Ô]INSERT INTO tbCliente (Nome,Endereco,Telefone,RG,Automovel)values(@Nome,@Endereco,@Telefone,@RG,@Automovel)[Ô];
OleDbConnection con = new OleDbConnection(strCon);
OleDbCommand com = new OleDbCommand(comando, con);
com.Parameters.Add([Ô]@Nome[Ô], OleDbType.VarChar).Value = txtNome.Text;
com.Parameters.Add([Ô]@Endereco[Ô], OleDbType.VarChar).Value = txtEnd.Text;
com.Parameters.Add([Ô]@Telefone[Ô], OleDbType.VarChar).Value = maskedTextBox1.Text;
com.Parameters.Add([Ô]@RG[Ô], OleDbType.VarChar).Value = maskedTextBox2.Text;
com.Parameters.Add([Ô]@Automovel[Ô],OleDbType.VarChar).Value = txtAuto.Text;
try
{
con.Open();
com.ExecuteNonQuery();
MessageBox.Show([Ô]Cadastro Bem Sucedido![Ô]);
}
catch (Exception E)
{
MessageBox.Show(E.Message);
}
finally
{
con.Close();
}
}
tire um print ou copie e cole exatamente a a msg de erro.
pode ser na estrutura dos campos da tabela em questão
seria interessante voce anexar seu projeto, ja que é um exemplo
pode ser na estrutura dos campos da tabela em questão
seria interessante voce anexar seu projeto, ja que é um exemplo
Olá desculpe a demora pra voltar pois sai no feriado. Segue o projeto....
Olá amigo, acredito que isso resolva seus problemas. Essa é uma classe de conexão, só crie uma nova classe e de a ela o nome de Conexao.cs
Daà em todas as outas classes que vc for usá-la, primeiro vc a importa
Depois você só faz uma instancia dela para fazer essas operações. Ex:
num botão cadastrar:
num botão pesquisar:
Só mais uma coisinha não muito importante, quando for lançar um novo tópico atente-se a qual linguagem vai pedir ajuda. no seu caso é C# mas vc colocou como se fosse VB.Net.
Té Mais
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
namespace seu_name_space
{
class Conexao
{
private string caminhoBanco = @[Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=seuBanco.mdb; Jet OLEDB:Database Password=suasenha;[Ô];
/**
* Parametro SQL string para setar uma pesquisa no banco de dados
* Retorna Uma tabela com o resultado da pesquisa segundo o parametro SQL
* OBS: Ao instanciar este método, setar apenas SQL de SELECT
*/
public DataTable Pesquisar(String SQL)
{
DataTable tabela = new DataTable();
try
{
tabela.Rows.Clear();
OleDbConnection conn = new OleDbConnection(caminhoBanco);
conn.Open();
OleDbCommand comando = new OleDbCommand(SQL, conn);
OleDbDataAdapter adapter = new OleDbDataAdapter(comando);
adapter.Fill(tabela);
conn.Close();
}
catch (Exception Ex)
{
MessageBox.Show([Ô]Erro de Comando: [Ô] + Ex.Message);
}
return tabela;
}
/**
* Parametro SQL string para setar uma pesquisa no banco de dados
* OBS: Ao instanciar este método, setar apenas SQL de INSERT, UPDATE ou DELET
*/
public void CRUD(string SQL)
{
try
{
OleDbConnection conn = new OleDbConnection(caminhoBanco);
conn.Open();
OleDbCommand comando = new OleDbCommand(SQL, conn);
comando.ExecuteNonQuery();
conn.Close();
}
catch (Exception Ex)
{
MessageBox.Show([Ô]Erro de Comando: [Ô] + Ex.Message);
}
}
}
}
Daà em todas as outas classes que vc for usá-la, primeiro vc a importa
using Conexao;
Depois você só faz uma instancia dela para fazer essas operações. Ex:
num botão cadastrar:
Conexao conn = new Conexao();
string SQL = [Ô]INSERT INTO tabela(campos) VALUES(valores)[Ô];
conn.CRUD(SQL);
num botão pesquisar:
Conexao conn = new Conexao();
string SQL = [Ô]SELECT campos FROM tabela WHERE criterio[Ô];
DataTable dados = conn.Pesquisar(SQL);
//setar valor da pesquisa num TextBox
TextBox1.Text = dados.Rows[0][[Ô]campo_da_tabela[Ô]].toString(); //essa é uma forma pro textbox e maskedbox
TextBox2.DataBindings.Add([Ô]Text[Ô], dados, [Ô]campo_da_tabela[Ô]); //essa é outra forma pro textbox e maskedbox
//setar valor da pesquisa num DataGridView
DataGridView1.DataSource = dados;
//setar valor num combobox
ComboBox1.Text = [Ô][Ô];
ComboBox1.ValueMember = [Ô]campo da tabela[Ô];//nesse eu prefiro colocar um campo do tipo chave primária, tipo codCliente, mas vai do gosto de cada um
ComboBox1.DisplayMember = [Ô]campo da tabela[Ô];//aqui eu já prefiro um campo que o descreva, tipo nomeCliente;
ComboBox1.DataSource = dados;
Só mais uma coisinha não muito importante, quando for lançar um novo tópico atente-se a qual linguagem vai pedir ajuda. no seu caso é C# mas vc colocou como se fosse VB.Net.
Té Mais
Olá ALANTB
Eu baixei seu proj e vi que seu problema estava no banco. O campo RG estava como numérico, é melhor deixa-lo como texto. Em todo caso eu encaminho seu projeto com as incrementações que te falei na ultima resposta. Estude-as e aprimore-as!
Té mais
Eu baixei seu proj e vi que seu problema estava no banco. O campo RG estava como numérico, é melhor deixa-lo como texto. Em todo caso eu encaminho seu projeto com as incrementações que te falei na ultima resposta. Estude-as e aprimore-as!
Té mais
ACCIOLLY, ainda estava lendo o post anterior tentando saber como fazer as modificações sugeridas anteriormente. Mas já que tu conseguiu fazer as modificações direto no projeto ficará melhor de entender o que deve ser feito. De cara pude perceber que com a classe Conexão eu não preciso inserir o caminho do banco em todos os botões de comando como foi feito na vÃdeo-aula, o que facilita a ligação com o banco. A partir desse modelo, vou começar a testar novas funcionalidades, controles e espero conseguir chegar com vida até os famosos RELATÓRIOS. Por enquanto agradeço a atenção e a disponibilidade...vou pontuar e encerrar...até a próxima....valeu!!!!!!
Tópico encerrado , respostas não são mais permitidas