none
Ajuda com parâmetros TextBox / string RRS feed

  • Pergunta

  • Eu tenho esse método onde eu gostaria de trazer o IBGE. Quando eu coloco o TextBox como parâmetro, ele traz normalmente, mas o problema é que estou usando uma Library e não consigo importar o TextBox. Por isso eu substitui o TextBox por uma string, mas dessa forma ele não consegue trazer... Alguem consegue me ajudar?

    public bool recuperarIBGE(string Cidade, string IBGE)
        {
            conexao = new Conexao();
    
            try
            {
                conexao.conectar();
                conexao.abrirConexao();
    
                NpgsqlCommand sql = new NpgsqlCommand("SELECT codibge FROM cidade WHERE nome ilike SEM_ACENTO('" + Cidade + "');", conexao.conexao);
    
                NpgsqlDataReader dr = sql.ExecuteReader();
    
                while (dr.Read())
                {
                    //IBGE.Text = (string)dr["codibge"].ToString();
                    IBGE = (string)dr["codibge"].ToString();
                    retorno = true;
    
                }
                conexao.fecharConexao();
            }
            catch (Exception erro)
            {
                throw erro;
            }
    
            return retorno;
        }


    quarta-feira, 29 de julho de 2015 11:21

Respostas

  • Boa tarde, tem duas formas de retornar o que você quer.

    1) trocar o retorno da função para String

    2) adicionar out na propriedade IBGE 

    Seguem os modelos abaixo.

    Exemplo 1

    public string recuperarIBGE(string Cidade)
    {
    	conexao = new Conexao();
    	string retorno = string.Empty;
    	try
    	{
    		conexao.conectar();
    		conexao.abrirConexao();
    
    		NpgsqlCommand sql = new NpgsqlCommand("SELECT codibge FROM cidade WHERE nome ilike SEM_ACENTO('" + Cidade + "');", conexao.conexao);
    
    		NpgsqlDataReader dr = sql.ExecuteReader();
    
    		while (dr.Read())
    		{
    			//IBGE.Text = (string)dr["codibge"].ToString();
    			retorno = (string)dr["codibge"].ToString();
    		}
    		conexao.fecharConexao();
    	}
    	catch (Exception erro)
    	{
    		throw erro;
    	}
    
    	return retorno;
    }
    
    //Uso da função
    textBox.Text = recuperarIBGE("Cidade");

    Exemplo 2

    public bool recuperarIBGE(string Cidade, out string IBGE)
    {
    	conexao = new Conexao();
    	IBGE = string.Empty;
    	try
    	{
    		conexao.conectar();
    		conexao.abrirConexao();
    
    		NpgsqlCommand sql = new NpgsqlCommand("SELECT codibge FROM cidade WHERE nome ilike SEM_ACENTO('" + Cidade + "');", conexao.conexao);
    
    		NpgsqlDataReader dr = sql.ExecuteReader();
    
    		while (dr.Read())
    		{
    			//IBGE.Text = (string)dr["codibge"].ToString();
    			IBGE = (string)dr["codibge"].ToString();
    			retorno = true;
    
    		}
    		conexao.fecharConexao();
    	}
    	catch (Exception erro)
    	{
    		throw erro;
    	}
    
    	return retorno;
    }
    
    //Uso da função
    string codigoIBGE = string.Empty;
    if(recuperarIBGE("Cidade", out codigoIBGE)) {
    	textBox.Text = codigoIBGE;
    }


    Gilson Joanelo - Desenvolvedor Web

    • Marcado como Resposta EmersonJau terça-feira, 4 de agosto de 2015 10:40
    quarta-feira, 29 de julho de 2015 16:11

Todas as Respostas

  • Olá,

    Você deve criar uma String(classe) e fazer ela receber o valor do textBox.text e ai você converte esse valor para string.

    quarta-feira, 29 de julho de 2015 14:47
  • Eu tenho esse método em uma Library. Porém ai não consigo importar o TextBox.

    Essa class que eu devo criar, ficaria onde?

    quarta-feira, 29 de julho de 2015 15:49
  • Boa tarde, tem duas formas de retornar o que você quer.

    1) trocar o retorno da função para String

    2) adicionar out na propriedade IBGE 

    Seguem os modelos abaixo.

    Exemplo 1

    public string recuperarIBGE(string Cidade)
    {
    	conexao = new Conexao();
    	string retorno = string.Empty;
    	try
    	{
    		conexao.conectar();
    		conexao.abrirConexao();
    
    		NpgsqlCommand sql = new NpgsqlCommand("SELECT codibge FROM cidade WHERE nome ilike SEM_ACENTO('" + Cidade + "');", conexao.conexao);
    
    		NpgsqlDataReader dr = sql.ExecuteReader();
    
    		while (dr.Read())
    		{
    			//IBGE.Text = (string)dr["codibge"].ToString();
    			retorno = (string)dr["codibge"].ToString();
    		}
    		conexao.fecharConexao();
    	}
    	catch (Exception erro)
    	{
    		throw erro;
    	}
    
    	return retorno;
    }
    
    //Uso da função
    textBox.Text = recuperarIBGE("Cidade");

    Exemplo 2

    public bool recuperarIBGE(string Cidade, out string IBGE)
    {
    	conexao = new Conexao();
    	IBGE = string.Empty;
    	try
    	{
    		conexao.conectar();
    		conexao.abrirConexao();
    
    		NpgsqlCommand sql = new NpgsqlCommand("SELECT codibge FROM cidade WHERE nome ilike SEM_ACENTO('" + Cidade + "');", conexao.conexao);
    
    		NpgsqlDataReader dr = sql.ExecuteReader();
    
    		while (dr.Read())
    		{
    			//IBGE.Text = (string)dr["codibge"].ToString();
    			IBGE = (string)dr["codibge"].ToString();
    			retorno = true;
    
    		}
    		conexao.fecharConexao();
    	}
    	catch (Exception erro)
    	{
    		throw erro;
    	}
    
    	return retorno;
    }
    
    //Uso da função
    string codigoIBGE = string.Empty;
    if(recuperarIBGE("Cidade", out codigoIBGE)) {
    	textBox.Text = codigoIBGE;
    }


    Gilson Joanelo - Desenvolvedor Web

    • Marcado como Resposta EmersonJau terça-feira, 4 de agosto de 2015 10:40
    quarta-feira, 29 de julho de 2015 16:11
  • ficaria no mesmo arquivo do form que contém o textBox.

    você criaria assim:

    String ^ Texto = textBox1->Text;

    Para poder converter para string normal deve adicionar esses métodos:

    void MarshalString(String ^ s, string& os) {
    			using namespace Runtime::InteropServices;
    			const char* chars =
    				(const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer();
    			os = chars;
    			Marshal::FreeHGlobal(IntPtr((void*)chars));
    		}
    
    		void MarshalString(String ^ s, wstring& os) {
    			using namespace Runtime::InteropServices;
    			const wchar_t* chars =
    				(const wchar_t*)(Marshal::StringToHGlobalUni(s)).ToPointer();
    			os = chars;
    			Marshal::FreeHGlobal(IntPtr((void*)chars));
    		}

    Ai é só chamar passando os argumentos:

    MarshalString(Texto, NovoTexto);

    quarta-feira, 29 de julho de 2015 19:36