DblookupCombobox recebe de DbGrid

Delphi

14/11/2003

Olá!!

Procurei em alguns tópicos daqui e não consegui achar realmente a resposta pra essa dúvida!

Vou explicar realmente o que quero:

meu DblookupCombobox está chamando um valor de uma tabela e gravando em outra (normal).

Só que essa tabela que o Dblookup busca os valores, terá dezenas de valores cadastrados. Então, coloquei um botão ao lado do Dblookup que chama uma Form de pesquisa SQL que mostrará o resultado da pesquisa numa dbgrid. O que quero é que após a conclusão da pesquisa, o usuário pode clicar 2 vezes no valor da DBGrid, e o Dblookup receber esse valor.

Desde já agradeço!!!


Plunky

Plunky

Curtidas 0

Respostas

Rafael_gamba

Rafael_gamba

14/11/2003

Cara não dá pra fazer isso com um DBLookupComboBox. Ele só aceita valores prédefinidos em uma outra tabela.

Use um DBCombobox.

Então, no evento OndblClick do DBGrid escreva o seguinte comando:

Form1.DBComboBox1.Items.Add(Query1campo.value);

quando quiser zerar o comboBox escreva :
DBComboBox1.Items.clear;


Um abraço!!!


GOSTEI 0
Plunky

Plunky

14/11/2003

Mas o DbCombobox vai ler todos os dados contidos na outra tabela?


Cara não dá pra fazer isso com um DBLookupComboBox. Ele só aceita valores prédefinidos em uma outra tabela. Use um DBCombobox. Então, no evento OndblClick do DBGrid escreva o seguinte comando: Form1.DBComboBox1.Items.Add(Query1campo.value); quando quiser zerar o comboBox escreva : DBComboBox1.Items.clear; Um abraço!!!



GOSTEI 0
Oziasl

Oziasl

14/11/2003

porque você na coloca um edit no lugar do dbcombobox, no evento OnExit ou OnEnter cheque por meio de código se é valido ou não se não for de opção para o operador clicar no botao ao lado da edit e com isso abra um panel com uma dbgrid e uma edit para para pesquisa. Quando achado no evento dbclick da grid faça.

edit1.text := IntToStr(query1codigo.value);
edit2.text := query1nome.value;

espero que ajude. Ozias


GOSTEI 0
Rafael_gamba

Rafael_gamba

14/11/2003

É mais fácil do que eu imaginava.

Vamos supor o seguinte :

Tabela e campo a listar :

tabela1Nome

Tabela e campo a receber:

tabela2Nome ou Codigo(tanto faz)

No outro form, ao invés de um dbgrid, coloque um Edit, um dbtext e link o dbtext com a tabela1nome. Então no evento onchange do edit escreva o seguinte código :
Form1.Tabela1.Locate(´Nome´,Edit1.Text,[LoPartialKey]);

Isso acima é uma busca parcial, a cada letradigitada, ele faz nova busca e o resultado aparece no dbtext.

No evento OnKeyDown do edit escreva o seguinte :

If Key = VK_Return then
begin
Form1.Tabela2Nome.value:=Form2.Tabela2Nome.value; (se for para passar o código mude apenas o campo. não faz diferença. O importante é que a tabela1 estará na posição do registro que vc quer)
close;
end;

No código acima, quer dizxer que , assim que vc achar o registro que quer, basta apertar o enter e oproblema estará resolvido.!!!

Fácil né??

Um abrtaço!!!
Se quiser o exemplo pronto, mande um e-mail pra mim que te envio.
mande para rafael@superbolao.com
end;


GOSTEI 0
Plunky

Plunky

14/11/2003

Olá amigo,

O Delphi está apontando um problema em LoPartialKey.
Com a Mensagem:
[Error] UnitModelo.pas(304): Undeclared identifier: ´LoPartialKey´



É mais fácil do que eu imaginava. Vamos supor o seguinte : Tabela e campo a listar : tabela1Nome Tabela e campo a receber: tabela2Nome ou Codigo(tanto faz) No outro form, ao invés de um dbgrid, coloque um Edit, um dbtext e link o dbtext com a tabela1nome. Então no evento onchange do edit escreva o seguinte código : Form1.Tabela1.Locate(´Nome´,Edit1.Text,[LoPartialKey]); Isso acima é uma busca parcial, a cada letradigitada, ele faz nova busca e o resultado aparece no dbtext. No evento OnKeyDown do edit escreva o seguinte : If Key = VK_Return then begin Form1.Tabela2Nome.value:=Form2.Tabela2Nome.value; (se for para passar o código mude apenas o campo. não faz diferença. O importante é que a tabela1 estará na posição do registro que vc quer) close; end; No código acima, quer dizxer que , assim que vc achar o registro que quer, basta apertar o enter e oproblema estará resolvido.!!! Fácil né?? Um abrtaço!!! Se quiser o exemplo pronto, mande um e-mail pra mim que te envio. mande para rafael@superbolao.com end;



GOSTEI 0
Rafael_gamba

Rafael_gamba

14/11/2003

Estão falktando 2 bibliotecas.

Vá na cláusula Uses e acrescente :

Db, DbTables

Agora vai funcionar. Teste e depois me diga.

Um abraço!!!


GOSTEI 0
POSTAR