Joao____ Posted June 26, 2019 at 07:47 PM Report #615176 Posted June 26, 2019 at 07:47 PM (edited) boas, estou a fazer um programa no qual necessito alterar os dados que seleciono atravez de um dategridview mas ao fazer o update os dados sao todos alterados e nao so os selecionados. Se alguem me conseguisse ajudar ficaria grato! Private Sub editar _Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim connection As New OleDbConnection Dim query As String Dim command As New OleDbCommand connection = New OleDbConnection(My.Settings.fclinicConnectionString) query = "UPDATE paciente SET [Nome Paciente]=@Nome_PacienteTextBox,[Nº Utente]=@Nº_UtenteTextBox,[Genero]=@GeneroComboBox,[Data Nascimento]=@Data_NascimentoDateTimePicker,[Morada]=@morada,[Cidade]=@cidade,[País]=@pais,[Codigo Postal]=@codpostal,[Telefone]=@telefone,=@email,[Tipo de Sangue]=@sangue,[Alergias]=@alergias" command = New OleDbCommand(query, connection) command.Parameters.Add("@Nome_PacienteTextBox", OleDbType.VarChar).Value = Nome_PacienteTextBox.Text command.Parameters.Add("@Nº_UtenteTextBox", OleDbType.VarChar).Value = Nº_UtenteTextBox.Text command.Parameters.Add("@GeneroComboBox", OleDbType.VarChar).Value = GeneroComboBox.Text command.Parameters.Add("@Data_NascimentoDateTimePicker", OleDbType.VarChar).Value = Data_NascimentoDateTimePicker.Text command.Parameters.Add("@morada", OleDbType.VarChar).Value = MoradaTextBox.Text command.Parameters.Add("@cidade", OleDbType.VarChar).Value = CidadeTextBox.Text command.Parameters.Add("@pais", OleDbType.VarChar).Value = PaísComboBox.Text command.Parameters.Add("@codpostal", OleDbType.VarChar).Value = Codigo_PostalTextBox.Text command.Parameters.Add("@telefone", OleDbType.VarChar).Value = TelefoneTextBox.Text command.Parameters.Add("@email", OleDbType.VarChar).Value = EmailTextBox.Text command.Parameters.Add("@sangue", OleDbType.VarChar).Value = Tipo_de_SangueComboBox.Text command.Parameters.Add("@alergias", OleDbType.VarChar).Value = AlergiasTextBox.Text Dim Olido As Integer connection.Open() Olido = command.ExecuteNonQuery() If (Olido < 1) Then MsgBox("Erro ao actualizar", MessageBoxButtons.OK, MessageBoxIcon.Error) Else MessageBox.Show("Os dados foram alterados com sucesso!") End If connection.Close() connection.Dispose() End Sub Edited July 21, 2019 at 12:48 AM by thoga31 GeSHi
Cerzedelo Posted June 27, 2019 at 09:10 AM Report #615177 Posted June 27, 2019 at 09:10 AM (edited) O seu problema é realizar correctamente o comando UPDATE. Isto porque, não está a impor uma condição WHERE para o procedimento, o que faz com que a actualização seja de todas as linhas da tabela e não uma especifica. 13 horas atrás, Joao____ disse: query = "UPDATE paciente SET [Nome Paciente]=@Nome_PacienteTextBox,[Nº Utente]=@Nº_UtenteTextBox,[Genero]=@GeneroComboBox,[Data Nascimento]=@Data_NascimentoDateTimePicker,[Morada]=@morada,[Cidade]=@cidade,[País]=@pais,[Codigo Postal]=@codpostal,[Telefone]=@telefone,=@email,[Tipo de Sangue]=@sangue,[Alergias]=@alergias" Altere para algo do género query = "UPDATE paciente SET [Nome Paciente]=@Nome_PacienteTextBox,[Genero]=@GeneroComboBox,[Data Nascimento]=@Data_NascimentoDateTimePicker,[Morada]=@morada,[Cidade]=@cidade,[País]=@pais,[Codigo Postal]=@codpostal,[Telefone]=@telefone,=@email,[Tipo de Sangue]=@sangue,[Alergias]=@alergias WHERE [Nº Utente]=@Nº_UtenteTexBox" Ver: https://www.w3schools.com/sql/sql_update.asp Edited June 27, 2019 at 09:12 AM by Cerzedelo
Joao____ Posted June 27, 2019 at 06:46 PM Author Report #615180 Posted June 27, 2019 at 06:46 PM (edited) o codigo esta correto, mas ele continua a nao fazer o update e da o erro pois os dados nao foram alterados Edited June 27, 2019 at 06:49 PM by Joao____
Joao____ Posted June 27, 2019 at 06:56 PM Author Report #615181 Posted June 27, 2019 at 06:56 PM Dim connection As New OleDbConnection Dim query As String Dim command As New OleDbCommand connection = New OleDbConnection(My.Settings.fclinicConnectionString) query = " UPDATE paciente SET [Nome Paciente]= @Nome_PacienteTextBox,[Genero]= @GeneroComboBox,[Data Nascimento]= @Data_NascimentoDateTimePicker,[Morada]= @morada,[Cidade]= @cidade,[País]= @pais,[Codigo Postal]= @codpostal,[Telefone]= @telefone,Email =@email,[Tipo de Sangue]=@sangue,[Alergias]=@alergias WHERE [Nº Utente]=@Nº_UtenteTexBox" command = New OleDbCommand(query, connection) command.Parameters.Add("@Nome_PacienteTextBox", OleDbType.VarChar).Value = Nome_PacienteTextBox.Text command.Parameters.Add("@Nº_UtenteTextBox", OleDbType.VarChar).Value = Nº_UtenteTextBox.Text command.Parameters.Add("@GeneroComboBox", OleDbType.VarChar).Value = GeneroComboBox.Text command.Parameters.Add("@Data_NascimentoDateTimePicker", OleDbType.VarChar).Value = Data_NascimentoDateTimePicker.Text command.Parameters.Add("@morada", OleDbType.VarChar).Value = MoradaTextBox.Text command.Parameters.Add("@cidade", OleDbType.VarChar).Value = CidadeTextBox.Text command.Parameters.Add("@pais", OleDbType.VarChar).Value = PaísComboBox.Text command.Parameters.Add("@codpostal", OleDbType.VarChar).Value = Codigo_PostalTextBox.Text command.Parameters.Add("@telefone", OleDbType.VarChar).Value = TelefoneTextBox.Text command.Parameters.Add("@email", OleDbType.VarChar).Value = EmailTextBox.Text command.Parameters.Add("@sangue", OleDbType.VarChar).Value = Tipo_de_SangueComboBox.Text command.Parameters.Add("@alergias", OleDbType.VarChar).Value = AlergiasTextBox.Text connection.Open() Dim x As Integer = command.ExecuteNonQuery() If x < 1 Then MessageBox.Show("Erro ao editar", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error) Else MessageBox.Show("editado com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information) End If connection.Close() command = Nothing Neste momento o codigo esta assim, mas assim que faço o alterar ele nao altera e da um erro
Chamuanza Posted July 3, 2019 at 12:56 PM Report #615266 Posted July 3, 2019 at 12:56 PM Tenta colocar na mesma ordem os command como estão na query
Cerzedelo Posted July 3, 2019 at 02:33 PM Report #615268 Posted July 3, 2019 at 02:33 PM (edited) Qual é o erro que dá? Creio que o Access cria visualmente uma query e mostra o código. Tente fazer o update no Access e compare o código SQL com o da aplicação em VB. Experimente, na instrução SQL do update, inserir valores em vez das variáveis, e se verificar que faz o update o problema é da atribuição das variáveis e não do SQL. Recorda-me que com o VB .net em versões anteriores, em desenvolvimento, aparentemente executava o código mas quando se analisava a base de dados as alterações não ocorriam, isto porque, o VB criava uma cópia da base de dados para correr em desenvolvimento, o que fazia, que na base de dados original, não ocorram quaisquer alterações. Desconheço se as versões mais recentes têm esse comportamento, mas quando se instalava a aplicação em modo de produção, ai já se reflectiam na base de dados as alterações efectuadas. Edited July 3, 2019 at 02:34 PM by Cerzedelo
Arcael Posted April 11, 2024 at 11:21 PM Report #632999 Posted April 11, 2024 at 11:21 PM On Exit uma rotina para fazer update em sql Arcael
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now