IF não funciona
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
Curtidas 0
Melhor post
Emerson Nascimento
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;GOSTEI 1
Mais Respostas
Rogerio Ms
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;Hey amigo Emerson, obrigado pela ajuda, mas infelizmente não deu certo. Continua sem executar a ação.
GOSTEI 0
Rogerio Ms
12/01/2022
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.
GOSTEI 0