ProgramadoraR Posted February 26, 2013 at 06:19 PM Report #497107 Posted February 26, 2013 at 06:19 PM Boas, no meu form tenho um datagridview em que mostra os dados de uma tabela, e o que eu quero fazer é para quando carregar num botao me tirar -1 duma coluna, como posso fazer? Desde já obrigada
NunoDinis Posted February 26, 2013 at 07:13 PM Report #497119 Posted February 26, 2013 at 07:13 PM tens que ir buscar o valor da coluna que pretendes e decrementar.. Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
ProgramadoraR Posted February 26, 2013 at 07:42 PM Author Report #497133 Posted February 26, 2013 at 07:42 PM boaa, fiquei na mesma isso ja eu sabia...
NunoDinis Posted February 26, 2013 at 07:45 PM Report #497134 Posted February 26, 2013 at 07:45 PM so respondi a tua pergunta 🙂 ja tens algum codigo? Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
NunoDinis Posted February 27, 2013 at 09:04 AM Report #497189 Posted February 27, 2013 at 09:04 AM (edited) Agora que estou na minha máquina, fiz-te um exemplo: //declara variaveis int i = dataGridView1.CurrentRow.Index,conta; String decrementa; //vai buscar o valor da coluna decrementa = dataGridView1.CurrentRow.Cells["TESTE"].Value.ToString(); //converte para inteiro int valor = Convert.ToInt32(decrementa); conta = valor - 1; //imprime MessageBox.Show(conta.ToString()); Edited February 27, 2013 at 02:12 PM by Caça GeSHi Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
ProgramadoraR Posted February 27, 2013 at 01:13 PM Author Report #497255 Posted February 27, 2013 at 01:13 PM (edited) Obrigada pela ajuda ele ja ta a fazer -1 (que mostra numa messagem) mas nao ta a mudar na base dados, como é que eu posso fazer para ele ir buscar a base dados e fazer o -1? Até agora tenho este codigo: int i = dataGridView1.CurrentRow.Index, conta; String decrementa; SqlConnection sqlConn = null; string strCoon = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\caminho para a base dados sqlConn = new SqlConnection(strCoon); try { sqlConn.Open(); string select = "select NomeColuna from NomeTabela"; SqlCommand cmd = new SqlCommand(select, sqlConn); cmd = new SqlCommand(select, sqlConn); SqlDataReader reader = cmd.ExecuteReader(); decrementa = dataGridView1.CurrentRow.Cells["NomeColuna"].Value.ToString(); int valor = Convert.ToInt32(decrementa); conta = valor - 1; MessageBox.Show(conta.ToString()); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { sqlConn.Close(); } Edited February 27, 2013 at 02:12 PM by Caça GeSHi
NunoDinis Posted February 27, 2013 at 01:20 PM Report #497256 Posted February 27, 2013 at 01:20 PM Com esse código já popula a datagrid com os valores da BD ? Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
ProgramadoraR Posted February 27, 2013 at 01:35 PM Author Report #497258 Posted February 27, 2013 at 01:35 PM com este codigo se eu tiver 50 (por exemplo) na coluna que é para tirar -1 o que faz é mostrar-me uma mensagem com "49" mas nao me altera na base dados para 49 (que é o que quero fazer)
NunoDinis Posted February 27, 2013 at 01:46 PM Report #497259 Posted February 27, 2013 at 01:46 PM (edited) Porque estás a fazer um SELECT e tens que fazer um UPDATE. Algo deste género (BD SQL): try { SqlConnection sqlConn = null; string strCoon = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\caminho para a base dados" sqlConn = new SqlConnection(strCoon); conn.Open(); using (SqlCommand cmd = new SqlCommand("UPDATE NOMETABELA SET CAMPODECREMENTADO=@CAMPODECREMENTADO WHERE Id=@Id", conn)) cmd.Parameters.AddWithValue("@Id", 1); cmd.Parameters.AddWithValue("@CAMPODECREMENTADO", dataGridView1.CurrentRow.Cells["NomeColuna"].Value.ToString()); int rows = cmd.ExecuteNonQuery(); } catch (SqlException ex) { //Log exception //Display Error message } Edited February 27, 2013 at 02:12 PM by Caça GeSHi Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
ProgramadoraR Posted February 27, 2013 at 02:22 PM Author Report #497262 Posted February 27, 2013 at 02:22 PM (edited) private void button1_Click(object sender, EventArgs e) { int i = dataGridView1.CurrentRow.Index, conta; String decrementa; SqlConnection sqlConn = null; string strCoon = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Caminho para a base dados"; sqlConn = new SqlConnection(strCoon); try { sqlConn.Open(); string select = "select NomeColuna from NomeTabela"; SqlCommand cmd = new SqlCommand(select, sqlConn); cmd = new SqlCommand(select, sqlConn); SqlDataReader reader = cmd.ExecuteReader(); decrementa = dataGridView1.CurrentRow.Cells["NomeColuna"].Value.ToString(); int valor = Convert.ToInt32(decrementa); conta = valor - 1; MessageBox.Show(conta.ToString()); reader.Close(); reader.Dispose(); string update = "update NomeTabela set NomeColuna=@NomeColuna where ID = @ID"; SqlCommand cmd1 = new SqlCommand(update, sqlConn); cmd1.Parameters.Add("@ID", SqlDbType.Int).Value = txtID.Text; cmd1.Parameters.AddWithValue("@NomeColuna", dataGridView1.CurrentRow.Cells["NomeColuna"].Value.ToString()); int rows = cmd1.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { sqlConn.Close(); } } Continua a mandar a messagem com "49" mas nao me altera na base dados :/ Edited February 27, 2013 at 02:31 PM by ProgramadoraR Falta LP no GeSHi
ProgramadoraR Posted February 27, 2013 at 02:56 PM Author Report #497266 Posted February 27, 2013 at 02:56 PM Como é que faço para me alterar na base dados?
NunoDinis Posted February 27, 2013 at 03:39 PM Report #497272 Posted February 27, 2013 at 03:39 PM Não podes fazer as duas operações no mesmo botão. Estás a carregar os dados quando carregas no botão 1, e a fazer o update também nesse botão, ao mesmo tempo. Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
ProgramadoraR Posted February 27, 2013 at 04:03 PM Author Report #497275 Posted February 27, 2013 at 04:03 PM entao como é que faço? ja experimentei meter o select dentro de um metodo e depois chama-lo no botao e de seguida meter o codigo para alterar mas também nao da :/
NunoDinis Posted February 27, 2013 at 04:06 PM Report #497276 Posted February 27, 2013 at 04:06 PM Abastece a tua datagrid quando ela é chamada. Evento Load. Quando o fizeres posta o código e diz-me se está a carregar direitinho.. Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
ProgramadoraR Posted February 27, 2013 at 04:13 PM Author Report #497277 Posted February 27, 2013 at 04:13 PM e meto o que no datagrid? nao percebi...
NunoDinis Posted February 27, 2013 at 04:14 PM Report #497278 Posted February 27, 2013 at 04:14 PM A datagrid vai ser só para inserires valores ou também vai ter registos abastecidos pela base de dados ? Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
ProgramadoraR Posted February 27, 2013 at 04:25 PM Author Report #497281 Posted February 27, 2013 at 04:25 PM (edited) a unica coisa que faz é tirar-me -1 duma coluna (a que é selecionada), ou seja, faço um select e update Edited February 27, 2013 at 04:25 PM by ProgramadoraR
NunoDinis Posted February 27, 2013 at 04:33 PM Report #497283 Posted February 27, 2013 at 04:33 PM Não, estás a pensar completamente errado! Para fazer o update, não tens que fazer o select quando carregas na celula da datagrid.. faz como te disse: no evento load do formulário põe o código para abastecer a datagrid (o select). Se tiveres dúvidas vê aqui. Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
ProgramadoraR Posted March 7, 2013 at 11:43 AM Author Report #498263 Posted March 7, 2013 at 11:43 AM Boas, agora estou com um problema parecido ao anterior. Eu tenho duas tabelas (tabela1 e tabela2) E tenho um form com um datagridview em que mostra os dados da tabela1, no qual uma coluna da tabela1 tem o id da tabela2, e estas estão relacionadas E o meu objectivo é quando selecionar uma linha num datagridview com os dados da tabela1 que tem esse id alterar-me os dados da tabela2 com o mesmo id da tabela1 E entao o que eu tenho de fazer, penso que seja um select do id da tabela1, para depois fazer um update na tabela2 da linha que foi selecionada, certo? Desde já obrigada
NunoDinis Posted March 7, 2013 at 12:19 PM Report #498266 Posted March 7, 2013 at 12:19 PM Se já tens os dados listados não precisas de select. Precisas apenas de ir buscar os valores dessa linha e fazer o update na tabela2.. Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
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