Jump to content
Fabio92

Problema com Update SQL

Recommended Posts

Fabio92

boas...

estou com um problema ao fazer o update dos dados...

tenho este código abaixo alguem me pode ajudar?

 Dim adapter_trabalho As New Assistencia_tecnicaDataSetTableAdapters.trabalhoTableAdapter

        Dim ini As DateTime
        Dim final As DateTime
        Dim aux1 As TimeSpan
        Dim aux2 As String

        ini = Convert.ToDateTime(H_iniTextBox.Text)
        final = Convert.ToDateTime(H_fimTextBox.Text)
        aux1 = final - ini
        aux2 = Convert.ToString(aux1)

        Try

'da erro nesta linha
            adapter_trabalho.Update(id, Me.DataDateTimePicker.Text, Me.Cod_projectoTextBox.Text, Me.Ident_clienteTextBox.Text,
                                    Me.Sol_plaComboBox.Text, Me.Resp_solicitTextBox.Text, Me.ActividadeComboBox.Text, Me.DescriçãoTextBox.Text, Me.Tec_prevComboBox.Text, Me.Dead_lineDateTimePicker.Text,
                                    Me.Tec_ASSECComboBox.Text, Me.H_iniTextBox.Text, Me.H_fimTextBox.Text, aux2)
            MsgBox("Registo alterado com sucesso!", MsgBoxStyle.Information, Me.Text)

        Catch ex As Exception
            MsgBox(ex.Message)

        End Try

        Form1.Show()
        Me.Close()

    End Sub

Share this post


Link to post
Share on other sites
Rechousa

Olá,

'da erro nesta linha

Desculpa, mas nessa linha podem estar a acontecer dezenas de problemas diferentes:

- A base de dados pode não existir;

- A connectionstring pode não ter sido definida;

- A ligação à base de dados pode não ter sido estabelecida;

- Alguns campos podem estar vazios;

- etc, etc, etc.

Qual a mensagem de erro que obtens? Só assim é que podemos despistar o problema.


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
Fabio92

a mensagem de erro é:

overload resolution failed because no accessible update acepts this number of arguments

mas tipo se o ficheiro tem as 14 colunas, penso que nao deveria dar esse erro...

a mesma linha com o comando insert em vez do update funciona na perfeição...

Share this post


Link to post
Share on other sites
Rechousa

Repara no que diz aqui:

overload resolution failed because no accessible update acepts this number of arguments

Significado: algo está errado com o número de parâmetros.

a mesma linha com o comando insert em vez do update funciona na perfeição...

E depois? No Insert podes ter um campo automático (Identity / AutoNumber) em que não precisas de o especificar (no insert) mas tens de o especificar no Update.


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
Fabio92

mas sao 14 parametros nao posso fazer update so a 13 tem de estar la todos...

eu tenho um form com textboxs para cada parametro, o programa carrega para la todos os parametros por id (depende da linha que se queira alterar) e depois o utilizador altera os campos que quer e carrega no botao alterar...

eu penso que tinha de ser assim...

a função de inserir dados esta a funcionar perfeitamente e a de consulta tambem so para alteração é que esto com este problema...

No Insert podes ter um campo automático (Identity / AutoNumber) em que não precisas de o especificar (no insert) mas tens de o especificar no Update.

eu tenho esse automatismo...

há outra forma de fazer o update?

Share this post


Link to post
Share on other sites
Fabio92

ola outra vez...

segui este tópico:

http://www.portugal-a-programar.pt/index.php?showtopic=44842

fico assim:

  varsql = "UPDATE RH Set [iD] = '" & id & "'," &
                "[data]='" & DataDateTimePicker.Text & "'," &
                "[cod_projecto]='" & Cod_projectoTextBox.Text & "'," &
                "[ident_cliente]='" & Ident_clienteTextBox.Text & "'," &
                "[sol_pla]='" & Sol_plaComboBox.Text & "'," &
                "[resp_solicit]='" & Resp_solicitTextBox.Text & "'," &
                "[actividade]='" & ActividadeComboBox.Text & "'," &
                "[descrição]='" & DescriçãoTextBox.Text & "'," &
                "[tec_prev]='" & Tec_prevComboBox.Text & "'," &
                "[dead_line]='" & Dead_lineDateTimePicker.Text & "'," &
                "[tec_ASSEC]='" & Tec_ASSECComboBox.Text & "'," &
                "[H_ini]='" & H_iniTextBox.Text & "'," &
                "[H_fim]='" & H_fimTextBox.Text & "'," &
                "[tempo_disp]='" & aux2 & "'," &
                "where [id]= " & IDTextBox.Text & ""

mas mesmo assim da um erro quando esta a executar que diz:

INCORRECT SINTAX NEAR THE KEYWORD 'WHERE'

alguem sabe do que é???

Share this post


Link to post
Share on other sites
Caça

Troca

"[tempo_disp]='" & aux2 & "'," &

por

"[tempo_disp]=" & aux2 &

No entanto não deves usar os dois métodos em simultâneo, deves escolher apenas um deles.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Fabio92

nem ficou de uma maneira nem de outra...

tem de ser assim a penultima linha:

"[tempo_disp]='" & aux2 & "'" &

nao pode ter a virgula mas tem de ter as aspas com a pelica la dentro...

obrigado...

agora tou com outro problema por causa do nome da base de dados mas nao tem a ver com o codigo...

Share this post


Link to post
Share on other sites
Caça

Ok, mas agora já dá um erro diferente, certo?

As plicas só devem ser colocadas nos campos que não são numero e tu tens em todas.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Fabio92

ya...

o erro ja nao tem nada a ver tem a ver com conversoes de dados...

tenho de analisar bem isto...

Share this post


Link to post
Share on other sites
Fabio92

ja resolvi o problema das conversoes mas ele agora nao grava as alterações...

qual a instrução que é necessaria?

Share this post


Link to post
Share on other sites
Caça

Mas está a dar erro?

Mostra o código.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Fabio92

nao da erro mas nao grava

 Const constr As String = "Data Source = .\SQLEXPRESS;" & "attachDbFilename=C:\DOCUMENTS AND SETTINGS\SIM 27\AMBIENTE DE TRABALHO\ASSISTENCIA TECNICA1\ASSISTENCIA TECNICA\ASSISTENCIA_TECNICA.MDF;" &
            "Integrated Security=true;connect timeout=30;" & "User instance=true"

        Dim db As New SqlConnection(constr)

        db.Open()

        Dim varsql As String
        id = id + 1
        varsql = "UPDATE trabalho Set [iD] = " & id & "," &
            "[data]='" & DataDateTimePicker.Value & "'," &
            "[cod_projecto]='" & Cod_projectoTextBox.Text & "'," &
            "[ident_cliente]='" & Ident_clienteTextBox.Text & "'," &
            "[sol_pla]='" & Sol_plaComboBox.Text & "'," &
            "[resp_solicit]='" & Resp_solicitTextBox.Text & "'," &
            "[actividade]='" & ActividadeComboBox.Text & "'," &
            "[descrição]='" & DescriçãoTextBox.Text & "'," &
            "[tec_prev]='" & Tec_prevComboBox.Text & "'," &
            "[dead_line]='" & Dead_lineDateTimePicker.Value & "'," &
            "[tec_ASSEC]='" & Tec_ASSECComboBox.Text & "'," &
            "[H_ini]='" & H_iniTextBox.Text & "'," &
            "[H_fim]='" & H_fimTextBox.Text & "'," &
            "[tempo_disp]='" & aux2 & "'" &
            "where [id]= " & id & ""

        Dim cmd As New SqlCommand(varsql, db)

        cmd.ExecuteScalar()

        db.Close()

Share this post


Link to post
Share on other sites
Caça

Pois, isso vai de encontro a isto

(...) No entanto não deves usar os dois métodos em simultâneo, deves escolher apenas um deles.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Caça

Se tiver bem configurado, sim.

Deves ver no DataSet os parâmetros do UpdateCommand que ele te pede e depois mandar para lá só os necessários, isto para continuares da mesma maneira que estavas a fazer.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Fabio92

o id tem de ser id-1 porque como começa a contar no 0 eu quero que ele altere o id numero 2 tem de ser no 1 porque a contagem do id começa no 1 mas o sql é no 0...

nao é?

Share this post


Link to post
Share on other sites
Fabio92

eu descobri por causa de um erro...

o id é automatico e começa no 1 até ao numero de registos, mas o sql começa a contar no 0 logo o id 1 esta na posição 0 do sql...

nao e?

Share this post


Link to post
Share on other sites
Fabio92

esquece isso...

eu estava a ver o carregar dados onde tem de ser id-1 e confundi com esta parte que é id+1...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.