IF não funciona
12/01/2022
0
Saudações a todos! Estou com um problema estranho. Vejam a estrutura a seguir:
Estou brigando com essa estrutura a várias dias. A principio, ela não tem nada de errado, mas não passa na verificação do IF. Já fiz vários teste, dando ShowMessage para ver os valores e tudo está em ordem, mas não funciona de maneira nenhuma.
Só pra contextualizar, estou usando um StringGrid pra exibir alguns dados, mas preciso filtrar algumas informações baseadas em um Combobox e como sei que o StringGrid não tem essa função, estou utilizando um segundo que fica oculto na inicialização do sistema e só aparece quando eu clico no botão Filtrar. Então a intenção é ele aparecer sobre o StringGPerfil somente com as informações filtradas. Lembrando que é uma aplicação simples, que não tem banco de dados. Ela lê as informações de uma planilha do Excel, realiza alguns cálculos e joga a informação em outro StringGrid.
Ahh, a linha do IF com comentário foi apenas mais um teste.
Qualquer ajuda, ficarei muito grato. Abraços
At.te,
Rogério
for a := 0 to StringGPerfil.RowCount -1 do begin // if (StringGPerfil.Cells[1, a + 1] = ComboTurma.Items[ComboTurma.ItemIndex]) then if AnsiCompareText(StringGPerfil.Cells[1, a + 1], ComboTurma.Text) = 0 then begin StringGFiltro.Cells[0, b] := StringGPerfil.Cells[0, a + 1]; StringGFiltro.Cells[1, b] := StringGPerfil.Cells[1, a + 1]; b := b + 1; end; end;
Estou brigando com essa estrutura a várias dias. A principio, ela não tem nada de errado, mas não passa na verificação do IF. Já fiz vários teste, dando ShowMessage para ver os valores e tudo está em ordem, mas não funciona de maneira nenhuma.
Só pra contextualizar, estou usando um StringGrid pra exibir alguns dados, mas preciso filtrar algumas informações baseadas em um Combobox e como sei que o StringGrid não tem essa função, estou utilizando um segundo que fica oculto na inicialização do sistema e só aparece quando eu clico no botão Filtrar. Então a intenção é ele aparecer sobre o StringGPerfil somente com as informações filtradas. Lembrando que é uma aplicação simples, que não tem banco de dados. Ela lê as informações de uma planilha do Excel, realiza alguns cálculos e joga a informação em outro StringGrid.
Ahh, a linha do IF com comentário foi apenas mais um teste.
Qualquer ajuda, ficarei muito grato. Abraços
At.te,
Rogério
Rogerio Ms
Curtir tópico
+ 0
Responder
Post mais votado
12/01/2022
tente assim (adicionei a função trim)
for a := 1 to StringGPerfil.RowCount do if AnsiCompareText(trim(StringGPerfil.Cells[1, a]), trim(ComboTurma.Text)) = 0 then begin StringGFiltro.Cells[0, b] := StringGPerfil.Cells[0, a]; StringGFiltro.Cells[1, b] := StringGPerfil.Cells[1, a]; inc(b); end;
Emerson Nascimento
Responder
Mais Posts
13/01/2022
Rogerio Ms
tente assim (adicionei a função trim)
for a := 1 to StringGPerfil.RowCount do if AnsiCompareText(trim(StringGPerfil.Cells[1, a]), trim(ComboTurma.Text)) = 0 then begin StringGFiltro.Cells[0, b] := StringGPerfil.Cells[0, a]; StringGFiltro.Cells[1, b] := StringGPerfil.Cells[1, a]; inc(b); end;
Hey amigo Emerson, obrigado pela ajuda, mas infelizmente não deu certo. Continua sem executar a ação.
Responder
13/01/2022
Rogerio Ms
Saudações a todos! Estou com um problema estranho. Vejam a estrutura a seguir:
Estou brigando com essa estrutura a várias dias. A principio, ela não tem nada de errado, mas não passa na verificação do IF. Já fiz vários teste, dando ShowMessage para ver os valores e tudo está em ordem, mas não funciona de maneira nenhuma.
Só pra contextualizar, estou usando um StringGrid pra exibir alguns dados, mas preciso filtrar algumas informações baseadas em um Combobox e como sei que o StringGrid não tem essa função, estou utilizando um segundo que fica oculto na inicialização do sistema e só aparece quando eu clico no botão Filtrar. Então a intenção é ele aparecer sobre o StringGPerfil somente com as informações filtradas. Lembrando que é uma aplicação simples, que não tem banco de dados. Ela lê as informações de uma planilha do Excel, realiza alguns cálculos e joga a informação em outro StringGrid.
Ahh, a linha do IF com comentário foi apenas mais um teste.
Qualquer ajuda, ficarei muito grato. Abraços
At.te,
Rogério
for a := 0 to StringGPerfil.RowCount -1 do begin // if (StringGPerfil.Cells[1, a + 1] = ComboTurma.Items[ComboTurma.ItemIndex]) then if AnsiCompareText(StringGPerfil.Cells[1, a + 1], ComboTurma.Text) = 0 then begin StringGFiltro.Cells[0, b] := StringGPerfil.Cells[0, a + 1]; StringGFiltro.Cells[1, b] := StringGPerfil.Cells[1, a + 1]; b := b + 1; end; end;
Estou brigando com essa estrutura a várias dias. A principio, ela não tem nada de errado, mas não passa na verificação do IF. Já fiz vários teste, dando ShowMessage para ver os valores e tudo está em ordem, mas não funciona de maneira nenhuma.
Só pra contextualizar, estou usando um StringGrid pra exibir alguns dados, mas preciso filtrar algumas informações baseadas em um Combobox e como sei que o StringGrid não tem essa função, estou utilizando um segundo que fica oculto na inicialização do sistema e só aparece quando eu clico no botão Filtrar. Então a intenção é ele aparecer sobre o StringGPerfil somente com as informações filtradas. Lembrando que é uma aplicação simples, que não tem banco de dados. Ela lê as informações de uma planilha do Excel, realiza alguns cálculos e joga a informação em outro StringGrid.
Ahh, a linha do IF com comentário foi apenas mais um teste.
Qualquer ajuda, ficarei muito grato. Abraços
At.te,
Rogério
Pessoal, consegui resolver da forma mais bizarra possível. Apenas acrescentei a seguinte linha na estrutura de repetição:
StringGFiltro.RowCount := StringGFiltro.RowCount + 1;
Tenho 2 outros StringGrids que não pedem essa criação de linhas para inserção de dados, mas esse está pedindo, então ficou muito doido..rs.
Enfim, tópico fechado. Obrigado pela ajuda Emerson.
Responder
Clique aqui para fazer login e interagir na Comunidade :)