Usuário com melhor resposta
pesquisar na camada de logica de negocios e atribuir valor para textbox na camada de apresentação

Pergunta
-
ola pessoal, na camada de apresentação, quando clico em Alterar, consigo obter o codigo do vendedor, quero pesquisar esse codigo de vendedor na camada de logica de negocios, apos fazer essa pesquisa, como atribuo os valores obtidos em logica de negocios e atribuo para os TextBox que estao na camada de apresentação ?
private void btnalterar_Click(object sender, EventArgs e)
{
Tag = "alterar";
AcessoBancoDados.conectaBase();
string cod = dataGridView1.CurrentRow.Cells["CODVEN"].Value.ToString();- dto.Codven = int.Parse(cod);
bll.Alterar(dto);
}
-- essa camada é a camada de logica de negocios --
public bool Alterar(VendedorDTO dto)
{
MySqlCommand comandoSql = new MySqlCommand("SELECT * FROM VENDEDORES WHERE CODVEN =" + dto.Codven, AcessoBancoDados.conn);
MySqlDataReader leitor = comandoSql.ExecuteReader();
leitor.Read();
quero atribuir o Nome do Vendedor para TextBox que esta na camada de apresentação
return true;
}C#
obrigado.
Respostas
-
Porter, você terá que colocar um breakpoint na linha do retorno do seu método Alterar, ou logo após o comando ExecuteReader, pois ao que parece, a sua consulta não está retornando dados, ou você esqueceu de preencher a sua variável Tabela. Então, seu método deveria estar algo em torno disso:
public DataTable Alterar(VendedorDTO dto) { DataTable Tabela = new DataTable(); MySqlCommand comandoSql = new MySqlCommand("SELECT * FROM VENDEDORES WHERE CODVEN =" + dto.Codven, AcessoBancoDados.conn); MySqlDataReader leitor = comandoSql.ExecuteReader(); Tabela.Load(leitor);// Se não tiver esta linha, você estará apenas retornando uma tabela vazia, e pode estar aí o problema return Tabela;// Adicione um breakpoint aqui, e verifique se foram retornados registros }
- Editado Rodrigo CdS quarta-feira, 30 de setembro de 2015 11:55
- Marcado como Resposta Porter Porter quarta-feira, 30 de setembro de 2015 13:23
-
Voce tem de retorar uma lista ou dataset ou datatable, ou datareader, so assim podes atribuir na camada de apresentacao o resultado.
o teu public bool alterar retorna um valor verdadeiro ou falso, e impossivel desta forma.
troca pra....
Public DataTable Alterar(VendedorDTO dto)
{
DataTable Tabela = new DataTable();
codigo aki
return Tabela;
}
Foreach(DataRow row in Alterar(dt0)
{
TextBox.Text=row[0].ToString();
TextBox.Text =row[1].ToString();
}
A flower cannot blossom without sunshine, and man cannot live without love.
- Marcado como Resposta Marcos SJ terça-feira, 29 de setembro de 2015 18:23
-
Olá, Porter!
Basicamente você precisa escrever este código:
if (leitor.Read()) { textBox1.Text = leitor.GetString(1); //Sendo que 1 é o índice da coluna com a informação desejada }
Para saber mais sobre o DataReader, leia este artigo.
Bom trabalho!
- Marcado como Resposta Marcos SJ terça-feira, 29 de setembro de 2015 18:23
Todas as Respostas
-
Voce tem de retorar uma lista ou dataset ou datatable, ou datareader, so assim podes atribuir na camada de apresentacao o resultado.
o teu public bool alterar retorna um valor verdadeiro ou falso, e impossivel desta forma.
troca pra....
Public DataTable Alterar(VendedorDTO dto)
{
DataTable Tabela = new DataTable();
codigo aki
return Tabela;
}
Foreach(DataRow row in Alterar(dt0)
{
TextBox.Text=row[0].ToString();
TextBox.Text =row[1].ToString();
}
A flower cannot blossom without sunshine, and man cannot live without love.
- Marcado como Resposta Marcos SJ terça-feira, 29 de setembro de 2015 18:23
-
Olá, Porter!
Basicamente você precisa escrever este código:
if (leitor.Read()) { textBox1.Text = leitor.GetString(1); //Sendo que 1 é o índice da coluna com a informação desejada }
Para saber mais sobre o DataReader, leia este artigo.
Bom trabalho!
- Marcado como Resposta Marcos SJ terça-feira, 29 de setembro de 2015 18:23
-
na camada de negocios estou fazendo assim:
public DataTable Alterar(VendedorDTO dto)
{
DataTable Tabela = new DataTable();
MySqlCommand comandoSql = new MySqlCommand("SELECT * FROM VENDEDORES WHERE CODVEN =" + dto.Codven, AcessoBancoDados.conn);
MySqlDataReader leitor = comandoSql.ExecuteReader();
return Tabela;
}nao estou conseguindo na camada de apresentacao atribuir aos textbox, nao consigo acessar a Tabela la da camada de negocios, como faço para acessa-la ?
private void btnalterar_Click(object sender, EventArgs e)
{
Tag = "alterar";
AcessoBancoDados.conectaBase();
string cod = dataGridView1.CurrentRow.Cells["CODVEN"].Value.ToString();dto.Codven = int.Parse(cod);
bll.Alterar(dto);txtnome.text = <-- aqui e a minha duvida para acessar a Tabela
- Editado Porter Porter terça-feira, 29 de setembro de 2015 17:00
-
Bom, neste caso no método Alterar faltou adicionar o código "Tabela.Load(leitor);" e, aí sim, "return Tabela;". E não esqueça de abrir e fechar a conexão caso não o tenha feito. No evento btnalterar_Click, isto deverá funcionar:
DataTable dt = bll.Alterar(dto); txtnome.Text = dt.Rows.Cast<DataRow>().Select(s => s["NomeDoCampo"].ToString()).FirstOrDefault();
Este código obtém o primeiro registro. Mas esta é uma possibilidade de solução.
-
ola Rodrigo, dessa forma o txtnome.Text retorna branco ("")
DataTable dt = bll.Alterar(dto); txtnome.Text = dt.Rows.Cast<DataRow>().Select(s => s["Nome"].ToString()).FirstOrDefault();
assim:
txtnome.Text retorna System.data.DataRowColletion
DataTable dt = bll.Alterar(dto); txtnome.Text = dt.Rows.ToString();
-
ola Rodrigo, dessa forma o txtnome.Text retorna branco ("")
DataTable dt = bll.Alterar(dto); txtnome.Text = dt.Rows.Cast<DataRow>().Select(s => s["Nome"].ToString()).FirstOrDefault();
assim:
txtnome.Text retorna System.data.DataRowColletion
DataTable dt = bll.Alterar(dto); txtnome.Text = dt.Rows.ToString();
-
bom dia Rodrigo, sim tem o campo "Nome", com esse comando txtnome.Text retorna branco("")
txtnome.Text = dt.Rows.Cast<DataRow>().Select(s => s["Nome"].ToString()).FirstOrDefault();
se fizer assim, da a seguinte mensagem: Não há linha na posição 1
DataTable dt = bll.Alterar(dto);
try
{
txtnome.Text = dt.Rows[1].ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
} -
Porter, você terá que colocar um breakpoint na linha do retorno do seu método Alterar, ou logo após o comando ExecuteReader, pois ao que parece, a sua consulta não está retornando dados, ou você esqueceu de preencher a sua variável Tabela. Então, seu método deveria estar algo em torno disso:
public DataTable Alterar(VendedorDTO dto) { DataTable Tabela = new DataTable(); MySqlCommand comandoSql = new MySqlCommand("SELECT * FROM VENDEDORES WHERE CODVEN =" + dto.Codven, AcessoBancoDados.conn); MySqlDataReader leitor = comandoSql.ExecuteReader(); Tabela.Load(leitor);// Se não tiver esta linha, você estará apenas retornando uma tabela vazia, e pode estar aí o problema return Tabela;// Adicione um breakpoint aqui, e verifique se foram retornados registros }
- Editado Rodrigo CdS quarta-feira, 30 de setembro de 2015 11:55
- Marcado como Resposta Porter Porter quarta-feira, 30 de setembro de 2015 13:23
-