Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Migchines

Problema ao fazer update numa base de dados em sql, no vb 2010

Recommended Posts

 

 

Private Sub btnalterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnalterar.Click
If Validar_dados() = False Then Exit Sub
Dim adpater_cobradores As New ajnespereiraDataSetTableAdapters.CobradoresTableAdapter
Try
adpater_cobradores.Update(Me.Cod_cobradorMaskedTextBox.Text, Me.NomeTextBox.Text, cod_cobrador_anterior, nome_anterior)
MsgBox("Registo alterado com sucesso!", MsgBoxStyle.Information, Me.Text)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub

 

Dá-me o seguinte erro:
-Overload resolution failed because no accessible 'Update' accepts this number of arguments.
Não consigo resolver de maneira nenhuma, é um projeto pap e preciso mesmo de ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

-Overload resolution failed because no accessible 'Update' accepts this number of arguments.

 

A funcao update nao pode ser chamada pois o numero de argumentos esta errado.

 

Verifuque na documentacao a chamada correta.

 

Obs : nao é questao de BD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Documentação do VB, procure por esta FUNCTION (update) da Classe ajnespereiraDataSetTableAdapters.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conheço pouco VB, apenas traduzi o erro relatado.

 

Tente com o Compomente focado apertar a tecla F1, em Delphi chama o help do Componente.

 

Vou pedir para moverem este tópico para a área de VB.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso acontece porque você está colocando mais ou menos parâmetros do que a função pede, por exemplo, se a função é [inline]Soma(numero1 As Integer, numero2 As Integer)[/inline]. Você deve colocar apenas 2 parâmetros, o numero 1 e 2. No seu caso você está colocando mais parâmetros do que a função pede, seria o mesmo que fazer [inline]Soma(1,2,3)[/inline]. Há um parâmetro a mais.

 

Ao invés de usar adapters, que são extremamente complicados, você pode utilizar consultas diretas no SQL:

 

Dim con As New SqlConnection("suastringdeconexao")
Dim com as New SqlCommand("suaQuery",con)
con.Open()
com.executeNonQuery()
con.Close()

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Private Sub btnalterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnalterar.Click


        If Validar_dados() = False Then Exit Sub


        
        Dim con As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\chines\Desktop\PAP's\AJN\AJN\AJN\ajnespereira.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
     
  Dim com As New SqlCommand("UPDATE Cobradores SET cod_cobrador='" & Cod_cobradorMaskedTextBox.Text & "' AND nome='" & NomeTextBox.Text & "';", con)


        con.Open()






        Try
            com.ExecuteNonQuery()
           
            MsgBox("Registo alterado com sucesso!", MsgBoxStyle.Information, Me.Text)
            con.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try


    End Sub

 

Neste código para fazer o update não consigo fazer a query como deve ser, dame este erro : "Incorrect syntax error near the keyword 'AND'."

Compartilhar este post


Link para o post
Compartilhar em outros sites

A query está errada:

 

 

UPDATE cobradores SET cod_cobrador = Convert.ToInt32(cod_cobradorMaskedTextBox.Text) AND nome = 'NomeTextBox.Text'

O seu campo de código é integer, ele não pode conter varchars. Claro que nesta query eu não usei nenhuma concatenação, então você deve concatenar o texto para que dê certo ou então usar parâmetros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao eliminar um registo da base de dados, elimina com sucesso mas quando vou consultar a tabela depois de apagado o registo nao esta la, não atualizou a tabela, saio do programa, volto a ligar e ja esta atualizada, ha alguma forma de atualizar a base de dados ou fazer alguma coisa no "LOAD" da tabela para que não tenha que sair do programa ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa sua frase ficou um pouco confusa...

 

 

 

Ao eliminar um registo da base de dados, elimina com sucesso

 

 

 

quando vou consultar a tabela depois de apagado o registo nao esta la

 

Isso significa que está funcionando, certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim...funciona. estou a usar so query´s para eliminar e alterar os registos...

 

Mas ao eliminar, por exemplo, elimina com sucesso...mas quando vou consultar a tabela, no decorrer do programa, o registo esta la e nao foi eliminado...

 

 

Desligo o programa e volto a ligar e ja eliminou. . .

 

Preciso de ao eliminar o registo fazer refresh á base de dados para atualizar os registos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falta de COMMIT ou de TRANSACTION, talvez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.