Array
(
)

Retornat valor apos Insert

Jorge Meneses
   - 21 ago 2012

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

Renato_groffe
|
MVP
    21 ago 2012

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

Jorge Meneses
   - 22 ago 2012

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);