Página 1 de 1
Comparar string
Enviado: 12 Abr 2015 15:50
por marcos.gurupi
Caros colegas, estou usando uma comparacao de string para separar um determinado produto e calcular a venda. Segue a explicação abaixo do que estah ocorrendo:
Tenho um combobox que o conteudo escolhido pelo usuario eh: DIESEL
Tenho um dbf dos caixas onde tem todas as vendas dos produtos do dia, entaum lah eu tenho:
Produto:
GASOLINA COMUN
GASOLINA ADITIVADA
DIESEL
DIESEL S-10
ETHANOOL
Ocorre que o codigo abaixo traz alem dos produtos DIESEL, traz tb DIESEL S-10, onde deveria soh vim DIESEL
Código: Selecionar todos
If SubStr(Produto,1,Len(Produto)) = SubStr(oProduto:GetText(),1,Len(oProduto:GetText()))
Tentei usar o alltrim() mas nao tive sucesso. Em q estou comendo bola ?
:%
Comparar string
Enviado: 13 Abr 2015 07:28
por ANDRIL
Tenta assim:
Código: Selecionar todos
If SubStr(Produto,1,Len(oProduto:GetText())) = SubStr(oProduto:GetText(),1,Len(oProduto:GetText()))
Caso não funcione acima:
Código: Selecionar todos
If SubStr(Produto,1,Len(oProduto:GetText())) == SubStr(oProduto:GetText(),1,Len(oProduto:GetText()))
Ate+
Comparar string
Enviado: 13 Abr 2015 07:36
por Toledo
Marcos, tente usar o SET EXACT ON ou utilize o operador == (igual duplo).
Abraços,
Comparar string
Enviado: 13 Abr 2015 11:12
por marcos.gurupi
Obrigado por responder toledo. Eu jah havia tentando o operador == mas sem o set extract on. O problema foi solucionado usando o codigo abaixo, graças ao colega Toya:
Código: Selecionar todos
cAux := alltrim( oProduto:GetText() )
...
...
If alltrim( Produto ) == cAux // Ai deu certo assim.
Obrigado mais uma vez ao colega Toya.
Comparar string
Enviado: 13 Abr 2015 17:29
por Toledo
marcos.gurupi escreveu:Eu jah havia tentando o operador == mas sem o set extract on.
Atenção, não é set
extract on, o correto é SET
EXACT ON.
Abraços,
Comparar string
Enviado: 13 Abr 2015 17:42
por marcos.gurupi
Obr pela correção
Comparar string
Enviado: 13 Abr 2015 18:45
por alxsts
Olá!
Não entendi como você havia tentado == e não deu certo. Depois o Toya colocou == como solução e deu certo...
Segundo o
Manual do Clipper, SET EXACT não tem nenhuma influência sobre o operador ==
marcos.gurupi escreveu:deveria soh vim DIESEL
Este ator trabalha muito bem!

)
Comparar string
Enviado: 13 Abr 2015 19:45
por Toledo
alxsts escreveu:SET EXACT não tem nenhuma influência sobre o operador ==
Mas tem influência sobre o operador =, veja o que diz o
manual do Clipper:
When EXACT is OFF two character strings are compared according to the
following rules; assume two character strings, cLeft and cRight,
where the expression to test is (cLeft = cRight):
- If cRight is null, return true (.T.).
- If LEN(cRight) is greater than LEN(cLeft), return false (.F.).
- Compare all characters in cRight with cLeft. If all
characters in cRight equal cLeft, return true (.T.); otherwise
return false (.F.).
With EXACT ON, two strings must match exactly, except for trailing
blanks.
Abraços,
Comparar string
Enviado: 14 Abr 2015 08:14
por sambomb
alxsts escreveu:Olá!
Não entendi como você havia tentado == e não deu certo. Depois o Toya colocou == como solução e deu certo...
Segundo o
Manual do Clipper, SET EXACT não tem nenhuma influência sobre o operador ==
marcos.gurupi escreveu:deveria soh vim DIESEL
Este ator trabalha muito bem!

)
Repare que tem o AllTrim no código do Toya, ele estava comparando sem verificar os espaços
Exemplo:
Var1 := PadR("Teste",10)
Var2 := "Teste"
? Var1 == Var2 //-- Retorna falso por causa dos espaços a direita do Var1
? AllTrim(Var1) == AllTrim(Var2) //-- Retorna verdadeiro
Comparar string
Enviado: 14 Abr 2015 14:01
por alxsts
Olá!
Valeu amigos. Acho que a questão ficou bem esclarecida.