Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Mailho

[Resolvido] Exibir itens de uma tabela no texbox (c#)

Recommended Posts

Pessoal, preciso carregar os dados de uma tabela no site! Eu havia feito um gridView e funcionou beleza(inclusive consegui fazer ele pelo forum)!Funciona assim, o grid da primeira pagina mostra todos os clientes cadastrados, mas apenas as informaçoes mais importantes, dai voce clica no nome do cliente, e entao vai para outra pagina, nesta pagina sim voce tem os dados completos daquele cliente e pode altera-los! Eu consegui fazer isso usando GridViews

 

Mas o problema é que ia ser muito complicado atualizar os cadastros pelo grid (pelo menos para mim). Dai tive a ideia de mudar para texbox(apenas a pagina que mostra os dados completos)! Mas me encontro em outros problemas.

 

Primeiro, nao estou conseguindo chamar aquela coluna no textBox! Eu tenho que chamar o nome do cliente (que foi selecionado) no textBox nome, dai o telefone, o cpf e etc. Eu consegui um codigo mais ou menos, mas dai entra meu segundo problema! do jeito que estou fazendo vou ter que fazer uma referencia para cada textbox, e isso nao parece ser muito pratico. Abaixo esta o codigo.

 

protected void Page_Load(object sender, EventArgs e)
		{

			OracleConnection con = new OracleConnection(@"Data Source=ORAD;User ID=xx; Password=xx;Unicode=True");
			con.Open();

			string dNome = "SELECT nome FROM cadcliente WHERE idcliente = " + Request.QueryString["idcliente"];

			OracleDataAdapter di = new OracleDataAdapter(dNome, con);
			DataSet ds = new DataSet();

			di.Fill(ds, "cadcliente");
			di.Dispose();

			txtNomeCadastr.Text += ds.Tables["cadcliente"].ToString();
			txtNomeCadastr.DataBind();


			con.Close();
		}

dai se eu fosse chamar por exemplo o telefone, teria que colocar assim?:

 

protected void Page_Load(object sender, EventArgs e)
		{

			OracleConnection con = new OracleConnection(@"Data Source=ORAD;User ID=xx; Password=xx;Unicode=True");
			con.Open();

			string dNome = "SELECT nome FROM cadcliente WHERE idcliente = " + Request.QueryString["idcliente"];

			OracleDataAdapter di = new OracleDataAdapter(dNome, con);
			DataSet ds = new DataSet();

			di.Fill(ds, "cadcliente");
			di.Dispose();

			txtNomeCadastr.Text += ds.Tables["cadcliente"].ToString();
			txtNomeCadastr.DataBind();
					   
			string dTelefone = "SELECT telefone FROM cadcliente WHERE idcliente = " + Request.QueryString["idcliente"];

			OracleDataAdapter diTel = new OracleDataAdapter(dTelefone, con);
			DataSet dsTel = new DataSet();

			diTel.Fill(ds, "cadcliente");
			diTel.Dispose();

			txtTelefoneCadastr.Text += ds.Tables["cadcliente"].ToString();
			txtTelefoneCadastr.DataBind();

			con.Close();


		}

E assim vai para cada item da tabela. Deve existir um jeito mais facil. E pra finalizar, eu havia dito que nao consigo chamar a coluna no text box por que no textBox ao inves dele mostrar (por exemplo) o nome ele mostra cadcliente (nome da tabela).

 

Acho que resolvendo essa linha txtNomeCadastr.Text += ds.Tables["cadcliente"].ToString(); ja deve funcionar. E o terceiro problema é: como faço pra dar update na tablea (por isso quero fazer com TextBox). Nao entendi até hoje como funciona o codigo Update xD.

 

Espero que possam ter intendido xD.Se não, é só falar (agradeço se puderem me explicar de forma simples, nao majo quase nada)

Vlw desde já pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza Quintelab eu consegui mostrar os dados no texBox, bem interessante este site! achei outro topico aqui do Imaster tambem que me ajudou. substitui o

 

txtTelefoneCadastr.Text += ds.Tables["cadcliente"].ToString();
			txtTelefoneCadastr.DataBind();

por

 

foreach (DataRow r in ds.Tables[0].Rows)
			{
				txtNomeCadastr.Text = Convert.ToString(r["NOME"]);
				txtTelefoneCadastr.Text = Convert.ToString(r["TELEFONE"]);
etc...
			 }

mas nao se preocupe por que ainda nao acabou rsrsrs. Falta dar update na base atraves do textbox.

Entao quando eu alterar o campo ele ja altera na tabela. Eu até ja achei algumas strings para Update. mas nao entendo o esquema do @ e tal, ainda nao entendi como funciona.

Se voce tiver algum exemplo de como dar update pelo TextBox eu poderia finalizar essa parte (o que seria um grande passo para mim xD).

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim foi DataSet mesmo! nao entendi o que voce quis dizer.

Eu vi o site mas ta em vb!!!!! a string update seira essa:

 

"UPDATE Produtos SET " & _

"NomeDoProduto = '" & txtProduto.Text & "', " & _

"PreçoUnitário = '" & txtPreco.Text & "' " & _

"WHERE CódigoDoProduto = " & E.Item.Cells(1).Text

 

?????????????

Como havia dito, nao entedi muito bem como ela funciona! O que eu preciso pra adapitar por textbox (ja que esta pra gridView)

 

tipo, alguma coisa assim:

 

"UPDATE tabela " & _ "coluna= '" & txtBox.Text & "' " & _

"WHERE CódigoDoProduto = " & E.Item.Cells(1).Text

 

Nao entendi essa ultima parte: E.Item.Cells(1).Text

E esses & e &_???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Andre, como vai?

 

Eu sou iniciante em ASP.NET e praticamente todos os dias me encontro diante de um abismo, para conseguir resolver um determinado problema e por isso recorro sempre a esse excelente forum.

 

Quanto ao seu problema, acredito que eu tenha a solucao, pois ja tive o mesmo problema.

Aqui esta uma rotina que executa o Update.Infelizmente me faltam detalhes tecnivos para explicar a funcao do "@" mas vi em um video

que e um meio mais seguro de se gravar informacoes na base de dados.

 

Meu exemplo esta em VB.NET

 

.
   .
   .
 Sql = "UPDATE REL_PROJETOS "
		Sql += " SET REL_DATAVISITACLI=@REL_DATAVISITACLI, "
		Sql += " REL_HORAVISITACLI=@REL_HORAVISITACLI, "
		Sql += " REL_HORAINIVISCLI=@REL_HORAINIVISCLI, "
		Sql += " REL_HORAFINVISCLI=@REL_HORAFINVISCLI, "
		Sql += " REL_DESCRVISITA=@REL_DESCRVISITA, "
		Sql += " MOT_ID=@MOT_ID "
		Sql += " WHERE REL_ID=" & Request.QueryString("REL_ID")

		cmd = New SqlCommand(Sql, conexao)

		Try
			conexao.Open()

			With cmd.Parameters
				.Add(New SqlParameter("@REL_DATAVISITACLI", MskData.Text.Trim))
				.Add(New SqlParameter("@REL_HORAVISITACLI", MskHora.Text.Trim))
				.Add(New SqlParameter("@REL_HORAINIVISCLI", TxtHoraInic.Text.Trim))
				.Add(New SqlParameter("@REL_HORAFINVISCLI", TxtHoraFim.Text.Trim))
				.Add(New SqlParameter("@REL_DESCRVISITA", TxtDescr.Text.Trim))
				.Add(New SqlParameter("@MOT_ID", CboMotivo.SelectedValue))
			End With

			cmd.ExecuteNonQuery()

   .
   .
   .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao SID_SILVA pena que ta em vb mano! Eu preciso fazer em c#. Voce sabe como passar pra c#?

Outra coisa, como eu concateno os valores do TextBox????????????????????????????????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ha um site que efetua a conversao de VB para C# e vice versa.

 

 

http://www.developerfusion.com/tools/convert/vb-to-csharp/

 

Abaixo segue a conversao com um erro na primeira linha que ocorreu durante a conversao mas certamente isso nao sera problema, uma vez que a sua duvida e outra.

 

 

protected void // ERROR: Handles clauses are not supported in C# Button1_Click(object sender, System.EventArgs e) 
{ 
	string Sql = ""; 
	SqlCommand cmd = default(SqlCommand); 
	
	SqlConnection conexao = default(SqlConnection); 
	
	conexao = new SqlConnection(ConfigurationManager.ConnectionStrings("timesheet").ConnectionString); 
	
	lblMensagem.Text = ""; 
	
	Sql = "UPDATE REL_PROJETOS "; 
	Sql += " SET REL_DATAVISITACLI=@REL_DATAVISITACLI, "; 
	Sql += " REL_HORAVISITACLI=@REL_HORAVISITACLI, "; 
	Sql += " REL_HORAINIVISCLI=@REL_HORAINIVISCLI, "; 
	Sql += " REL_HORAFINVISCLI=@REL_HORAFINVISCLI, "; 
	Sql += " REL_DESCRVISITA=@REL_DESCRVISITA, "; 
	Sql += " MOT_ID=@MOT_ID "; 
	Sql += " WHERE REL_ID=" + Request.QueryString("REL_ID"); 
	
	cmd = new SqlCommand(Sql, conexao); 
	
	try { 
		conexao.Open(); 
		
		{ 
			cmd.Parameters.Add(new SqlParameter("@REL_DATAVISITACLI", MskData.Text.Trim)); 
			cmd.Parameters.Add(new SqlParameter("@REL_HORAVISITACLI", MskHora.Text.Trim)); 
			cmd.Parameters.Add(new SqlParameter("@REL_HORAINIVISCLI", MskHoraInic.Text.Trim)); 
			cmd.Parameters.Add(new SqlParameter("@REL_HORAFINVISCLI", MskHoraFim.Text.Trim)); 
			cmd.Parameters.Add(new SqlParameter("@REL_DESCRVISITA", TxtDescr.Text.Trim)); 
			cmd.Parameters.Add(new SqlParameter("@MOT_ID", CboMotivo.SelectedValue)); 
		} 
		
			
		cmd.ExecuteNonQuery(); 
	} 
	catch (Exception ex) { 
			// & ex.InnerException.ToString 
		lblMensagem.Text = "Ocorreu um Erro Durante a Gravação : " + Constants.vbCrLf + ex.Message + Constants.vbCrLf; 
	} 
	finally { 
		conexao.Close(); 
		Response.Redirect("~/Documentos/DetalhesT15.aspx"); 
		
	} 
}

 

Como eu disse, eu ainda nao programo em C#, se houver algum outro erro de sintaxe alem daquela na primeira linha, foi devido a conversao automatica.

 

 

Um Abraco e boa Sorte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concatenar os valores de um textbox.

 

TextBox1.Text = TextBox2.Text + " / " + TextBox3.Text

 

ou

 

TextBox1.Text = TextBox2.Text & " / " & TextBox3.Text

 

 

 

E isso o que voce realmente quer?

 

 

Um Abraco

Compartilhar este post


Link para o post
Compartilhar em outros sites

xD, nao entendi?

 

Mas eu lhe enviei uma rotina de Update.

 

 

Uma outra forma seria essa :

Sql = "UPDATE FORMATOS "
			Sql = Sql & " SET FORMATO_NOME='" & TxtFormato.Text & "',"
			Sql = Sql & " FORMATO_HORAS ='" & Convert.ToDouble(TxtHoras.Text) & "',"
			Sql = Sql & " FORMATO_CUSTOHORA ='" & Convert.ToDouble(TxtCustoHora.Text) & "',"
			Sql = Sql & " FORMATO_CUSTOFORMATO ='" & Convert.ToDouble(txtCustoFormato.Text) & "'"
			Sql = Sql & " WHERE FORMATO_ID=" & IdFormato

 

E uma concatenacao mas parece que a outra forma e melhor em termos de segurança.

 

Um Abraco

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, eu estou adaptando o codigo que voce me passou e tenho algumas duvidas:

 

nessas linhas

 

Sql = "UPDATE FORMATOS "
Sql = Sql & " SET FORMATO_NOME='" & TxtFormato.Text & "',"
Sql = Sql & " FORMATO_HORAS ='" & Convert.ToDouble(TxtHoras.Text) & "',"
Sql = Sql & " FORMATO_CUSTOHORA ='" & Convert.ToDouble(TxtCustoHora.Text) & "',"
Sql = Sql & " FORMATO_CUSTOFORMATO ='" & Convert.ToDouble(txtCustoFormato.Text) & "'"
Sql = Sql & " WHERE FORMATO_ID=" & IdFormato

Ele esta apresentando um erro quando eu coloco Sql = Sql &, dizendo que o operador & nao pode ser aplicado para operar string e string!

Como eu faço essa parte entao?

 

 

outra coisa, esse FORMATO_NOME seria a tabela seguida da coluna? tabela_coluna

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de usar uma variavel voce precisa declara-la e por isso que esta ocorrendo um erro na linha onde aparece a variavel "SQL".

Essa declaracao de variavel aparece no exemplo convertido para C# que eu enviei.

 

string Sql = "";

 

 

FORMATO_NOME e todo o resto que comeca fom Formato se refere aos campos da minha tabela que se chama Formato, conforme esta na primenra linha do Update.

 

Update Formato (Defino o nome da tabela que sera atualizado)

 

Set Formato_nome ='" & TxtFormato.Text & "'," (Indico que o campo da minha tabela de nome Formato_nome, ira receber o valor do Textbox "TxtFormato.Text)

 

o mesmo ocorre nas demais linhas.

 

Sendo que na ultima, eu executo um where para selecionar apenas o ID (registro) desejado.

 

 

Espero ter ajudado.

 

Um Abraco

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao SID eu declarei a string!olha eu fiz assim:

 

protected void salvarUpdate_Click(object sender, EventArgs e)
		{
			string Oracl = "";
			OracleCommand cmd = default(OracleCommand);

			OracleConnection conexao = default(OracleConnection);

			conexao = new OracleConnection(@"Data Source=ORADS;User ID=xx; Password=xx;Unicode=True");

			Oracl = "UPDATE CADCLIENTE";
			Oracl = Oracl & "SET CADCLIENTE.NOME ='" & txtNomeCadastr.Text & "',";
			Oracl += " WHERE CADCLIENTE.IDCLIENTE=" + Request.QueryString["IDCLIENTE"];

			cmd = new OracleCommand(Oracl, conexao);

			try
			{
				conexao.Open();

				{
					cmd.Parameters.Add(new OracleParameter("@CADCLIENTE.NOME", txtNomeCadastr.Text));
				}

				cmd.ExecuteNonQuery();
			}
			catch (OracleException oledbex)
			{
				throw oledbex;
			}
			finally
			{
				conexao.Close();
				Response.Redirect("../src/clientes.aspx");
			}
			
		}

Dai ele apresenta esse erro: Operator '&' cannot be applied to operands of type 'string' and 'string'

 

vlw pela ajuda, tamu quase conseguindo ^^.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, como eu disse eu nao uso C#, porem ha um erro claro nessa sequencia abaixo:

 

Oracl = "UPDATE CADCLIENTE";
Oracl = Oracl & "SET CADCLIENTE.NOME ='" & txtNomeCadastr.Text & "',";
Oracl += " WHERE CADCLIENTE.IDCLIENTE=" + Request.QueryString["IDCLIENTE"];

O final da linha abaixo esta incorreto :

Oracl = Oracl & "SET CADCLIENTE.NOME ='" & txtNomeCadastr.Text & "',";

O correto seria Aspas Duplas + Aspas Simples + Aspas Duplas

Oracl = Oracl & "SET CADCLIENTE.NOME ='" & txtNomeCadastr.Text & "'";

 

Acredito que nao seja necessario se utilizar o nome da tabelas e apenas o nome do campo no Update

 

SET CADCLIENTE.NOME poderia ser SET NOME

 

Porque voce nao define a sua conexao no arquivo Web.Config, pois dessa forma la seriam definidos DataSource,usuario e senha apenas uma vez e nos seus WebForms voce apenas abriria a conexao, informando o nome da mesma.

 

Da forma como esta, voce tem que definir tudo em todas as subrotinas existentes em um WebForm.

 

 

Um Abraco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que voce colocou a linha abaixo no seu exemplo, uma vez que voce usou a concatenacao?

 

 

cmd.Parameters.Add(new OracleParameter("@CADCLIENTE.NOME", txtNomeCadastr.Text));

Eu acho que voce deveria ter usado isso:

 

conexao.Open()
 
 cmd.ExecuteNonQuery()

 

Um Abraco

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.