Usuário com melhor resposta
Dúvida com C#...Access...

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]";_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
Respostas
-
Elaine,
Segue o seu evento Button_Click novamente:
Code Blockprotected 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
{
_dataConn.Open();
// incrementa maior valor
maior++;
}
catch (Exception ex)
{
MessageBox.Show(this, ex.Message, this.Text, MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
finally
{
_dataConn.Close();
}
}
Ari
Todas as Respostas
-
-
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
-
-
Elaine,
Segue o seu evento Button_Click novamente:
Code Blockprotected 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
{
_dataConn.Open();
// incrementa maior valor
maior++;
}
catch (Exception ex)
{
MessageBox.Show(this, ex.Message, this.Text, MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
finally
{
_dataConn.Close();
}
}
Ari