Pegar Ultimo Numero De Registro
#1
Posted 21/04/2011, 01:29
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
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
Posted 23/11/2011, 11:21
0 user(s) are reading this topic
0 membro(s), 0 visitante(s) e 0 membros anônimo(s)