INSERIR DADOS E RETORNA ID EXIBINDO-A NO LABELTEXT

MAXIVANE 12/03/2014 00:47:56
#435883
Ola Amigos, preciso de ajuda
Apos inserir dados no mysql eu preciso que ele me retorne a ID que ele gerou e mostre em uma label text. como faço???
veja meu codigo:
Try
ComandoMYSQL = New MySql.Data.MySqlClient.MySqlCommand([Ô]INSERT INTO cf SET VENDEDOR = @Vendedor, DATA = @Data, HORA = @hora; SELECT LAST_INSERT_ID(CUPOM) FROM cf INTO @CUPOM[Ô], ConexaoMYSQL)


With ComandoMYSQL
.Parameters.AddWithValue([Ô]@Vendedor[Ô], [Ô]Joyce[Ô])
.Parameters.AddWithValue([Ô]@Data[Ô], Today)
.Parameters.AddWithValue([Ô]@Hora[Ô], TimeString)
End With
ComandoMYSQL.ExecuteNonQuery()
ComandoMYSQL.Dispose()
MsgBox([Ô]Cadastrado[Ô])

Catch ex As Exception
MsgBox([Ô]Nao cadastrado[Ô])
Me.Close()
End Try
TUNUSAT 12/03/2014 08:39:21
#435887
MAXIVANE,

O [Ô].ExecuteNonQuery()[Ô] não vai te retornar o ID. Veja em:

--------------------------------------------------------------------------------
http://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcommand.executenonquery(v=vs.110).aspx

Comentários
--------------------------------------------------------------------------------

Você pode usar o ExecuteNonQuery para executar operações de catálogo (por exemplo, consultar a estrutura de um banco de dados ou criar objetos de banco de dados como tabelas), ou para alterar os dados em um banco de dados sem usar um DataSet, executando instruções UPDATE, INSERT ou DELETE.

Embora o ExecuteNonQuery não retorne nenhuma linha, todos os parâmetros de saída ou valores retornados mapeados para parâmetros, são preenchidos com dados.

Para as instruções UPDATE, INSERT e DELETE, o valor de retorno é o número de linhas afetadas pelo comando.Quando uma trigger existe em uma tabela que está sendo inserida ou atualizada, o valor de retorno inclui o número de linhas afetadas pela operação de inserção ou atualização e o número de linhas afetadas pela(s) trigger(s).Para todos os outros tipos de instruções, o valor de retorno é -1.Se um ocorrer um rollback, o valor de retorno também é -1.
--------------------------------------------------------------------------------

Mas ... Se você colocar dentro da sua [Ô]Stored Procedure[Ô] um parâmetro de retorno e definir no seu código fonte VB.Net o recebimento deste parâmetro de [Ô]output[Ô]. Lá na Stored procedure, crie uma área [Ô]Transaction[Ô] e se a operação for bem sucedida, retorne um [Ô]Select ID From... Where (parâmetros que distinguem seu registro)[Ô] gravando na variável de retorno o ID que foi gravado.


[][ô]s,
Tunusat.
MAXIVANE 12/03/2014 11:14:17
#435897
TUNUSAT, me mande um código de exemplo??
Sou novato na Área de vb.net.....
TUNUSAT 12/03/2014 11:48:47
#435903
MAXIVANE,


Posso fazer, mas não manjo muito de [Ô]MySQL[Ô]...
Dá uma lida neste artigo:


Stored Procedures no MySQL
http://imasters.com.br/artigo/7556/mysql/stored-procedures-no-mysql/


Por exemplo do site acima:


DELIMITER //
CREATE PROCEDURE mySp_correntistaInsert(v_nome VARCHAR(60), v_cpf VARCHAR(20))
BEGIN
IF ((v_nome != [ô][ô]) && (v_cpf != [ô][ô])) THEN
INSERT INTO tbl_correntista (correntista_nome, correntista_cpf)
VALUES (v_nome, v_cpf);
ELSE
SELECT [ô]NOME e CPF devem ser fornecidos para o cadastro![ô] AS Msg;
END IF;
END;
//


Vamos supor que a query: [Ô]INSERT INTO tbl_correntista (correntista_nome, correntista_cpf)[Ô] tenha um [Ô]autonumber[Ô] ou [Ô]identity[Ô] que grava um [Ô]ID[Ô] automaticamente.

Logo após o [Ô]INSERT[Ô] criar um [Ô]SELECT ID FROM tbl_correntista WHERE correntista_nome = v_nome AND correntista_cpf = v_cpf[Ô].
O ID retornado será um parâmetro [Ô]OUT[Ô].

Os tipos de parâmetros:

====================================

tipo_param: existem 3 tipos de parâmetros em uma Stored Procedure no MySQL:

- IN => este é um parâmetro de entrada, ou seja, um parâmetro cujo seu valor será utilizado no interior do procedimento para produzir algum resultado;
- OUT => esté parâmetro retorna algo de dentro do procedimento para o lado externo, colocando os valores manipulados disponíveis na memória ou no conjunto de resultados;
- INOUT => faz os dois trabalhos ao mesmo tempo!

====================================

No seu código tem:

   
.Parameters.AddWithValue([Ô]@Hora[Ô], TimeString)


Monta um +/- assim:

   
.Parameters.AddWithValue([Ô]?ID[Ô], strTeste.Text)




OPA! Já tá a resposta aqui!

http://social.msdn.microsoft.com/Forums/pt-BR/c27b61a3-3933-4db9-a3a1-8c2c3e3625f0/me-ajudem-retornar-id-aps-inserir-dados-no-mysql-e-exibir-o-id-num-label-text-visual-basic?forum=vsvbasicpt


Veja também:
http://www.daniweb.com/software-development/vbnet/threads/249935/how-to-get-last-insert-id-vb-mysql


[][ô]s,
Tunusat.
MAXIVANE 12/03/2014 12:45:19
#435906
TUNUSAT, Obrigado pela sua resposta.. aquele pedido no site da microsoft é meu tbm rsrs, nem tinha visto que alguem respondeu...
A mudança que ele me informou deu certo, porém como deixei la escrito, abaixo e tenho um datagridview, e apos as mudanças o programa trava e nao mostra nada no gridview...

vou tentar a sua dica tbm.. Obrigado pela ajuda...
abraços
Tópico encerrado , respostas não são mais permitidas