2 Coluna no TCombobox
Pesoal é o seguinte eu estou fazendo uma pesquiza em um Combobox ele carrega filé so q tenho um problema quendo eu vou carregar a as duas colunas ele carrela as duas colunas mas quando vou selecionar ele mostra os dois itens na seleceçao mas ele so pode aparecer p primeiro item para a consulta o segundo é so uma visualização estou fazendo dessa forma...
//////////////////////////////// begin Close; SQL.Text := ´SELECT NUMERO_DOC,TIPO_MOV FROM MOVIMENTO´ +#13+ ´WHERE (´ +13+´ (MOVIMENTO.TIPO_MOV = ´+IntToStr(i_Compra_Venda)+´)´ +13+´ )´; Open; if not IsEmpty then while not Eof do begin cb_numero_doc.Items.Add(Fields[0].AsString+´ - ´+Fields[1].AsString); Next; end; Close; end; ////////////////////////////////////////
Tchucky
Curtidas 0
Respostas
Danielrsanches
01/08/2009
neste caso, vc poderia fazer um tratamento da string para retirar apenas o que te interessa para fazer a pesquisa. ex:
o texto selecionado no combo box é o seguinte:
09543 - JOSE DA SILVA SANTOS
sendo 09543 o código e JOSE DA SILVA SANTOS o nome...
agora, se o primeiro campo não for devidamente formatado, sendo de um tamanho indeterminado, vc utiliza um separador para retirar o que deseja, sendo o separador no caso acima o ´-´ (hifem) ...
09543 [color=red:a5373f0b7e]-[/color:a5373f0b7e] JOSE DA SILVA SANTOS
para retirar o texto que precisa (tudo antes do hífem por exemplo) faça um for ...
[code]
for I:=1 to Lenght(ComboBox1.Text) do
begin
if Copy(ComboBox1.Text,I,1) <> ´-´ then
vPesq:= vPesq + Copy(ComboBox1.Text,I,1)
else
break;
end;
assim, vc colocou na variável vPesq, tudo que vem antes do hífen ...
se não for o que procura, post novamente ...
abraços !!!
o texto selecionado no combo box é o seguinte:
09543 - JOSE DA SILVA SANTOS
sendo 09543 o código e JOSE DA SILVA SANTOS o nome...
agora, se o primeiro campo não for devidamente formatado, sendo de um tamanho indeterminado, vc utiliza um separador para retirar o que deseja, sendo o separador no caso acima o ´-´ (hifem) ...
09543 [color=red:a5373f0b7e]-[/color:a5373f0b7e] JOSE DA SILVA SANTOS
para retirar o texto que precisa (tudo antes do hífem por exemplo) faça um for ...
[code]
for I:=1 to Lenght(ComboBox1.Text) do
begin
if Copy(ComboBox1.Text,I,1) <> ´-´ then
vPesq:= vPesq + Copy(ComboBox1.Text,I,1)
else
break;
end;
assim, vc colocou na variável vPesq, tudo que vem antes do hífen ...
se não for o que procura, post novamente ...
abraços !!!
GOSTEI 0
Tchucky
01/08/2009
for I:=1 to Lenght(ComboBox1.Text) do
begin
if Copy(ComboBox1.Text,I,1) <> ´-´ then
vPesq:= vPesq + Copy(ComboBox1.Text,I,1)
else
break;
end;
naum entendi como funciona essa funçao e como devo colocar em meu form de consulta
e essas variaveis I, VPesq qual o formato delas... pq no meu Combobox vai receber numero e letras
GOSTEI 0
Alanporto
01/08/2009
Pelo que eu entendi, você quer concatenar os campos na combobox e, na hora de selecionar, usar um só dos campos para filtro. Se for isso o código do danielrsanches está correto. Quanto às variáveis, o i é só a variável de controle do for que está correndo a string da combobox caracter por caracter (então é Integer). vPesq está trazendo todo o conteúdo do Text da combobox que vem antes do hífen (String). Se sua pesquisa for feita em um botão, por exemplo, é só colocar o código antes da pesquisa e usar o vPesq para filtrar por código. :)
GOSTEI 0
Tchucky
01/08/2009
ta como eu desclaro Lenght eu nunca avia usado essa variavel....
GOSTEI 0
Tchucky
01/08/2009
a estava errada era
Length
GOSTEI 0
Tchucky
01/08/2009
Continua do mesmo jeito a consulta... continnua aparecendo os dois item na seleçao tipo 09543 - JOSE DA SILVA SANTOS
sendo q na seleçao ele so pode aparecer 09543
sendo q na seleçao ele so pode aparecer 09543
GOSTEI 0
Alanporto
01/08/2009
na seleção onde? na ComboBox? Por que acabei de testar o código aqui e deu certo.
Você quer que o código fique sozinho no Text da ComboBox depois de selecionado um item, é isso?
Se possível, poste o código que usa a seleção do ComboBox.
Você quer que o código fique sozinho no Text da ComboBox depois de selecionado um item, é isso?
Se possível, poste o código que usa a seleção do ComboBox.
GOSTEI 0
Tchucky
01/08/2009
o codigo esta no topo do topico mas vou colocar ele d novo aqui
begin Close; SQL.Text := ´SELECT NUMERO_DOC,TIPO_MOV FROM MOVIMENTO´ +#13+ ´WHERE (´ +13+´ (MOVIMENTO.TIPO_MOV = ´+IntToStr(i_Compra_Venda)+´)´ +13+´ )´; Open; if not IsEmpty then while not Eof do begin cb_numero_doc.Items.Add(Fields[0].AsString+´ - ´+Fields[1].AsString); Next; end; Close; end;
GOSTEI 0
Emerson Nascimento
01/08/2009
você não pode usar um DBLookupComboBox ?
GOSTEI 0
Alanporto
01/08/2009
Não esse.
Esse vai preencher o ComboBox com
´NUMERO_DOC - TIPO_MOV´ toda vez mesmo...
Todos os itens da ComboBox ficarão nesse formato...
Mas depois da ComboBox preenchida, qual o procedimento?
Como ele utiliza o item selecionado na ComboBox?
Se for em um where (por exemplo:
) funciona perfeitamente, basta passar o vPesq como parâmetro.
Agora se você está querendo que apareça só o código no Text quando dá OnCloseUp na ComboBox, sinto dizer que aqui testei e não funcionou, porque ele deve sobrescrever.
Esse vai preencher o ComboBox com
´NUMERO_DOC - TIPO_MOV´ toda vez mesmo...
Todos os itens da ComboBox ficarão nesse formato...
Mas depois da ComboBox preenchida, qual o procedimento?
Como ele utiliza o item selecionado na ComboBox?
Se for em um where (por exemplo:
SELECT CAMPO FROM MOVIMENTO WHERE NUMERO_DOC = :NUM
) funciona perfeitamente, basta passar o vPesq como parâmetro.
Agora se você está querendo que apareça só o código no Text quando dá OnCloseUp na ComboBox, sinto dizer que aqui testei e não funcionou, porque ele deve sobrescrever.
GOSTEI 0
Danielrsanches
01/08/2009
seu código teria que ficar mais ou menos assim:
procedure TForm1.Button1Click(Sender: TObject); var I: integer; vPesq: String; begin vPesq:= ´´; for I:=1 to Length(ComboBox1.Text) do begin if Copy(ComboBox1.Text,I,1) <> ´-´ then vPesq:= vPesq + Copy(ComboBox1.Text,I,1) else break; end; //aki vc faz a pesquisa utilizando a variável vPesq. Ex: query1.SQL.Text:= ´select * from TABELA where CAMPO = :pCampo´; query1.ParamByName(´pCampo´).AsString:= vPesq; query1.Open; end; qq coisa é só postar novamente ... abraços !!!
GOSTEI 0