Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 457005
            [titulo] => Ao adicionar novo registro trazer o código definitivo e não -1, -2...
            [dataCadastro] => DateTime Object
                (
                    [date] => 2013-09-30 09:37:34
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 232232
            [status] => A
            [isExample] => 
            [NomeUsuario] => Joel Rodrigues
            [Apelido] => 
            [Foto] => 232232_20161017163010.jpg
            [Conteudo] => Foram necessárias duas barras por que uma barra sozinha indica um caractere de escape (\n, \w, \T, etc). Quando você coloca duas barras, isso é interpretado como uma barra que deve ser inserida literalmente naquele ponto.
Enfim, que bom que deu certo.
Tópico concluído. ) )

Ao adicionar novo registro trazer o código definitivo e não -1, -2...

Jair Souza
   - 17 set 2013

Olá, tenho um Windowsform para cadastro em um BD Access, no bindingnavigator tem o botão adicionar novo registro, como fazer para trazer o código definitivo do registro e não -1 .
Pois ele só mostra o código definitivo depois de salvar, gostaria que ao clicar em adicionar já mostrasse o código certo da sequencia de cadastro.
Abaixo imagem para melhor entendimento.
http://uploaddeimagens.com.br/imagens/codigo_-1-png

Post mais votado

Joel Rodrigues
   - 30 set 2013

Foram necessárias duas barras por que uma barra sozinha indica um caractere de escape (\n, \w, \T, etc). Quando você coloca duas barras, isso é interpretado como uma barra que deve ser inserida literalmente naquele ponto.
Enfim, que bom que deu certo.
Tópico concluído.

Faabiianooc
   - 17 set 2013

tente colocar max(id) + 1 na consulta que gera esse ID;

Jair Souza
   - 17 set 2013

Como mencionei acima, o botão adicionar é criado automaticamente no BindingNavigator quando arrastei o BD access para dentro do projeto, não foi criado pelo programador, portanto não tenho acesso ao código e se tenho não como acessar...

Jair Souza
   - 18 set 2013

Olá, alguem tem alguma idéia do que fazer...? eu não tenho a mínima direção...

Joel Rodrigues
   - 18 set 2013

Você pode fazer o que o amigo acima indicou, mas não é seguro, pois o autoincremento não necessariamente vai ser o próximo número na sequência (algum registro pode ter sido excluído);
Você precisaria executar um select max(id) e exibir esse valor no campo.

Jair Souza
   - 18 set 2013

Certo, e como se faz ? Podes dar um exemplo ?

Desde já agradeço.

Jair Souza
   - 18 set 2013

Seria assim ?
...ou tem algo errado ?
#Código

Select MAX( F.IDFuncionario )+ 1 
From Funcionario F
Where (F.IDFuncionario) = textboxIdFuncionario

Joel Rodrigues
   - 18 set 2013

Rapaz, você tem que saber executar instruções SQL usando ADO. Acho que no seu caso você vai usar OleDb.
Pesquise sobre como fazer isso.

Jair Souza
   - 25 set 2013

Olá, depois de algumas pesquisas e adaptações cheguei neste código, mas não funciona que dever estar errado ?

#Código

public static string pCodigo(string IDCodigo, string Funcionario)
{
//String de Conexão do Banco de Dados

String Conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & " bDBiblioteca2DataSet.mdb");

//Faz uma Consulta no Banco, Para Ver o Próximo Código

String query = ("SELECT MAX(" + IDCodigo + "+1") From + Funcionario, Conexao")

//TextBox Código Recebe o Próximo Código
string Resultado = Comando.ExecuteScalar().ToString();


//Caso o Resultado Seja Nulo Ou seja, é o Primeiro Código
if (Resultado != "")
{
return Resultado;
}
else
{
return "1";
}
}

Joel Rodrigues
   - 25 set 2013

Deve dar um erro na string de conexão, quando você usa o &. O correto seria concatenar as strings usando o sinal de adição (+).

Jair Souza
   - 25 set 2013

Fiz alguns ajustesm até sumir a maioria dos sublinhados em vermelho, mas ficou dois que não consegui...se puderes verificar todo código, pois não sei mais o que fazer....
abaixo a imagem do código.

Desde já agradeço pela paciência...

http://uploaddeimagens.com.br/imagens/select_max_id-png

Joel Rodrigues
   - 26 set 2013

O primeiro erro é a String que está escrita errada. As aspas devem envolver toda a String.
O segundo erro é a falta dos parênteses no método ExecuteScalar().

Jair Souza
   - 26 set 2013

Olá, não está fácil...parece estar tudo certo, mas o ExecuteScalar não tem jeito, se puder quebra mais essa.

http://uploaddeimagens.com.br/imagens/executescalar-png

Joel Rodrigues
   - 26 set 2013

Nossa, cara. ExecuteScalar é um método do SqlCommand e você está chamando a partir de uma String. Se você olhar a mensagem de erro, vai entender, pois lá deve dizer que o método não existe.

Joel Rodrigues
   - 26 set 2013

Repare que você não tem nenhum objeto de conexão com o banco, só tem strings. Logo, nunca vai selecionar nada. Falta ai, por exemplo, uma SqlConnection e um SqlCommand.
Infelizmente não estou no PC agora, mas amanhã eu faço um exemplo pra você, pois pelo jeito está difícil mesmo.

Jair Souza
   - 28 set 2013

Montei o metodo...mas está dando erro do nome do bd, veja a imagem :

http://uploaddeimagens.com.br/imagens/max_id___1-png

Joel Rodrigues
   - 28 set 2013

A mensagem é bem clara: o arquivo não está sendo encontrado. Você colocou o MDB junto do EXE? Se não, coloque, afinal, foi isso que você disse que fez na connection string,

Jair Souza
   - 29 set 2013

...Mas isto é o que eu não entendo o mdb sempre esteve e está na pasta bin DEbug junto com o executável.

http://uploaddeimagens.com.br/imagens/bd-png--4

Joel Rodrigues
   - 29 set 2013

Ah, se você olhar a mensagem com cuidado verá que o nome da pasta Debug está colado no nome do arquivo. Ponha uma barra antes do nome do arquivo.

Jair Souza
   - 30 set 2013

Uma barra não resolveu..., teve de ser duas barras e finalmente funcionou, muito muito obrigado, ficou assim : "\\BDBiblioteca2.mdb"

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.Data.OleDb;

namespace SistemaBibliotecario
{
public partial class FrmFuncionario : Form
{
public FrmFuncionario()
{
InitializeComponent();

}
public static string iDFuncionario { get; set; }

public string Funcionario { get; set; }

public static string CodigoFunc(string iDFuncionario, string Funcionario)
{
//String de Conexão do Banco de Dados
OleDbConnection Conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca2.mdb");

//Abre a Conexão
Conexao.Open();

//Faz uma Consulta no Banco, Para Ver o Próximo Código
OleDbCommand Comando = new OleDbCommand("SELECT MAX(IDFuncionario)+1 From Funcionario", Conexao);

//TextBox Código Recebe o Próximo Código
string Resultado = Comando.ExecuteScalar().ToString();

//Fecha a Conexão
Conexao.Close();

//Caso o Resultado Seja Nulo Ou seja, é o Primeiro Código
if (Resultado != "")
{
return Resultado;
}
else
{
return "1";
}
}

...E o código no botão assim :

private void BtnAdicionar_Click(object sender, EventArgs e)
{
iDFuncionarioTextBox.Text = CodigoFunc(iDFuncionario, Funcionario);
}

Joel Rodrigues
   - 30 set 2013

Foram necessárias duas barras por que uma barra sozinha indica um caractere de escape (\n, \w, \T, etc). Quando você coloca duas barras, isso é interpretado como uma barra que deve ser inserida literalmente naquele ponto.
Enfim, que bom que deu certo.
Tópico concluído.