Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Junior.just.it

[Resolvido] Setar valor Query para Edit

Recommended Posts

Primeiramente estou usando RAD Sudio 2007 com MS SQL SVR 2005

 

estou fazendo um programa de ativos, as tabelas que interessa são.

 

TABLE TIPO_ATIVO

COD_TIPOATIVO

NOME_ATIVO

SIGLA_ATIVO

 

TABLE ATIVOS

COD_ATIVO

NOME_ATIVO (LOOKUPCOMBOBOX DO NOME_ATIVO DA TABELA ANTERIOR)

DEPARTAMENTO (LOOKUPCOMBOBOX DA TABELA DEPARTAMENTO)

CODIGO_ATIVO (QUE IRÁ PEGAR O VALOR DOS DADOS ANTERIORES)

 

Então, os campos códigos chaves são todos automáticos pelo banco de dados, e o que quero fazer é o seguinte.

 

Quando o usuário der um append e selecionar por exemplo o NOME_ATIVO Monitor e o DEPARTAMENTO TI e apertar o botão gravar, antes do post ou no onKeyDown do LookupCombobox fosse setado a sigla do NOME_ATIVO, seguido da sigla do DEPARTAMENTO e após isso o COD_ATIVO para o campo CODIGO_ATIVO montando o código da plaqueta que identifica o ativo, vai ficar +/- assim (MON-TI00001) é um monitor com sigla MON seguido do departamento de Tecnologia da Informação com sigla TI e seguido pelo primeiro código da TABLE ATIVOS, os zeros e o traço faço uma mascara.

 

alguém pode me ajudar?

 

Valeu aí gente!

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o evento OnChange do campo COD_ATIVO e COD_DEPARTAMENTO, sendo neste você verifica se a tabela esta em estado de inserção ou edição, e então seta o campo desejado, e pega a sigla via lookup também...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o evento OnChange do campo COD_ATIVO e COD_DEPARTAMENTO, sendo neste você verifica se a tabela esta em estado de inserção ou edição, e então seta o campo desejado, e pega a sigla via lookup também...

Então amigo, valeu pela resposta, clareou as ideias aqui, mas é assim, eu tenho aqueles campos lookup e se eu seleciono o Monitor no caso, na tabela é gravado o código do monitor, que é a chave q ele está ligada, o problema é que eu não sei a estrutura de comparação, pra ele setar a sigla de acordo com o código que está selecionado, do tipo, se tiver escolhido o monitor, pega a sigla do codigo do monitor e seta pro dbedit do códigoplaqueta, se puder me ajudar, muito obrigado!

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria na tabela de Departamento um campo de sigla, onde permite ao usuário informar a sigla para o departamento em questão, depois você cria mais um campo do tipo lookup para este novo campo de sigla, depois no OnChange faz:

if (tabela.State in [dsInsert,dsEdit] then
	tabelaCAMPO.Value:=tabelaCampoLookupSiglaDepartamento.Value + '-' + tabelaCampoLookupSiglaAtivo.Value + FormatFloat('00000',tabelaCampoCodigo.Value);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria na tabela de Departamento um campo de sigla, onde permite ao usuário informar a sigla para o departamento em questão, depois você cria mais um campo do tipo lookup para este novo campo de sigla, depois no OnChange faz:

if (tabela.State in [dsInsert,dsEdit] then
	tabelaCAMPO.Value:=tabelaCampoLookupSiglaDepartamento.Value + '-' + tabelaCampoLookupSiglaAtivo.Value + FormatFloat('00000',tabelaCampoCodigo.Value);

Deu certo aqui, algumas adaptações e alguns "arranjos técnicos", diz-se gambiarras, no mais ficou ótimo valeu aí, c é o cara.

 

procedure TFAtivos.ACT_SalvarExecute(Sender: TObject);
var x: integer;
begin
  inherited;
	//Habilita / Desabilita botões
  SPBADD.Enabled:=True;
  SPBDELETE.Enabled:=True;
  SPBEDIT.Enabled:=True;
  SPBSAVE.Enabled:=False;
  SPBCANCEL.Enabled:=False;
  SPBREFRESH.Enabled:=True;
  SPBFIRST.Enabled:=True;
  SPBPRIOR.Enabled:=True;
  SPBNEXT.Enabled:=True;
  SPBLAST.Enabled:=True;
  SPBEXIT.Enabled:=True;

  DM.ADOQAtivos.Post;

  DM.ADOQTipoAtivo.Edit;
  DM.ADOQDepartamento.Edit;
  DM.ADOQAtivos.Edit;

  x:=DM.ADOQAtivosCOD_ATIVO.Value;
  IntToStr(x);

  if DM.ADOQTipoAtivo.State in [dsEdit, dsInsert] then
	 DM.ADOQAtivosCODIGO_ATIVO.Value:=DM.ADOQTipoAtivoSIGLA_ATIVO.Value + '-' +
	 DM.ADOQDepartamentoSIGLA_DPTO.Value + FormatFloat('00000', x);

  DM.ADOQAtivos.Post;
  FAtivos.LCBNOMEATIVO.Refresh;
  Panel1.Enabled:=False;

end;

ta aí o código, coloquei no botão salvar (post), ficou ótimo.

 

como faz pra colocar q o tópico foi resolvido?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.