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