ERP – Regras LSP – Como comparar ou retornar um campo do tipo Blob (binário) em regras
Dúvida
Como comparar ou retornar um campo do tipo Blob (binário) em regras?
Solução
Para realizar um retorno de um campo do tipo Blob em regras, não podem ser utilizados os operadores comuns como: 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.
Segue abaixo um exemplo de regra onde 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);