PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
AND EM DBSEEK
Versão:
.
Plataforma:
.
Complemento:
DB:
.
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário GUSTAVOJ GUSTAVOJ em 05/02/2019, 17:23 h
Local: SP  Registro: 22/01/2019  Postagens: 22
é possível eu especificar o tipo do produto que eu preciso validar

USER FUNCTION CF046FAT()

LOCAL lRet    := .T.
LOCAL nResult := 1
LOCAL nQuant := M->C6_QTDVEN
          dbSelectArea("SB1")
          SB1->(dbSetOrder(1)) //código do produto
          SB1->(dbSeek(xFilial("SB1")+M->C6_PRODUTO) .AND. ALLTRIM(SB1->B1_TIPO) $("MQ,FM"))
          IF nQuant <> nResult   //se quantidade diferente de 1
             MSGALERT( "Para produtos do tipo MQ ou FM a quantidade deve ser igual a 1 para preenchimento do campo patrimônio!" )
             lRet := .F.
          ELSE
             lRet := .T.
          ENDIF
dbcloseArea("SB1")
RETURN lRet

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ERPC ERPC em 05/02/2019, 23:30 h
Local: SP  Registro: 14/08/2011  Postagens: 316
Dá para fazer sim, mas fica mais elegante fazer em dois IFs, e ao inves de fechar o SB1, fazer um "GetArea" e "RestArea":


USER FUNCTION CF046FAT()

LOCAL lRet     := .T.
LOCAL aAreaSB1 := SB1->(GetArea())

SB1->(dbSetOrder(1))     // Filial + Código do produto
IF SB1->(dbSeek(xFilial("SB1")+M->C6_PRODUTO))
IF ALLTRIM(SB1->B1_TIPO) $ "MQ,FM"
    IF M->C6_QTDVEN <> 1   
      MSGALERT("Para produtos do tipo MQ ou FM a quantidade "+;
               "deve ser igual a 1 para preenchimento do campo patrimônio!" )
      lRet := .F.
    Endif
ENDIF
ELSE
MSGALERT( "Produto ["+M->C6_PRODUTO+"] nao cadastrado." )
lRet := .F.
ENDIF

SB1->(RestArea(aAreaSB1))
RETURN lRet



Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário GUSTAVOJ GUSTAVOJ em 06/02/2019, 08:57 h
Local: SP  Registro: 22/01/2019  Postagens: 22
Quando eu debugo ou executo no smartclient da erro no dbseek e trava

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário KANAAMLRR KANAAMLRR em 06/02/2019, 09:50 h
Local: SP  Registro: 19/11/2010  Postagens: 160
Poderia ser feito dessa forma:

USER FUNCTION CF046FAT()

LOCAL lRet    := .T.
LOCAL nResult := 1
LOCAL nQuant := M->C6_QTDVEN
          dbSelectArea("SB1")
          SB1->(dbSetOrder(1)) //código do produto
          If SB1->(dbSeek(xFilial("SB1")+M->C6_PRODUTO)) .AND. ALLTRIM(SB1->B1_TIPO) $("MQ,FM")
             IF nQuant <> nResult   //se quantidade diferente de 1
               MSGALERT( "Para produtos do tipo MQ ou FM a quantidade deve ser igual a 1 para preenchimento do campo patrimônio!" )
               lRet := .F.
             ELSE
               lRet := .T.
             ENDIF
          EndIf
dbcloseArea("SB1")
RETURN lRet

At.,
Kanaãm L. R. Rodrigues

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário VRTN VRTN em 06/02/2019, 11:00 h
Local: MG  Registro: 09/11/2009  Postagens: 191
Está faltando o if na instrução abaixo:

SB1->(dbSeek(xFilial("SB1")+M->C6_PRODUTO) .AND. ALLTRIM(SB1->B1_TIPO) $("MQ,FM"))

O correto seria:

IF SB1->(dbSeek(xFilial("SB1")+M->C6_PRODUTO)) .AND. (ALLTRIM(SB1->B1_TIPO) $("MQ,FM"))
ENDIF


Everton Alves

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ERPC ERPC em 07/02/2019, 21:41 h
Local: SP  Registro: 14/08/2011  Postagens: 316
Gustavo, qual é exatamente o "erro" que ocorre no DBSeek ?

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal