Estou com um erro em um função simples, mas não sei o que pode ser.
Vocês já viram esse erro:
mismatched input 'sRetorno' expecting {, ';', CRLF}
#INCLUDE "protheus.ch"
user function getTurno(mat, filial, cDia)
default cDia = dToS(Date())
Local sRetorno := '0'
QRY := GetNextAlias()
BeginSQL Alias QRY
select pf_turnopa turno, pf_sequepa seq
from %table:spf% spf
where pf_mat = %exp:mat% and pf_filial = %exp:filial% and spf.%notdel%
and pf_data <= %exp:cDia%
order by pf_data desc
endSql
dbGoTop()
sRetorno := '0'
If !(QRY)->(Eof())
sRetorno := QRY->TURNO
Endif
(QRY)->(dbclosearea())
Return sRetorno
Parece um erro de tipagem, eu faria duas coisas:
mudaria o nome da variável para cRetorno e mudaria as linhas de definição para conter a quantidade de caracteres que tem no campo do banco:
cretorno := '000'
As sugestões foram pertinentes, mas o erro continua!
mais uma tentativa é fazer cRetorno := (QRY)->TURNO
como o QRY é um string precisa desses parenteses…
se também não der certo… aí o que vai ajudar mais é o debug mesmo, debugar linha a linha olhando o que está vindo na QRY->TURNO e se a tipagem está mesmo caracter, e conferindo se na cretorno está com tipagem caracter também…
Fiz a correção solicitada, porém o erro continua.
A função está funcionando normalmente, conforme anexo com o debug.
Fiz a alteração na query, mas continua dando erro no Code Analysis. No TDS funciona normalmente, não dá erro.
A função retorna o turno normalmente.
Descobri! O erro estava na linha 3:
default cDia = dToS(Date())
Falto o operador correto de atribuição := e não =
Correção:
default cDia := dToS(Date())
Descobri!
O erro estava na linha 3: default cDia = dToS(Date())
Faltou o operador correto de atribuição := e não = Correção: default cDia := dToS(Date())
Normalmente, quando o IDE aponta uma linha de erro e está linha está correta, o erro está na linha de cima.