Obter codigo do Funcionario/Cliente e inserir

SQL Server

Delphi

21/10/2016

Eu gostaria de inserir na minha tabela TELEFONES o codigo do FUNCIONARIO que for cadastrado, ou o codigo do CLIENTE quando fosse cadastrado, eu ate tentei criar duas trigger, ambas em ON TELEFONES mas ai e um problema, porque quando eu vou inserir no CLIENTE, eu tambem coloquei pra inserir o TELEFONE na tabela TELEFONES e junto com ela, obter o codigo do novo CLIENTE e gravando os mesmos na tabela TELEFONES..
As trigger estao assim

para inserir o codigo e o telefone do cliente
create trigger obterCodClienteTelefone on TELEFONES
after insert
as
begin
	DECLARE @codCliente                  int,
		       @numero		varchar(30)
	
	set @codCliente = ( select top 1 codCliente FROM CLIENTES order by codCliente desc )
	select @numero = numeroTel from inserted
	update TELEFONES set codCliente=@codCliente where numeroTel = @numero		
end


e para inserir o codigo do funcionario e o telefone
create trigger obterCodFuncTelefone on TELEFONES
after insert
as
begin
	DECLARE @codFunc                  int,
		       @numero		varchar(30)
	
	set @codFunc = ( select top 1 codFunc FROM FUNCIONARIOS order by codFunc desc )
	select @numero = numeroTel from inserted
	update TELEFONES set codFunc=@codFunc where numeroTel = @numero		
end


Pois e, isso e um problema porque quando inserir o FUNCIONARIO, o codigo do cliente vem junto... alguem pode me ajudar em uma logica pra isso ?
Leandro

Leandro

Curtidas 0

Respostas

Luiz Freitas

Luiz Freitas

21/10/2016

Boa noite Leandro, tudo bem?

Você não precisa criar trigger's pra fazer o que você precisa ai, dá uma olhada na vídeo aula do Alan Glei, no blog dele:
http://alan-gomes.blogspot.com.br/2013/04/firedac-cadastro-mestredetalhe.html


Ele mostra como trabalhar com relação mestre detalhe... o exemplo é com duas tabelas, mas poderiam ser várias, o princípio é o mesmo; o único detalhe é que a vídeo aula foi gravada utilizando a versão XE3 do Delphi, e nessa versão os componentes do FireDAC ainda se chamavam, por exemplo, a query era TADQuery, ou seja, o prefixo das classes ainda era AD, nas versões mais recentes, a query por exemplo se chama TFDQuery, o prefixo agora é FD.

Qualquer dúvida entra em contato...
t++
GOSTEI 0
Luiz Freitas

Luiz Freitas

21/10/2016

deu um bug aqui e o endereço do vídeo não saiu no post original... então segue:

http://alan-gomes.blogspot.com.br/2013/04/firedac-cadastro-mestredetalhe.html
GOSTEI 0
Leandro

Leandro

21/10/2016

Nao da pra fazer sem ter que usar o TFDQuery ?
Meu sistema esta todo constituido por TADOQuery's e nao ficaria muito compreensivel se eu mesclasse
GOSTEI 0
Luiz Freitas

Luiz Freitas

21/10/2016

Leandro,

Dei uma olhada e não encontrei (não quero dizer que não existe, somente que eu não encontrei) nada parecido utilizando TADOQuery, mas com TADOTable sim..

https://www.youtube.com/watch?v=8Y4OcM1eq1Q

Uma pergunta... você está dando manutenção em um sistema já existente? Porque os componentes da paleta FireDAC são muito mais poderosos que os da paleta ADO... te dão muito mais opções e recursos.

De qualquer forma, dá uma olhada no vídeo, talvez te ajude.
GOSTEI 0
POSTAR