Jump to content


Photo

Pegar Ultimo Numero De Registro


  • Faça o login para participar
2 replies to this topic

#1 RevolutionsWars

RevolutionsWars

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Masculino

Posted 21/04/2011, 01:29

OLA BOA NOITE ESTOU FAZENDO UM CADASTRO DE CLIENTE ...
ESTOU COM BD EM FIREBIRD, BOM TENHO UM CADASTRO DE CLIENTE, E QUERIA QUE ASSIM QUE EU FOSSE CADASTRAR O PROXIMO CLIENTE O PROGRAMA GERASSE O PROXIMO CODIGO E ASSIM POR DIANTE..
MEU CODIGO ESTA AQUI..
MINHA CONEXAO ESTA OK..
string str = " ";
string s =
"User=SYSDBA;Password=masterkey;Database=D:\\prog\\prog.GDB;DataSource=localhost;Port=3050;Dialect=3;Charset=NONE;Role=;Connection lifetime=0;Connection timeout=15;Pooling=True;PacketSize=8192;Server Type=0";
conn = new FbConnection(s);
cmd = new FbCommand();
cmd.CommandText = " select max(CODIGO) from cliente ";
vcodigo = vcodigo + 1;
FbParameter[] prm = new FbParameter[2];
prm[0] = new FbParameter("@CODIGO", vcodigo );
prm[1] = new FbParameter("@NOME", txtnome.Text);
str = "insert into cliente (CODIGO,NOME) values (@CODIGO,@NOME)";

foreach (FbParameter p in prm)
{
cmd.Parameters.Add(p);
}
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = str.ToString();
cmd.CommandText = vcodigo.ToString();
cmd.ExecuteNonQuery();


}
finally
{
if ((cmd != null))
{
cmd.Dispose();
}
if (conn.State != ConnectionState.Closed)
{
conn.Close();
conn.Dispose();
}
}
MANDO EXECUTAR E DA ERRO NO cmd.ExecuteNonQuery QUE DIZ>>Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 1

OBS:
SE EU TIRAR cmd.CommandText = vcodigo.ToString(); ELE ME DA OUTRO ERRO TBEM NO cmd.ExecuteNonQuery(); E A MENSAGEM> violation of PRIMARY or UNIQUE KEY constraint "PK_CLIENTE" on table "CLIENTE"
ALGUEM PODE ME AJUDAR..
MUITO GRATO..

#2 geovarela

geovarela

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Masculino
  • Localidade:Brasília

Posted 23/11/2011, 09:53

OLA BOA NOITE ESTOU FAZENDO UM CADASTRO DE CLIENTE ...
ESTOU COM BD EM FIREBIRD, BOM TENHO UM CADASTRO DE CLIENTE, E QUERIA QUE ASSIM QUE EU FOSSE CADASTRAR O PROXIMO CLIENTE O PROGRAMA GERASSE O PROXIMO CODIGO E ASSIM POR DIANTE..
MEU CODIGO ESTA AQUI..
MINHA CONEXAO ESTA OK..
string str = " ";
string s =
"User=SYSDBA;Password=masterkey;Database=D:\\prog\\prog.GDB;DataSource=localhost;Port=3050;Dialect=3;Charset=NONE;Role=;Connection lifetime=0;Connection timeout=15;Pooling=True;PacketSize=8192;Server Type=0";
conn = new FbConnection(s);
cmd = new FbCommand();
cmd.CommandText = " select max(CODIGO) from cliente ";
vcodigo = vcodigo + 1;
FbParameter[] prm = new FbParameter[2];
prm[0] = new FbParameter("@CODIGO", vcodigo );
prm[1] = new FbParameter("@NOME", txtnome.Text);
str = "insert into cliente (CODIGO,NOME) values (@CODIGO,@NOME)";

foreach (FbParameter p in prm)
{
cmd.Parameters.Add(p);
}
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = str.ToString();
cmd.CommandText = vcodigo.ToString();
cmd.ExecuteNonQuery();


}
finally
{
if ((cmd != null))
{
cmd.Dispose();
}
if (conn.State != ConnectionState.Closed)
{
conn.Close();
conn.Dispose();
}
}
MANDO EXECUTAR E DA ERRO NO cmd.ExecuteNonQuery QUE DIZ>>Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 1

OBS:
SE EU TIRAR cmd.CommandText = vcodigo.ToString(); ELE ME DA OUTRO ERRO TBEM NO cmd.ExecuteNonQuery(); E A MENSAGEM> violation of PRIMARY or UNIQUE KEY constraint "PK_CLIENTE" on table "CLIENTE"
ALGUEM PODE ME AJUDAR..
MUITO GRATO..



***********************

Cara, é o seguinte: Eu uso uma ferramenta chamada IBExpert para gerenciar meus bancos Firebird. Dentro dele você vai no menu principal em "Tools", "SQL Editor" e dá o seguinte comando: create sequence FILHOS; (onde "FILHOS" é o nome da sua tabela). Após digitar o comando clique o botão "execute" para que a sentença seja executada. Agora abra a tabela e com dois clique no campo onde você que coloca o auto-incremento e na aba "Autoincremet" marque a opção "Use existing generator" e selecione o sequence que você acabou de criar. Logo após vá para a aba "Procedure" e marque "Create procedure". Depois é só clicar em OK e confirmar na próxima tela. Pronto. Seu campo autoincremento está criado. Dentro do aplicativo caso você queira obter o número da sequência antes de terminar o cadastro você terá a opção de criar uma função para obter esse número. Todo esse procedimento pode ser feito via linha de código no firebird mas pra que complicar se temos uma ferramenta superprática como o IBExpert. Qualquer dúvida em contato. Um abraço.

Attached Files



#3 Maria Nogueira

Maria Nogueira

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Feminino
  • Localidade:Porto Alegre

Posted 23/11/2011, 11:21

eu também uso o IBExpert




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq