Problema: Como comparar ou retornar campo tipo Blob (binário) em regras?
Quando ocorre / onde se aplica: Regras do sistema.
Solução: Para tal retorno via regra não se pode usar os operadores comuns conforme campos tipo String diretamente no campo Blob, é necessário utilizar a função da linguagem SQL Senior 2 SQL_RetornarBlob que retornará o conteúdo do Blob em variável. Os comandos operadores de comparação devem ser aplicados a esta variável.
Exemplo:
- Na regra abaixo deseja-se o retorno somente dos colaboradores que tenham registro de documento, mas que não tenham nenhum documento físico/arquivo vinculado (campo blob nulo):
Definir Alfa xCursor;
Definir alfa xBlob;
Definir alfa xMsg;
Definir alfa xEmp;
Definir alfa xTip;
Definir alfa xCad;
SQL_Criar(xCursor);
SQL_DefinirComando(xCursor,SELECT numemp, tipcol, numcad, docemp FROM R034DOC order by 1,2,3);
SQL_AbrirCursor(xCursor);
Enquanto (SQL_EOF(xCursor) = 0)
{
/* Passa como parâmetro o Cursor que deseja manipular e
o nome do campo na base que deseja obter o valor. E por
último uma variável que obterá o valor do campo solicitado.
*/
SQL_RetornarInteiro(xCursor,NumEmp,xNumEmp);
SQL_RetornarInteiro(xCursor,TipCol,xTipCol);
SQL_RetornarInteiro(xCursor,NumCad,xNumCad);
SQL_RetornarBlob(xCursor,DocEmp,xBlob);
IntParaAlfa (xNumEmp, xEmp);
IntParaAlfa (xTipCol, xTip);
IntParaAlfa (xNumCad, xCad);
Se (xBlob = ) {
xMsg = Colaborador: + xEmp + - + xTip + - + xCad + está sem documento vinculado!;
Mensagem (retorna, xMsg);
}
SQL_Proximo(xCursor);
}
SQL_FecharCursor(xCursor);
SQL_Destruir(xCursor);
Validade: /#31/12/2020#
Público: Interno, canais/consultores, clientes