|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
AND EM DBSEEK |
|
Versão: |
. |
|
Plataforma: |
. |
Complemento: |
|
|
DB: |
. |
Complemento: |
|
|
|
|
|
Mensagem do
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 |
|
|
Mensagem do
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
|
|
|
Mensagem do
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 |
|
|
Mensagem do
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 |
|
|
Mensagem do
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 |
|
|
Mensagem do
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
|
|