Jump to content

retirar -1 numa coluna base dados


ProgramadoraR

Recommended Posts

ProgramadoraR

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

Link to post
Share on other sites

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 by Caça
GeSHi

Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Link to post
Share on other sites
ProgramadoraR

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 by Caça
GeSHi
Link to post
Share on other sites
ProgramadoraR

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)

Link to post
Share on other sites

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 by Caça
GeSHi

Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Link to post
Share on other sites
ProgramadoraR
	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 by ProgramadoraR
Falta LP no GeSHi
Link to post
Share on other sites

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

Link to post
Share on other sites

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

Link to post
Share on other sites
ProgramadoraR

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

Link to post
Share on other sites
NunoDinis

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

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.