none
Error na Passagem de Parametros RRS feed

  • Pergunta

  • Prezados;

    Estou necessitando de ajuda em descobri o problema que esta causando a mensagem de erro "SqlParameterCollection não contém SqlPaameter com ParameterName" quando executo o código abaixo: 

                                    

                    con = getConexaoDB();
                    con.Open();

                    //-- Cria o Dataset
                    DataSet dsOS = new DataSet();

                    string sql = "select OsCli.filial, Convert(Varchar(10), OsCli.Data,103) Data, OsCli.Sequencia NumeroOS,                                                            OsCli.Cliente" +

                                 "Saicli.Fantasia, OsCli.Codigo_Produto, OsCli.Nome_Produto, OsCli.Detalhe1 Placa" +
                                 "OsCli.Detalhe2 Frota, OsCli.Detalhe3 Mar_Mod_Ano, OsCli.Detalhe6 Chassi" +
                                 "OsCli.Tipo Tipo_OS, OsCli.Situacao Situação_OS, OsCli.Tipo_Geral, OsCli.Fechada" +
                                 "OsCli.Fechada_Por, OsCli.Retirada_Por, OsCli.Retirada_Data, Entregue_Por" +
                                 "from   Ordem_Servico as OsCli" +
                                 "INNER JOIN Cli_For   as SaiCli"  +
                                 "ON SaiCli.Codigo = OsCli.Cliente" +
                                 "where (OsCli.Sequencia = LIKE @Convert.ToInt32(textBoxNrOS))" +
                                 "Order By OsCli.Sequencia";

                    cmd = new SqlCommand(sql);
                    cmd.Connection = con;

                    // define o parâmetro
                    cmd.Parameters.Add(new SqlParameter(
                           "@textBoxNrOS",                            // o numero da Ordem de Serviço 
                        // "@Convert.ToInt32(textBoxNrOS)",           // 0 numero da Ordem de Serviço com conversão 
                           System.Data.SqlDbType.Int,                 // o tipo do parametro
                           20,                                        // o tamanho do parametro
                           "OsCli.Sequencia  "));                     // o nome da coluna

                    // Preenche o parametro com o valor obtido do campo texto
                    cmd.Parameters["@Sequencia"].Value = Convert.ToInt32(textBoxNrOS.Text) + "%";

                    // Executa a cosulta
                    rdr = cmd.ExecuteReader();

                    // Preenche o  GridViewer
                    // limpa    o  GridView
                    OSShopDataGridView.Columns.Clear();

                    //Cria o SQLDataAdapter
                    SqlDataAdapter dOS = new SqlDataAdapter(sql, con);
                    DataTable dtOrdemServicos = new DataTable();
                    dOS.Fill(dtOrdemServicos);
                    dsOS.Tables.Add(dtOrdemServicos);

                    DataTableReader dtrOS = new DataTableReader(dsOS.Tables[0]);
                    dtOrdemServicos.Load(dtrOS, LoadOption.OverwriteChanges);

                    OSShopDataGridView.DataSource = dtOrdemServicos;



    WBarbalho

    quarta-feira, 18 de dezembro de 2013 14:20

Todas as Respostas

  • Olá Barbalho,

    No meio da sua query existe um " @Convert.ToInt32(textBoxNrOS))". O SQL provavelmente está entendendo a palavra "@Convert como o nome de um parâmetro.

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quarta-feira, 18 de dezembro de 2013 17:04
    Moderador
  • Cara acredito que seja o nome do seu parametro.

    @textBoxNrOS

    tenta colocar assim

    textBoxNrOS

    sem o @ e ve o que acontece.

    Abraço.

    quarta-feira, 18 de dezembro de 2013 17:08
  • Prezado;

    Mas o erro informa que no código não existe a coluna "Sequencia", mas ela existe ?

                    // Preenche o parametro com o valor obtido do campo texto
                    cmd.Parameters["@Sequencia"].Value = Convert.ToInt32(textBoxNrOS.Text) + "%"; 


    WBarbalho

    quarta-feira, 18 de dezembro de 2013 17:40
  • Prezado;

    Como pouco conhecedor, todo parâmetro não tem que vim precedido do "@" ?


    Mas o erro informa que no código não existe a coluna "Sequencia", mas ela existe ?

                    // Preenche o parametro com o valor obtido do campo texto
                    cmd.Parameters["@Sequencia"].Value = Convert.ToInt32(textBoxNrOS.Text) + "%"; 


    WBarbalho

    quarta-feira, 18 de dezembro de 2013 17:42
  • Ok, então tenta colocar o index do parametro e não o nome.

    Ex. cmd.Parameters[0].Value = ...


    • Editado Romy Moura quarta-feira, 18 de dezembro de 2013 18:02
    quarta-feira, 18 de dezembro de 2013 17:45
  • Olá,

    Veja se essa alteração no seu código vai ajudar:

     string sql = "select OsCli.filial, Convert(Varchar(10), OsCli.Data,103) Data, OsCli.Sequencia NumeroOS, OsCli.Cliente" +
                                 " Saicli.Fantasia, OsCli.Codigo_Produto, OsCli.Nome_Produto, OsCli.Detalhe1 Placa" +
                                  " OsCli.Detalhe2 Frota, OsCli.Detalhe3 Mar_Mod_Ano, OsCli.Detalhe6 Chassi" +
                                  " OsCli.Tipo Tipo_OS, OsCli.Situacao Situação_OS, OsCli.Tipo_Geral, OsCli.Fechada" +
                                  " OsCli.Fechada_Por, OsCli.Retirada_Por, OsCli.Retirada_Data, Entregue_Por" +
                                  " from   Ordem_Servico as OsCli" +
                                  " INNER JOIN Cli_For   as SaiCli"  +
                                  " ON SaiCli.Codigo = OsCli.Cliente" +
                                  " where (OsCli.Sequencia = @Sequencia) " +
                                  " Order By OsCli.Sequencia";
    
     cmd = new SqlCommand(sql);
     cmd.Connection = con;
    
     // Preenche o parametro com o valor obtido do campo texto
     cmd.Parameters["@Sequencia"].Value = Convert.ToInt32(textBoxNrOS.Text);
    
     // Executa a cosulta
     rdr = cmd.ExecuteReader();
    

    Note que inclui o parâmetro @Sequencia na query, removi uma linha que não compilava e adicionei espaços entre as linhas da sua query.

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quarta-feira, 18 de dezembro de 2013 18:14
    Moderador
  • grato !

    Vou testar !

    Wagner


    WBarbalho

    quarta-feira, 18 de dezembro de 2013 18:52
  • Fernando;

    Pode me ajudar novamente? Pois ainda continua com o mesmo erro !

    SqlParameterCollection não contém SqlPaameter com ParameterName

    ‘@Sequencia’.

    Grato desde já;


    WBarbalho

    quarta-feira, 18 de dezembro de 2013 19:24
  • Amigos;

    ainda necessito de ajuda quanto a mensagem de erro acima.

    Agradeço desde já!


    WBarbalho

    quinta-feira, 19 de dezembro de 2013 12:20
  • Barbalho,

    Substitua as linhas:

     // Preenche o parametro com o valor obtido do campo texto
     cmd.Parameters["@Sequencia"].Value = Convert.ToInt32(textBoxNrOS.Text);
    

    por essas linhas:

     // Preenche o parametro com o valor obtido do campo texto
    command.Parameters.AddWithValue("@Sequencia", Convert.ToInt32(textBoxNrOS.Text));
    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quinta-feira, 19 de dezembro de 2013 15:11
    Moderador
  • Fernando;

    Muito Grato; Vou testar novamente!


    WBarbalho

    quinta-feira, 19 de dezembro de 2013 17:15
  • Fernando;

    Ele apresenta erro no 

    command.

    WBarbalho

    quinta-feira, 19 de dezembro de 2013 17:39
  • Wagner,

    Foi um exemplo, coloque o nome do seu objeto:

    cmd.Parameters.AddWithValue("@Sequencia", Convert.ToInt32(textBoxNrOS.Text));

    quinta-feira, 19 de dezembro de 2013 17:51
  • Fernando;

    Muito obrigado! Passou por esta linha. Porém aparece o erro após execução da consulta:

    // Executa a cosulta
    rdr = cmd.ExecuteReader();

    Error: Incorrect syntax near'.'.

    Uma pergunta:

    Você tem como dar aula on-line ?

    Wagner


    WBarbalho

    quinta-feira, 19 de dezembro de 2013 19:33
  • Fernando;

    Segue o meu e-mail para contato!

    wbarbalho@gmail.com


    WBarbalho

    quinta-feira, 19 de dezembro de 2013 19:40
  • Olá Barbalho,

    Segue a sua query corrigida. Estavam faltando quatro vírgulas.

    string sql = "select OsCli.filial, Convert(Varchar(10), OsCli.Data,103) Data, OsCli.Sequencia NumeroOS, OsCli.Cliente, " +
                                 " Saicli.Fantasia, OsCli.Codigo_Produto, OsCli.Nome_Produto, OsCli.Detalhe1 Placa, " +
                                  " OsCli.Detalhe2 Frota, OsCli.Detalhe3 Mar_Mod_Ano, OsCli.Detalhe6 Chassi, " +
                                  " OsCli.Tipo Tipo_OS, OsCli.Situacao Situação_OS, OsCli.Tipo_Geral, OsCli.Fechada, " +
                                  " OsCli.Fechada_Por, OsCli.Retirada_Por, OsCli.Retirada_Data, Entregue_Por" +
                                  " from   Ordem_Servico as OsCli" +
                                  " INNER JOIN Cli_For   as SaiCli"  +
                                  " ON SaiCli.Codigo = OsCli.Cliente" +
                                  " where (OsCli.Sequencia = @Sequencia) " +
                                  " Order By OsCli.Sequencia";

    Não dou aulas particulares, mas vc pode entrar em contato com os amigos da LGroup: http://lgroup.com.br/

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quinta-feira, 19 de dezembro de 2013 20:11
    Moderador
  • fernando;

    Obrigado mais uma vez. Esta analisando e iria lhe perguntar sobre a faltas destas virgulas 

    na query.

    vou testar!


    WBarbalho

    quinta-feira, 19 de dezembro de 2013 20:13
  • Fernando;

    Necessito de um treinamento focado neste exemplo que estou desenvolvendo.

    aparece a seguinte mensagem de aviso: Que já existe um DataReader aberto na 4a. Linha.

                    //Cria o SQLDataAdapter
                    SqlDataAdapter daOS = new SqlDataAdapter(sql, con);
                    DataTable dtOrdemServicos = new DataTable();
                    daOS.Fill(dtOrdemServicos);    <================= após esta linha !

    Seria necessário fechar com um close  ?


                   dsOS.Tables.Add(dtOrdemServicos);
                   DataTableReader dtrOS = new DataTableReader(dsOS.Tables[0]);
                   dtOrdemServicos.Load(dtrOS, LoadOption.OverwriteChanges);
                   OSShopDataGridView.DataSource = dtOrdemServicos;


    WBarbalho

    quinta-feira, 19 de dezembro de 2013 20:44
  • Olá Wagner,

    Observei seu código e reparei que vc está misturando o uso de DataReaders com DataAdapters. Isso não é necessário. 

    Comente a linha apresentada abaixo e veja o que acontece:

    rdr = cmd.ExecuteReader();

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quinta-feira, 19 de dezembro de 2013 21:52
    Moderador
  • Fernando;

    Mas uma estou lhe pedido ajuda: Ele esta agora solicitando a declaração da variavel "@Sequencia".

    Na linha do Fill

     daOS.Fill(dtOrdemServicos);

    Incluir a declaração da mesma conforme abaixo e continua dando a mensagem?

           

    // define o parâmetro
     cmd.Parameters.Add(new SqlParameter(
      "@textBoxNrOS", // o numero da Ordem de Serviço 
      System.Data.SqlDbType.Int, // o tipo do parametro
      20, // o tamanho do parametro
       "Sequencia")); // o nome da coluna

     // Preenche o parametro com o valor obtido do campo texto
     //cmd.Parameters["@Sequencia"].Value = Convert.ToInt32(textBoxNrOS.Text); // Wagner

     cmd.Parameters.AddWithValue("@Sequencia", Convert.ToInt32(textBoxNrOS.Text)); //Fernando

     // Executa a cosulta
     // rdr = cmd.ExecuteReader();

     //--Incluir a condição de preencher um  GridViewer abaixo !
     // limpa o GridView
        OSShopDataGridView.Columns.Clear();

     // Cria o SQLDataAdapter
                    SqlDataAdapter daOS = new SqlDataAdapter(sql, con);
                    DataTable dtOrdemServicos = new DataTable();
                    daOS.Fill(dtOrdemServicos);
                    dsOS.Tables.Add(dtOrdemServicos);

                    DataTableReader dtrOS = new DataTableReader(dsOS.Tables[0]);
                    dtOrdemServicos.Load(dtrOS, LoadOption.OverwriteChanges);

                    OSShopDataGridView.DataSource = dtOrdemServicos;

    Fernando; Existe a possibilidade de fazermos um treinamento focado para concluir este projeto ? 


    WBarbalho

    sexta-feira, 20 de dezembro de 2013 04:06
  • Olá Barbalho,

    Tudo bem?

    Altere a linha abaixo

    SqlDataAdapter daOS = new SqlDataAdapter(sql, con);

    por essa:

    SqlDataAdapter daOS = new SqlDataAdapter(cmd);

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    sexta-feira, 20 de dezembro de 2013 11:02
    Moderador
  • Meu amigo;

    Bom dia!

    Olha, é complicado !

    Definir o parâmetro como int e ele agora reclama ?


    WBarbalho

    sexta-feira, 20 de dezembro de 2013 13:19
  • Fernando:

    Reparo que somente temos a definição do parâmetro @TextBoxNrOS não tem o @Sequencia ?

    Esta correto a minha analise ?


    WBarbalho

    sexta-feira, 20 de dezembro de 2013 13:33
  • Olá Barbalho,

    Como está a sua query hoje?

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    sexta-feira, 20 de dezembro de 2013 13:54
    Moderador
  • Se puder:

    Porque somente após o comando "daOS.Fill(dtOrdemServicos);" é que ele faz o teste ?

    E não quando definimos e preenchemos os valores das variáveis ?

     // define o parâmetro
        cmd.Parameters.Add(new SqlParameter(
        "@textBoxNrOS",                    // o numero da Ordem de Serviço 
        System.Data.SqlDbType.Int,   // o tipo do parâmetro
        20,                                          // o tamanho do parâmetro
         "Sequencia"));                       // o nome da coluna

     // Preenche o parâmetro com o valor obtido do campo texto
        cmd.Parameters.AddWithValue("@Sequencia", Convert.ToInt32(textBoxNrOS.Text));



    WBarbalho

    sexta-feira, 20 de dezembro de 2013 14:10
  • Olá,

    Esse faz a validação apenas no Fill pois é o momento no qual se conecta no SQL e compila da Query SQL.

    Anteriormente havia enviado a query sem esse parâmetro "@textBoxNrOS". Chegou a alterar algo na query? Como está seu código atualmente?

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    sexta-feira, 20 de dezembro de 2013 14:13
    Moderador
  • Fernando;

    Não retornei!

    Porém conforme os textos enviados, somente observo que você alterou somente na query. Mas também observo que existe este parâmetro na sua declaração e atribuição.

    Vou tomar a liberdade em lhe enviar o código novamente para que você possa observar e tentar

    nos ajudar; (Vai em anexo)

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    using System.Configuration;
    
    
    namespace ControleOficina
    {
        public partial class FrmConsultarOSShopControl : Form
        {
            public FrmConsultarOSShopControl()
            {
                InitializeComponent();
            }
    
            SqlDataReader rdr = null;
            SqlConnection con = null;
            SqlCommand cmd = null;
    
            //Podemos usar a string de conexão diretamente no código mas não é aconselhavel.
            //string connStr = @"Data Source=.\SQL2008;AttachDbFilename=C:\...\S8_Real.MDF;Integrated Security.True; Connect Timeout=30; User Instance=True";
    
            private SqlConnection getConexaoDB()
            {
                //Obtem a string de conexão do App.Config e retorna uma nova conexão.
    
                string strConexao1 = ConfigurationManager.ConnectionStrings["ControleOficina.Properties.Settings.S8_RealConnectionString"].ConnectionString;
                return new SqlConnection(strConexao1);
                string strConexao2 = ConfigurationManager.ConnectionStrings["ControleOficina.Properties.Settings.WblOfDimanConnectionString"].ConnectionString;
                return new SqlConnection(strConexao2);
            }
    
            private void buttonSair_Click(object sender, EventArgs e)
            {
                this.Dispose();
            }
    
            private void buttonPesquisar_Click(object sender, EventArgs e)
            {
                try
                {
                    con = getConexaoDB();
    
                    con.Open();
    
                    //-- Cria o Dataset
                    DataSet dsOS = new DataSet();
    
                    string sql = "select OsCli.filial, Convert(Varchar(10), OsCli.Data,103) Data, OsCli.Sequencia NumeroOS, OsCli.Cliente, " +
                                 " Saicli.Fantasia, OsCli.Codigo_Produto, OsCli.Nome_Produto, OsCli.Detalhe1 Placa, " +
                                  " OsCli.Detalhe2 Frota, OsCli.Detalhe3 Mar_Mod_Ano, OsCli.Detalhe6 Chassi, " +
                                  " OsCli.Tipo Tipo_OS, OsCli.Situacao Situação_OS, OsCli.Tipo_Geral, OsCli.Fechada, " +
                                  " OsCli.Fechada_Por, OsCli.Retirada_Por, OsCli.Retirada_Data, Entregue_Por" +
                                  " from   Ordem_Servico as OsCli" +
                                  " INNER JOIN Cli_For   as SaiCli" +
                                  " ON SaiCli.Codigo = OsCli.Cliente" +
                                  " where (OsCli.Sequencia = @Sequencia) " +
                                  " Order By OsCli.Sequencia";
    
                    cmd = new SqlCommand(sql);
    
                    cmd.Connection = con;
    
                    // define o parâmetro
                    cmd.Parameters.Add(new SqlParameter(
                           "@textBoxNrOS", // o numero da Ordem de Serviço 
                           System.Data.SqlDbType.Int, // o tipo do parametro
                           20, // o tamanho do parametro
                           "Sequencia")); // o nome da coluna
    
                    // Preenche o parametro com o valor obtido do campo texto
                    //cmd.Parameters["@Sequencia"].Value = Convert.ToInt32(textBoxNrOS.Text);
    
                      cmd.Parameters.AddWithValue("@Sequencia", Convert.ToInt32(textBoxNrOS.Text));
    
                    // Executa a cosulta
                   // rdr = cmd.ExecuteReader();
    
                    //--Incluir a condição de preencher um  GridViewer abaixo !
    
                    // limpa o GridView
                    OSShopDataGridView.Columns.Clear();
    
                    //Cria o SQLDataAdapter
                    //SqlDataAdapter daOS = new SqlDataAdapter(sql, con);
                    SqlDataAdapter daOS = new SqlDataAdapter(cmd);
                    DataTable dtOrdemServicos = new DataTable();
                    daOS.Fill(dtOrdemServicos);
                    dsOS.Tables.Add(dtOrdemServicos);
    
                    
                    DataTableReader dtrOS = new DataTableReader(dsOS.Tables[0]);
                    dtOrdemServicos.Load(dtrOS, LoadOption.OverwriteChanges);
    
                    OSShopDataGridView.DataSource = dtOrdemServicos;
    
                }
                catch (Exception ex)
                {
                    // mensagem de erro
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    // fecha os objetos datareader e connection
                    if (rdr != null)
                        rdr.Close();
    
                    if (con.State == ConnectionState.Open)
                        con.Close();
                }
    
            }
    
            private void FrmConsultarOSShopControl_Load(object sender, EventArgs e)
            {
    
            }
        }
    }
    

    Grato desde já; 


    WBarbalho

    sexta-feira, 20 de dezembro de 2013 14:35
  • Teste desta forma:

      private void buttonPesquisar_Click(object sender, EventArgs e)
            {
                try
                {
                    con = getConexaoDB();
    
                    con.Open();
    
                    //-- Cria o Dataset
                    DataSet dsOS = new DataSet();
    
                    string sql = "select OsCli.filial, Convert(Varchar(10), OsCli.Data,103) Data, OsCli.Sequencia NumeroOS, OsCli.Cliente, " +
                                 " Saicli.Fantasia, OsCli.Codigo_Produto, OsCli.Nome_Produto, OsCli.Detalhe1 Placa, " +
                                  " OsCli.Detalhe2 Frota, OsCli.Detalhe3 Mar_Mod_Ano, OsCli.Detalhe6 Chassi, " +
                                  " OsCli.Tipo Tipo_OS, OsCli.Situacao Situação_OS, OsCli.Tipo_Geral, OsCli.Fechada, " +
                                  " OsCli.Fechada_Por, OsCli.Retirada_Por, OsCli.Retirada_Data, Entregue_Por" +
                                  " from   Ordem_Servico as OsCli" +
                                  " INNER JOIN Cli_For   as SaiCli" +
                                  " ON SaiCli.Codigo = OsCli.Cliente" +
                                  " where (OsCli.Sequencia = @Sequencia) " +
                                  " Order By OsCli.Sequencia";
    
                    cmd = new SqlCommand(sql);
    
                    cmd.Connection = con;
    
                    cmd.Parameters.AddWithValue("@Sequencia", Convert.ToInt32(textBoxNrOS.Text));
    
                    // limpa o GridView
                    OSShopDataGridView.Columns.Clear();
    
                    SqlDataAdapter daOS = new SqlDataAdapter(cmd);
                    DataTable dtOrdemServicos = new DataTable();
                    daOS.Fill(dtOrdemServicos);
                    dsOS.Tables.Add(dtOrdemServicos);
    
                    DataTableReader dtrOS = new DataTableReader(dsOS.Tables[0]);
                    dtOrdemServicos.Load(dtrOS, LoadOption.OverwriteChanges);
    
                    OSShopDataGridView.DataSource = dtOrdemServicos;
    
                }
                catch (Exception ex)
                {
                    // mensagem de erro
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    // fecha os objetos datareader e connection
                   // if (rdr != null)
                    //    rdr.Close();
    
                    if (con.State == ConnectionState.Open)
                        con.Close();
                }
    
            }
    

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    sexta-feira, 20 de dezembro de 2013 15:22
    Moderador
  • Fernando;

    Conseguiu ve o código que lhe envie ?


    WBarbalho

    sexta-feira, 20 de dezembro de 2013 17:19
  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    using System.Configuration;
    
    
    namespace ControleOficina
    {
        public partial class FrmConsultarOSShopControl : Form
        {
            public FrmConsultarOSShopControl()
            {
                InitializeComponent();
            }
    
            SqlDataReader rdr = null;
            SqlConnection con = null;
            SqlCommand cmd = null;
    
            //Podemos usar a string de conexão diretamente no código mas não é aconselhavel.
            //string connStr = @"Data Source=.\SQL2008;AttachDbFilename=C:\...\S8_Real.MDF;Integrated Security.True; Connect Timeout=30; User Instance=True";
    
            private SqlConnection getConexaoDB()
            {
                //Obtem a string de conexão do App.Config e retorna uma nova conexão.
    
                string strConexao1 = ConfigurationManager.ConnectionStrings["ControleOficina.Properties.Settings.S8_RealConnectionString"].ConnectionString;
                return new SqlConnection(strConexao1);
                string strConexao2 = ConfigurationManager.ConnectionStrings["ControleOficina.Properties.Settings.WblOfDimanConnectionString"].ConnectionString;
                return new SqlConnection(strConexao2);
            }
    
            private void buttonSair_Click(object sender, EventArgs e)
            {
                this.Dispose();
            }
    
            private void buttonPesquisar_Click(object sender, EventArgs e)
            {
                try
                {
                    con = getConexaoDB();
    
                    con.Open();
    
                    //-- Cria o Dataset
                    DataSet dsOS = new DataSet();
    
                    string sql = "select OsCli.filial, Convert(Varchar(10), OsCli.Data,103) Data, OsCli.Sequencia NumeroOS, OsCli.Cliente, " +
                                 " Saicli.Fantasia, OsCli.Codigo_Produto, OsCli.Nome_Produto, OsCli.Detalhe1 Placa, " +
                                  " OsCli.Detalhe2 Frota, OsCli.Detalhe3 Mar_Mod_Ano, OsCli.Detalhe6 Chassi, " +
                                  " OsCli.Tipo Tipo_OS, OsCli.Situacao Situação_OS, OsCli.Tipo_Geral, OsCli.Fechada, " +
                                  " OsCli.Fechada_Por, OsCli.Retirada_Por, OsCli.Retirada_Data, Entregue_Por" +
                                  " from   Ordem_Servico as OsCli" +
                                  " INNER JOIN Cli_For   as SaiCli" +
                                  " ON SaiCli.Codigo = OsCli.Cliente" +
                                  " where (OsCli.Sequencia = @Sequencia) " +
                                  " Order By OsCli.Sequencia";
    
                    cmd = new SqlCommand(sql);
    
                    cmd.Connection = con;
    
                    // define o parâmetro
                    cmd.Parameters.Add(new SqlParameter(
                           "@textBoxNrOS", // o numero da Ordem de Serviço 
                           System.Data.SqlDbType.Int, // o tipo do parametro
                           20, // o tamanho do parametro
                           "Sequencia")); // o nome da coluna
    
                    // Preenche o parametro com o valor obtido do campo texto
                    //cmd.Parameters["@Sequencia"].Value = Convert.ToInt32(textBoxNrOS.Text);
    
                      cmd.Parameters.AddWithValue("@Sequencia", Convert.ToInt32(textBoxNrOS.Text));
    
                    // Executa a cosulta
                   // rdr = cmd.ExecuteReader();
    
                    //--Incluir a condição de preencher um  GridViewer abaixo !
    
                    // limpa o GridView
                    OSShopDataGridView.Columns.Clear();
    
                    //Cria o SQLDataAdapter
                    //SqlDataAdapter daOS = new SqlDataAdapter(sql, con);
                    SqlDataAdapter daOS = new SqlDataAdapter(cmd);
                    DataTable dtOrdemServicos = new DataTable();
                    daOS.Fill(dtOrdemServicos);
                    dsOS.Tables.Add(dtOrdemServicos);
    
                    
                    DataTableReader dtrOS = new DataTableReader(dsOS.Tables[0]);
                    dtOrdemServicos.Load(dtrOS, LoadOption.OverwriteChanges);
    
                    OSShopDataGridView.DataSource = dtOrdemServicos;
    
                }
                catch (Exception ex)
                {
                    // mensagem de erro
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    // fecha os objetos datareader e connection
                    if (rdr != null)
                        rdr.Close();
    
                    if (con.State == ConnectionState.Open)
                        con.Close();
                }
    
            }
    
            private void FrmConsultarOSShopControl_Load(object sender, EventArgs e)
            {
    
            }
        }
    }
    


    WBarbalho

    sexta-feira, 20 de dezembro de 2013 17:21
  • Olá Barbalho,

    Sim. Já havia respondido 2 horas atrás.

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    sexta-feira, 20 de dezembro de 2013 17:22
    Moderador
  • Fernando;

    somente agora foi que o site atualizou e vi a sua resposta.

    GLORIA A DEUS FUNCIONOU !  

    MUITO OBRIGADO !

    Veja a tela anexa.


    WBarbalho

    sexta-feira, 20 de dezembro de 2013 18:21
  • Fernando;

    Necessito conversar com você, pode ser pelo Skype ?

    ou Teamviewer ?

    Wagner Barbalho

    wbarbalho@gmail.com

     


    WBarbalho

    sexta-feira, 20 de dezembro de 2013 18:23
  • Meu e-mail é o ferhenriquef@live.com e o Skype é o FerHenriqueF.

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    sexta-feira, 20 de dezembro de 2013 18:24
    Moderador