Fórum 2 Coluna no TCombobox #373002

01/08/2009

0

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

Tchucky

Responder

Posts

02/08/2009

Danielrsanches

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 !!!


Responder

Gostei + 0

03/08/2009

Tchucky

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


Responder

Gostei + 0

03/08/2009

Alanporto

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. :)


Responder

Gostei + 0

03/08/2009

Tchucky

ta como eu desclaro Lenght eu nunca avia usado essa variavel....


Responder

Gostei + 0

03/08/2009

Tchucky

a estava errada era
Length



Responder

Gostei + 0

03/08/2009

Tchucky

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


Responder

Gostei + 0

03/08/2009

Alanporto

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.


Responder

Gostei + 0

03/08/2009

Tchucky

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; 



Responder

Gostei + 0

03/08/2009

Emerson Nascimento

você não pode usar um DBLookupComboBox ?


Responder

Gostei + 0

03/08/2009

Alanporto

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:
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.


Responder

Gostei + 0

03/08/2009

Danielrsanches

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 !!!



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar