none
Dúvida com C#...Access... RRS feed

  • Pergunta

  • Boa tarde pessoal!

     

    É o seguinte:

     

    Tenho um banco access...nele uma tabela CLIENTFORNEC...

    Nessa tabela, o IDCODIGO é do tipo número...

    Daí eu quero pegar o último IDCODIGO do banco + 1..e colocar no texbox....no meu webform...

     

    Aí vai o código ..mas ta dando erro...ele não ta retornando o maior...

     

    using System;

    using System.Data;

    using System.Configuration;

    using System.Web;

    using System.Web.Security;

    using System.Web.UI;

    using System.Web.UI.WebControls;

    using System.Web.UI.WebControls.WebParts;

    using System.Web.UI.HtmlControls;

    using System.Data.OleDb;

     

    public partial class _Default : System.Web.UI.Page

    {

          protected void Button1_Click(object sender, EventArgs e)

             {

     

                        String _connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\teste\Sag-acess.mdb";

     

                        String _query = "Select MAX(CFIDCODIGO) AS MAIOR from [CF-CLIENTE FORNECEDOR]";

     

                        OleDbConnection _dataConn = new OleDbConnection(_connectionString);

                        OleDbCommand _dataCommand = new OleDbCommand(_query, _dataConn);

                       OleDbDataReader _dataReader;

                       _dataConn.Open();

                       _dataReader = _dataCommand.ExecuteReader();

                              if (_dataReader.HasRows)

                                     {

     

                                         while (_dataReader.Read())

                                                {

     

                                                    this.CFIDCODIGO.Text = (_dataReader.GetString(0));  //erro: Specified cast is not valid.

                                                   }

                                       }

                        _dataReader.Close();

                        _dataConn.Close();

     

     

    }

    }

     

     

    Se não for assim q faz, alguém sabe como fazer?

     

    Muito Obrigada;

    Att.: Elaine

    quinta-feira, 6 de dezembro de 2007 18:45

Respostas

  • Elaine,

     

    Segue o seu evento Button_Click novamente:

    Code Block

    protected void Button1_Click(object sender, EventArgs e)

    {

    string _connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\teste\Sag-acess.mdb";

     

    string _query = "SELECT IIF(IsNull(MAX(CFIDCODIGO)), 0, MAX(CFIDCODIGO)) AS MAIOR FROM [CF-CLIENTE FORNECEDOR]";

     

    // cria conexão

    OleDbConnection _dataConn = new OleDbConnection(_connectionString);

     

    // cria comando

    OleDbCommand _dataCommand = new OleDbCommand(_query, _dataConn);

     

    try

    {

    // abre conexão

    _dataConn.Open();

     

    // executa comando

    int maior = (int)_dataCommand.ExecuteScalar();

     

    // incrementa maior valor

    maior++;

     

    // modifica text box

    this.CFIDCODIGO.Text = maior.ToString();

    }

    catch (Exception ex)

    {

    MessageBox.Show(this, ex.Message, this.Text, MessageBoxButtons.OK,

    MessageBoxIcon.Exclamation);

    }

    finally

    {

    if (_dataConn.ConnectionState == ConnectionState.Open)

    _dataConn.Close();

    }

    }

     

     

     

     

    Ari

    quarta-feira, 12 de dezembro de 2007 02:33

Todas as Respostas

  • Tenta

    this.CFIDCODIGO.Text = (_dataReader["MAIOR"]);

     

    sexta-feira, 7 de dezembro de 2007 15:47
  • Elaine,

     

    Use o método ExecuteScalar neste caso.

     

    int maior = (int)_dataCommand.ExecuteScalar();

    maior++;

    this.CFIDCODIGO.Text = maior.ToString();

     

    Também sugiro que a sua SQL fique assim:

     

    SELECT IIF(IsNull(MAX(CFIDCODIGO)), 0, MAX(CFIDCODIGO)) AS MAIOR FROM [CF-CLIENTE FORNECEDOR]

     

    Ari

    sábado, 8 de dezembro de 2007 15:35
  • Olá,

     

    Mas, onde eu coloco  essa parte do código:

     

    int maior = (int)_dataCommand.ExecuteScalar();

    maior++;

     

    muito obrigada...

    Att.: Elaine

     

     

    segunda-feira, 10 de dezembro de 2007 11:21
  • Elaine,

     

    Segue o seu evento Button_Click novamente:

    Code Block

    protected void Button1_Click(object sender, EventArgs e)

    {

    string _connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\teste\Sag-acess.mdb";

     

    string _query = "SELECT IIF(IsNull(MAX(CFIDCODIGO)), 0, MAX(CFIDCODIGO)) AS MAIOR FROM [CF-CLIENTE FORNECEDOR]";

     

    // cria conexão

    OleDbConnection _dataConn = new OleDbConnection(_connectionString);

     

    // cria comando

    OleDbCommand _dataCommand = new OleDbCommand(_query, _dataConn);

     

    try

    {

    // abre conexão

    _dataConn.Open();

     

    // executa comando

    int maior = (int)_dataCommand.ExecuteScalar();

     

    // incrementa maior valor

    maior++;

     

    // modifica text box

    this.CFIDCODIGO.Text = maior.ToString();

    }

    catch (Exception ex)

    {

    MessageBox.Show(this, ex.Message, this.Text, MessageBoxButtons.OK,

    MessageBoxIcon.Exclamation);

    }

    finally

    {

    if (_dataConn.ConnectionState == ConnectionState.Open)

    _dataConn.Close();

    }

    }

     

     

     

     

    Ari

    quarta-feira, 12 de dezembro de 2007 02:33