DblookupCombobox recebe de DbGrid
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!!!
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
Curtidas 0
Respostas
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!!!
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
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
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
edit1.text := IntToStr(query1codigo.value);
edit2.text := query1nome.value;
espero que ajude. Ozias
GOSTEI 0
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;
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
14/11/2003
Olá amigo,
O Delphi está apontando um problema em LoPartialKey.
Com a Mensagem:
[Error] UnitModelo.pas(304): Undeclared identifier: ´LoPartialKey´
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
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!!!
Vá na cláusula Uses e acrescente :
Db, DbTables
Agora vai funcionar. Teste e depois me diga.
Um abraço!!!
GOSTEI 0