Usuário com melhor resposta
Como alterar uma linha especificando o número da linha que desejo alterar, e não ao conteúdo que uma linha da coluna "x" contem?

Pergunta
-
Boa tarde,
Queria saber se tem como alterar um valor de uma tabela especificando o número da linha que desejo alterar. Nos artigos que encontrei pela internet, todos demonstram como alterar uma linha (utilizando a string sql = "UPLOAD tabela Set ....") especificando o conteúdo que uma linha na coluna "x" contém. Por exemplo: sql = " ... WHERE x = "conteúdo". A máquina irá buscar a coluna "x" e irá buscar qual linha da coluna "x" contém a palavra "conteúdo", e qualquer alteração das colunas será realizada apenas nessa linha. Eu queria saber se tem como especificar o número da linha que desejo alterar, como quando quero um dado de uma tabela, e para conseguir esse dado especifico o número da linha e da coluna (ValorQueQueroDaTabela = tabela.Rows(1)(3).ToString() -> o valor que quero da tabela "tabela" encontra-se na linha 1 da coluna 3). Eu quero alterar um valor sem ter que me basear nos valores das linhas da coluna "x" (ou coluna "y", ou coluna "z" ou qualquer outra coluna da tabela).
Como faço isso?
Estou utilizando o Visual Studio, utilizando a linguagem VB e utilizando um banco de dados SQL Server.
Respostas
-
Voce pode fazer simplesmente:
dataset.tabela.Rows(1)(3)="Novo Valor" dataset.AcceptChanges()
fonte: https://msdn.microsoft.com/en-us/library/system.data.dataset.acceptchanges(v=vs.110).aspx
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".- Marcado como Resposta Leonardo Amaral Scudellari terça-feira, 30 de janeiro de 2018 13:31
-
No caso, voce tem que fazer:
ds.Table("MinhaTabela").Rows(1)(3)="Novo Valor" ds.AcceptChanges()
poste seu codigo... fica mais facil criar um exemplo funcional.
att
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".- Marcado como Resposta Leonardo Amaral Scudellari terça-feira, 30 de janeiro de 2018 13:33
Todas as Respostas
-
Voce pode fazer simplesmente:
dataset.tabela.Rows(1)(3)="Novo Valor" dataset.AcceptChanges()
fonte: https://msdn.microsoft.com/en-us/library/system.data.dataset.acceptchanges(v=vs.110).aspx
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".- Marcado como Resposta Leonardo Amaral Scudellari terça-feira, 30 de janeiro de 2018 13:31
-
-
Boa noite William,
É apenas isso que devo fazer? Eu não estou conseguindo fazer isso. Na verdade eu já tinha tentado antes e não tinha dado certo.
Se eu tento digitar o meu dataset (DataSet.Tables("tabela").Rows(1)(4) = "valor") sem declarar, diz que o objeto está inacessível. Tentei declarar o meu DataSet e não consegui. Declarei ele da seguinte maneira: Dim ds As DataSet("MeuDataSet").
Tentei utilizar um datatable: meuDataTable.Rows(1)(4) = "valor". O datatable eu obtive declarando com uma string "SELECT * From tabela", um SqlDataAdapter, um DataSet e a conexão. Não deu certo utilizar o datatable (o código executa sem erros, porém nada acontece na tabela, não ocorre nenhuma alteração da linha).
Eu tentei utilizar o BeginEdit() e o EndEdit() que encontrei nesse link: < https://msdn.microsoft.com/pt-br/library/ch2aw0w6(v=vs.110).aspx >. Não deu certo utilizar o BeginEdit(), o código executou sem erros, mas nada aconteceu na tabela.
Eu tentei declarar o meu datatable da seguinte maneira: Dim tabela As DataTable("MinhaTabela"). Não deu certo declarar o DataTable dessa forma.
Hoje de manhã reparei que você mandou um link. Tentei exatamente da maneira que está no link que mandou, não deu certo. Aparece o seguinte erro: Referência de objeto não definida para uma instância de um objeto. Segue o código.
Dim tabela As DataTable Dim ds As New DataSet() ds = New DataSet() tabela = ds.Tables("DadosViga") Dim linha As DataRow linha = tabela.NewRow() linha(0)(5) = "OLÁ" tabela.Rows.Add(linha) ds.AcceptChanges()
Em linha = tabela.NewRow() acontece o erro. Tive que declarar o ds como New DataSet porque o sistema não aceitou que eu declarasse ele As DataSet apenas. No exemplo do link que mandou ele diz apenas a coluna que deseja inserir o valor (ele não especifica a linha como eu fiz), mas o código não chegou até essa parte.
Vou fazer uma gambiarra aqui mesmo e criar uma coluna com o número das linhas.
Alguém sabe como excluir a pergunta que criei?
- Editado Leonardo Amaral Scudellari sexta-feira, 26 de janeiro de 2018 15:26
-
No caso, voce tem que fazer:
ds.Table("MinhaTabela").Rows(1)(3)="Novo Valor" ds.AcceptChanges()
poste seu codigo... fica mais facil criar um exemplo funcional.
att
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".- Marcado como Resposta Leonardo Amaral Scudellari terça-feira, 30 de janeiro de 2018 13:33
-
Eu editei a minha resposta é coloquei o código que fiz como o link que postou.
Eu escrevi na minha resposta que tentei inserir os dados utilizando um datatable obtido através de um data adaptar, mas hoje li no link que mandou que o AcceptChanges não aceita tabelas obtidas com um DataAdapter.
-
MAs seu dataset nao esta ligado a nenhum banco de dados. O new row falha porque voce nao tem definiçao da tabela. Em um post anterior voce disse:
"O datatable eu obtive declarando com uma string "SELECT * From tabela", um SqlDataAdapter, um DataSet e a conexão. Não deu certo utilizar o datatable (o código executa sem erros, porém nada acontece na tabela, não ocorre nenhuma alteração da linha)."
Onde esta esse código?
Att
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".- Editado William John Adam TrindadeModerator sexta-feira, 26 de janeiro de 2018 16:01
-
Esse código está funcionando. Estou conseguindo resgatar os valores da tabela normalmente. Esse código está dividido em duas classes, uma chamada SQLHelper e outra VigasBLL. A classe SQLHelper contém uma função que realiza a conexão, e a classe VigasBLL contém a string de conexão. No form eu apenas declaro um DataTable e obtenho os valores através das funções. Como disse, estou conseguindo obter os valores normalmente, mas segue o código.
Public Class SQLHelper Private conexao As SqlConnection Private dap As SqlDataAdapter Private cmd As SqlCommand Public Sub New() Dim strConexao As String = ConfigurationManager.ConnectionStrings("VigasSQLServer").ConnectionString conexao = New SqlConnection(strConexao) End Sub '"<summary> '"Carrega todos os registros do banco de dados '"</summary> '"<returns></returns> Public Function GetDados(ByVal sql As String) As DataTable dap = New SqlDataAdapter(sql, conexao) dap.SelectCommand.CommandType = CommandType.Text Dim ds As New DataSet() Try dap.Fill(ds, "DadosViga") Return ds.Tables("DadosViga") Catch Throw Finally ds.Dispose() dap.Dispose() conexao.Close() conexao.Dispose() End Try End Function
Public Function GetDadosViga() As DataTable _dal = New SQLHelper Try Dim sql As String = "Select * From DadosViga" dtv = _dal.GetDados(sql) Return dtv Catch ex As Exception Throw ex End Try End Function
O DataTable dtv está declarado fora da função.
Bom, eu não tentei utilizar o NewRow() com o DataTable obtido acima. Vou tentar agora a tarde.
-
Boa tarde, Leonardo Amaral Scudellari. Tudo bem?
Conseguiu o que precisava? Se ainda não, o que precisa?
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Bom dia Filipe, tudo bem e você?
Consegui e não consegui. O William me apresentou uma maneira para fazer o que eu precisava fazer. Porém, eu não consegui aplicar o que ele me passou. Mesmo assim vou marcar o William como resposta porque ele me apresentou o que eu queria, eu é que não consegui aplicar aqui.
Filipe, sabe me dizer como faço para excluir alguma pergunta que criei?
- Editado Leonardo Amaral Scudellari terça-feira, 30 de janeiro de 2018 13:30