Retornat valor apos Insert

21/08/2012

0

Olá sou novo na area e a orientacao a objeto ainda nao ta fluindo bem
entao segue, tenho as seguintes classes
****ENsetores
private _codigo;
private _nome;
public codigo
{ get{return _codigo;}
set{_codigo = value;}
}
public nome
{ get{return _nome;}
set{_nome = value;}
}

****DBsetores
public static void Insert(Ensetores setores)
{
String sSql = "";
sSql = "Insert into setores (set_nome) values (" + setores.nome + ");
if (setores.nome != null && setores.nome !="")
{
conexapo.open();
NpgsqlCommand commando = new NpgsqlCommand(sSql, conexao.getconecao());
commando.ExecuteNomQuery();
conexao.close();
}

*****RNsetores
public void Insert(ENsetores setores)
{
controle_estoque.classeDB.DBsetores.Insert(setores);
}

****codigo do form botao gravar
private void btngravar_Click(object sender, EventArgs e)
{
Ensetores cSetores = new ENsetores();
switch (sOpcao)
{
case "I": // opcao inserir
classeRN.RNsetores.Insert(cSetores);
break;

case "A" // opcao alterar
classeRN.RNsetores.Update(cSetores);
break;
}
Minha duvida
Isso tudo esta funcionando perfeitamente ate momento
Ocorre que no form eu tenho um txtcodigo
e quero carregar o numero do novo registro inserido set_codigo
pelo postgree (banco utilizado) eu fiz
select into setores (set_nome) value (TESTE), SELECT CURRVAL (SETORES_SET_CODIGO_SEQ)
e me retorna o SET_CODIGO do ultimo inserido da sessao

Pergunto
pra capturar isso e jogar no meu form que ainda nao sei como
se alguyem puder ajudar agradeço

Jorge Meneses
Jorge Meneses

Jorge Meneses

Responder

Posts

21/08/2012

Renato Groffe

Jorge,


Não conheço muito bem o Postgre, mas acredito que você poderia fazer o seguinte:
1) Criar uma stored procedure que faz o INSERT e que devolve o valor desse novo registro.
2) Executar a stored procedure via código C# e, a partir do Id que foi gerado, alterar o objeto que você passou como parâmetro, resolvendo assim sua necessidade.

Essa é apenas uma idéia. Normalmente faço isso quando utilizo outros bancos como Sql Server e Firebird.

Espero que isso possa clarear alguma coisa.


Renato
Responder

22/08/2012

Jorge Meneses

Obrigado, mas ja solucionei

****DBsetores
public static void Insert(Ensetores setores)
{
String sSql = "";
sSql = "Insert into setores (set_nome) values (" + setores.nome + ");selecr currval ('setores_set_codigo_seq')";
if (setores.nome != null && setores.nome !="")
{
conexapo.open();
NpgsqlCommand commando = new NpgsqlCommand(sSql, conexao.getconecao());
setores.codigo = Convert.ToInt32(commando.executeScalar());

conexao.close();
}


**** e no form
txtcodigo.text = Convert.ToString(setores.codigo);
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar