como capturar o id no momento do insert

11/05/2009

Ola amigos consultores estou enviando essa video demonstando uma falta de conhecimento da minha parte. Seria possivel tambem voces me comentar qual a maneira correta de se fazer isso ? qual componente usar ? Se voces colocarem um showmessage (esse é o id ); ta bom demais o resto eu me viro ; na seguinte condicao proc_tal cadastra showmessage (esse é o id_bairro) ; espero ter sido claro

[#VIDEO-110#]
Carlos Faria

Carlos Faria

Curtidas 0

Respostas

Rodrigo Mourão

Rodrigo Mourão

11/05/2009

Carlos nesse caso é  muito complicado. Temos código que são gerados no banco como é o caso do auto incremento.
Eu utilizo uma tecnica que e gerar o codigo antes da inclusão. Eu vou ao banco, pego o ID e ai gero a registro.

Vou lhe enviar um link onde mostro isso numa vídeo aula.

https://www.devmedia.com.br/articles/viewcomp.asp?comp=11275

CASO NÃO TENHA ACESSO A VÍDEO ENTRE EM CONTATO ATRAVÉS DE UM POST QUE LIBERAREMOS A MESMA.

Abs !!!
GOSTEI 0
Carlos Faria

Carlos Faria

11/05/2009

Talves eu nao tenha me expressado bem , afinal cada caso é um caso eu assisti sua video aula como todas muito boa vc é um grande profissional , mas ao meu ponto de vista nao ha a necessidade de fazer todas aquelas rotinas pois aqui minha situacao e totalmente diferente e vendo a video aula vc vai ver que e bastante simples esse negocio ? Me fale sobre essa queri que eu fiz no projeto dando um insert na tabela atraves da proc e capturando o id Quero sua opiniao sincera ? abs

[#VIDEO-111#]
GOSTEI 0
Carlos Faria

Carlos Faria

11/05/2009

Acho que de hoje em diante eu vou postar aqui minhas respostas ai no servidor da dev ta muito dificil demora muito e nao cadastra   http://www.4shared.com/file/104848914/fa1152d5/respostaRodrigoIdNoMomentoInsert.html
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

11/05/2009

Olá Carlos !!

Quando disse a você ser complicado não falei no sentido de ser dificil e sim insuficiente. Voce esta numa  aplicacao relativemente pequena e voce nao utiliza master datail com data set field e nao tem grandes concorrencia, ou seja, 50 pessoas gravando ao mesmo tempo na mesma tabela.

A tecnica indicada na vídeo e justamente para suprir estas necessidades. Mas enfim, vamos ao retorno.

Sua storeproc não traz o retor pois sua procedure dentro do SqlServer não tem parametro de retorno. Você tem que criar sua procedure pedindo os parametros para gravar e mais um parametro de retono. Ex:

proc_cad_bairro(
 @pBairro varchar(100),
 @pPonto varchar(100),
 @ID int OUTPUT

)
as
   Insert into Bairro (bairro, ponto) values (@pBairro, @pPonto)
   select @SOMA=@@identity


Agora na no componete Stored Proc vai aparecer mais um parâmetro que você poderá pegar apos chamar o ExecProc.

Estou às Ordens !!

Abs !!!


GOSTEI 0
Devmedia

Devmedia

11/05/2009

Carlos,
em que vc está com duvidas para postar o video?
Recomendo q veja o video "como publicar chamados com video", que se encontra ao lado da opção "MEUS VIDEOS" na home da consultoria.
GOSTEI 0
Carlos Faria

Carlos Faria

11/05/2009

Como te disse no site da devmedia ta demorando demais para enviar por isso postei pelo shared
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

11/05/2009

Carlos o exemplo que te passei abaixo foi suficiente ?   Estamos aguardando para encerrar o chamado !!!   Abs !!!     Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Carlos Faria

Carlos Faria

11/05/2009

Nao funcionou no sql ele nao aceitou a rotina dessa maneira fica pedindo o parametro @soma
GOSTEI 0
Carlos Faria

Carlos Faria

11/05/2009

eu estou online , se vc quizer agente mata todos esses chamados hoje ainda
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

11/05/2009

Eu errei ao digitar. O correto é : proc_cad_bairro(
 @pBairro varchar(100),
 @pPonto varchar(100),
 @ID int OUTPUT

)
as
   Insert into Bairro (bairro, ponto) values (@pBairro, @pPonto)
   select @ID=@@identity Abs !!! Abs !!

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi

 
GOSTEI 0
Carlos Faria

Carlos Faria

11/05/2009

Isso eu tinha entendid/o e fiz exatamente assim o problema e que o campo id e auto incremento entao como ficaria a proc sem inserir o id  , so falta isso para matar de vez
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

11/05/2009

Carlos o parametro ID foi apenas coincidencia. Preste atencao, o parametro ID e de saida. Voce nao precisa passar valor pra ele.  Você testou a procedure ???       Ela pode ser assim :   Eu errei ao digitar. O correto é : proc_cad_bairro(
 @pBairro varchar(100),
 @pPonto varchar(100),
 @MeuCodigoRetornao int OUTPUT

)
as
   Insert into Bairro (bairro, ponto) values (@pBairro, @pPonto)
   select @MeuCodigoRetornao =@@identity     No delphi voce vai passar apenas dois parâmetros, o terceiro e de retorno. Voce vai pegar o ID gerado no banco !!    Abs !!!
GOSTEI 0
Carlos Faria

Carlos Faria

11/05/2009

eu testei dando um insert no proprio sql server vou tentar no delphi agora e ja respondo
GOSTEI 0
Carlos Faria

Carlos Faria

11/05/2009

Fecha o chamado mestre o que aconteceu aqui é que pelo delphi insere e captura o id_corretamente pelo sql server da erro , vc nao falou nada   Msg 201, Level 16, State 4, Procedure proc_cad_bairro10, Line 0 Procedure or Function 'proc_cad_bairro10' expects parameter '@MeuCodigoRetornao', which was not supplied.   Mais como te disse no delhi ta funcionando valeu Rodrigo vou abrir mais uns 10 chamados essa semana tudo em video rs
GOSTEI 0
Carlos Faria

Carlos Faria

11/05/2009

Rodrigo me diz uma coisa sera que eu posso abrir um chamado na sala dot net sendo assinate do pacote delphi , eu tava querendo aprender aqueles fectores e atalhos que vc me enviou lembra ?
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

11/05/2009

Vou perguntar ao pessoal da ADM !!

Abs!!
GOSTEI 0
Devmedia

Devmedia

11/05/2009

Carlos,
não será possível vc abrir chamados na sala de .net pq a sua consultoria é somente para delphi. Se desejar aprender .net, basta entrar em contato com nosso atendimento e compre a consultoria.
Vale lembrar que os chamados de um não valem para o outro.
GOSTEI 0
POSTAR