1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

dica vb.net

Discussão em 'Programação' iniciada por Ruben_Barbosa, 11 de Março de 2009. (Respostas: 5; Visualizações: 636)

  1. Ruben_Barbosa

    Ruben_Barbosa Power Member

    Código:
    'Actualizar na tabela Inventário
            strSQL = "update Inventario  SET ID = '" & TextBox1.Text & "' , Nome='" & TextBox2.Text & "' , Departamento='" & TextBox3.Text & "' , Modelo_PC='" & TextBox4.Text & "' , Sistema_Operativo='" & TextBox5.Text & "' , CD_KEY_Sistema_Operativo='" & TextBox6.Text & "' , Office='" & TextBox7.Text & "' , CD_KEY_OFFICE='" & TextBox8.Text & "'"
            cmSQL = New SqlCommand(strSQL, cnSQL)
            cmSQL.ExecuteNonQuery()
            cmSQL.Dispose()
    
    Ela não me deixa alterar os dados na bd e n sei pk :(!!!!
    Diz que não posso inserir a mesma chave primaria e está certo ate pk eu não quero inserir mas sim modificar o que já esta la.
     
  2. ribeiro55

    ribeiro55 Power Member

    Primeiro que nada deixa-me exclamar algo:

    Uma coluna ID alfanumérica ?!

    O UPDATE não precisa de levar as colunas todas. Apenas as que queres alterar. Aliás, nem podia alterar colunas que comprometessem a sua identidade. Uma chave primária é um excelente exemplo de identidade :p
    O ID servirá, por exemplo, para critério a seguir ao WHERE.

    No teu código, estás a tentar alterar uma chave (partindo do início que é o ID), e por consequência é te devolvido um erro.
     
  3. Ruben_Barbosa

    Ruben_Barbosa Power Member

    Espero que esta imagem ajuda ;)

    [​IMG]


    Quase como copiar por cima ;). os dados ja existem é tipo substituir-los , vou a textbox em questão e altero mas se os outros não mexer fica igual nas outras.
    E claro obrigado pela ajuda ;)
     
    Última edição: 11 de Março de 2009
  4. ribeiro55

    ribeiro55 Power Member

    É como te disse.
    Não podes passar colunas de identidade num UPDATE. Não podes alterar a única coisa que identifica o registo que queres afectar.
    Através do update, manda todos os valores EXCEPTO o ID. O ID serve para identificar.

    Algo assim:
    Código:
    [B]UPDATE inventario SET[/B] [I]coluna_a_alterar=novo_valor, ...[/I] [B]WHERE ID=[/B][I]id_do_registo_a_alterar[/I]
    Desta forma estás a ordenar um update com os valores que envias, a afectar no registo que tenha como ID aquele que queres afectar.

    Como esperas que o SQL adivinhe onde queres efectuar a alteração?
    É que até é bastante literal:

    ACTUALIZA coluna tal com valor tal ONDE o ID for igual a tal
     
    Última edição: 11 de Março de 2009
  5. SFSS

    SFSS Power Member

    Boas, eu faria assim..

    Dim SQL_Connection As New SQLConnection("connection string")

    Dim SQL_Command as New SQLCommand("UPDATE tab_xpto SET [email protected],[email protected],[email protected] WHERE [email protected]_cliente",SQL_Connection)
    SQL_Command.Parameters.Add(New SQLParameter("@nome",txt_nome.text))
    SQL_Command.Parameters.Add(New SQLParameter("@morada",txt_morada.text))
    SQL_Command.Parameters.Add(New SQLParameter("@telefone",txt_telefone.text))
    SQL_Command.Parameters.Add(New SQLParameter("@id_cliente",cint(txt_id.text)))

    SQL_Connection.Open
    SQL_Command.ExecuteNonQuery
    SQL_Connection.Close


    Abraços
     
  6. Ruben_Barbosa

    Ruben_Barbosa Power Member

    obrigado ribeiro e SFSS ;)
     
    Última edição: 13 de Março de 2009

Partilhar esta Página