Usuário com melhor resposta
Atualizar Ajuste no Banco

Pergunta
-
Olá,Criei um Binding Sourcee fiz a seguinte conexãoconn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\CadastroDobradiças\Biblioteca_Ferragens\ferragens.mdb")conn.Open()adapter = New OleDbDataAdapter("select * from Dobradicas", conn)ds = New DataSet()Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)adapter.UpdateCommand = builder.GetUpdateCommand()adapter.Fill(ds, "Dobradicas")bs1 = New BindingSource(ds.Tables("Dobradicas"), "")TextBox1.DataBindings.Add("Text", bs1, "Codigo")TextBox2.DataBindings.Add("Text", bs1, "Nome")TextBox3.DataBindings.Add("Text", bs1, "A")TextBox4.DataBindings.Add("Text", bs1, "B")TextBox5.DataBindings.Add("Text", bs1, "C")TextBox6.DataBindings.Add("Text", bs1, "D")TextBox7.DataBindings.Add("Text", bs1, "E")TextBox8.DataBindings.Add("Text", bs1, "F")TextBox9.DataBindings.Add("Text", bs1, "Descricao")agora, quando eu editar os campos e clicar em salvar tenho que fazer isso para salvar as alteraçoes(???) :BindingContext(ds.Tables("dobradicas")).EndCurrentEdit()adapter.Update(ds.Tables("dobradiacas"))esta correto ?
Respostas
-
BindingContext(ds.Tables("dobradicas")).EndCurrentEdit()
adapter.Update(ds.Tables("dobradiacas"))
essas linhas deveriam ser:
BindingContext(ds.Tables("Dobradicas")).EndCurrentEdit()
adapter.Update(ds.Tables("Dobradicas"))
o nome do datatable esta errado- Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 16:45
-
Se você está adicionando o mesmo valor para alguma chave por exemplo Codigo, se você ja tem no banco o codigo 1 e tenta novamente inserir o codigo 1 ele dará erro, pois é uma chave primária e com isso é um campo que tem que ser único, não pode haver o mesmo valor. Fique atento a isso.
- Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 17:41
-
Isso mesmo Bruno.
- Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 17:42
-
na hora de atulizar da o erro na sgunda linhaValor não pode ser nulo. Nome do parâmetro: dataTablee nao salva
- Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 17:42
-
fiz exatamente assimPrivate Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.ClickDim cmdPesquisa As OleDbCommand = New OleDbCommand("select count(*) from dobradicas where Codigo = @Codigo", conn)If Convert.ToInt32(cmdPesquisa.ExecuteScalar) > 0 ThenBindingContext(ds.Tables("Dobradicas")).EndCurrentEdit()adapter.Update(ds.Tables("Dobradicas"))Elsesalvanew()End IfEnd Subda erro nessa linhaIf Convert.ToInt32(cmdPesquisa.ExecuteScalar) > 0 Thenerro: Nenhum valor foi fornecido para um ou mais parâmetros necessários.
- Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 17:34
- Não Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 17:42
- Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 17:42
Todas as Respostas
-
Isso mesmo Bruno.
- Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 17:42
-
na hora de atulizar da o erro na sgunda linhaValor não pode ser nulo. Nome do parâmetro: dataTablee nao salva
- Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 17:42
-
BindingContext(ds.Tables("dobradicas")).EndCurrentEdit()
adapter.Update(ds.Tables("dobradiacas"))
essas linhas deveriam ser:
BindingContext(ds.Tables("Dobradicas")).EndCurrentEdit()
adapter.Update(ds.Tables("Dobradicas"))
o nome do datatable esta errado- Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 16:45
-
ok, deu certomas nesse casoeu atualizo um cadastro que ja existemas por exemplo eu criei um novo e quero salva-lofiz uma função diferenteficou assim :Dim conn As New OleDbConnection()conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\CadastroDobradiças\Biblioteca_Ferragens\ferragens.mdb"conn.Open()Dim cmd As OleDbCommand = New OleDbCommand("INSERT INTO Dobradicas(Codigo, Nome, A, B, C, D, E, F, Descricao)" + ("VALUES (@Codigo, @Nome, @A, @B, @C, @D, @E, @F, @Descrição)"), conn)cmd.Parameters.AddWithValue("Codigo", TextBox1.Text)cmd.Parameters.AddWithValue("Nome", TextBox2.Text)cmd.Parameters.AddWithValue("A", TextBox3.Text)cmd.Parameters.AddWithValue("B", TextBox4.Text)cmd.Parameters.AddWithValue("C", TextBox5.Text)cmd.Parameters.AddWithValue("D", TextBox6.Text)cmd.Parameters.AddWithValue("E", TextBox7.Text)cmd.Parameters.AddWithValue("F", TextBox8.Text)cmd.Parameters.AddWithValue("Descricao", TextBox9.Text)cmd.ExecuteNonQuery()conn.Close()bs1.AddNew()mas quero colocar as duas no mesmo botãoseparadas por uma condicional que vai checar se ja existe ou naocaso exista ele executa isso:BindingContext(ds.Tables("Dobradicas")).EndCurrentEdit()
adapter.Update(ds.Tables("Dobradicas"))como posso faze essa condicional? -
Você pode fazer um consulta assim:
Dim cmdPesquisa As OleDbCommand = New OleDbCommand("select count(*) from dobradicas where Codigo = @Codigo", conn)
if Convert.ToInt32(cmdPesquisa.ExecuteScalar) > 0 then
// funcao de atualizacao
else
// funcao de insercao
end if -
fiz exatamente assimPrivate Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.ClickDim cmdPesquisa As OleDbCommand = New OleDbCommand("select count(*) from dobradicas where Codigo = @Codigo", conn)If Convert.ToInt32(cmdPesquisa.ExecuteScalar) > 0 ThenBindingContext(ds.Tables("Dobradicas")).EndCurrentEdit()adapter.Update(ds.Tables("Dobradicas"))Elsesalvanew()End IfEnd Subda erro nessa linhaIf Convert.ToInt32(cmdPesquisa.ExecuteScalar) > 0 Thenerro: Nenhum valor foi fornecido para um ou mais parâmetros necessários.
- Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 17:34
- Não Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 17:42
- Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 17:42
-
Sim Bruno como você fez assim veja o parâmetro @Codigo, você terá que fazer:
Dim cmdPesquisa As OleDbCommand = New OleDbCommand("select count(*) from dobradicas where Codigo = @Codigo", conn)
cmdPesquisa.Parameters.AddWithValue("@Codigo", TextBox1.Text)
if Convert.ToInt32(cmdPesquisa.ExecuteScalar) > 0 then
// funcao de atualizacao
else
// funcao de insercao
end if -
a sim, agora entendiobrigado =)mas uma coisa q eu noteise quando rodo o programacrio um novo salvodai vou alterar outro ja salvoda esse erro :As alterações solicitadas para a tabela não foram satisfatórias já que criariam valores duplicados no índice, chave primária ou relação. Altere os dados no campo ou campos que contêm os dados duplicados, remova o índice ou redefina o índice para possibilitar entradas duplicadas e tente novamente.mas se eu apenas altero e salvo nao da o erroe se apenas crio um novo e nao faço mais nada tambem nao da
-
Se você está adicionando o mesmo valor para alguma chave por exemplo Codigo, se você ja tem no banco o codigo 1 e tenta novamente inserir o codigo 1 ele dará erro, pois é uma chave primária e com isso é um campo que tem que ser único, não pode haver o mesmo valor. Fique atento a isso.
- Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 17:41