Estou começando com os fontes MVC e tenho um problema no meu menudef, estou chamando a Rotina A410Visual que é uma static function no menudef mas da type mismatch, aparentemente n tem como chamar uma statical, de que maneira vcs fariam para chamar ela na menudef? Obs: já tentei por user function e chamar e n funcionou
Cristian, poderia por favor colocar o exemplo do que você está fazendo, ou tentando fazer.
Boa tarde, segue exemplo:
ADD OPTION aRotina TITLE 'Visual.Doc' ACTION 'StaticCall(BKCOMA09, SZSVDoc)' OPERATION 2 ACCESS 0
Obs: BKCOMA09 é o fonte que contem a função estatica.
Estou tentando colocar essa função abaixo dentro do submodelo do menudef...
Static Function AcessaPV(cPedido)
Local aArea := GetArea() //Irei gravar a area atual
Private Inclui := .F. //defino que a inclusão é falsa
Private Altera := .T. //defino que a alteração é verdadeira Private nOpca := 1 //obrigatoriamente passo a variavel nOpca com o conteudo 1
Private cCadastro := "Pedido de Vendas" //obrigatoriamente preciso definir com private a variável cCadastro Private aRotina := {} //obrigatoriamente preciso definir a variavel aRotina como private
DbSelectArea("Z4I") //Abro a tabela Z4I
Z4I->(dbSetOrder(1)) //Ordeno no índice 1
Z4I->(dbSeek(xFilial("Z4I")+ cPedido)) //Localizo o meu pedido
If Z4I->(!EOF()) //Se o pedido existe irei continuar
Z4I->(DbGoTo(Recno())) //Me posiciono no pedido
MatA410(Nil, Nil, Nil, Nil, "A410Visual") //executo a função padrão MatA410
Endif
Z4I->(DbCloseArea()) //quando eu sair da tela de visualizar pedido, fecho o meu alias
RestArea(aArea) //restauro a area anterior.
Return ()
Static Function MenuDef()
Local cCodUser := RetCodUsr()
Local aRotina := {}
//ADD OPTION aRotina TITLE "Pesquisar" ACTION 'PesqBrw' OPERATION 1 ACCESS 0
ADD OPTION aRotina Title 'Visualizar' Action 'VIEWDEF.TCOMA093' OPERATION 2 ACCESS 0
IF cCodUser == '000000' .OR. cCodUser == '000202' .OR. cCodUser == '000377' .OR. cCodUser == '000062' .OR. cCodUser == '000390'
ADD OPTION aRotina Title 'Alterar' Action 'VIEWDEF.TCOMA093' OPERATION 4 ACCESS 0
EndIF
ADD OPTION aRotina TITLE 'Mostra Pendentes' ACTION 'U_PENDEN()' OPERATION 2 ACCESS 0
ADD OPTION aRotina TITLE 'Mostra Entregues' ACTION 'U_ENTR()' OPERATION 2 ACCESS 0
ADD OPTION aRotina TITLE 'FUNCAO' ACTION 'StaticCall( TCOMA093, AcessaPV)' OPERATION 2 ACCESS 0
//ADD OPTION aRotina Title 'Incluir' Action 'VIEWDEF.TCOMA093' OPERATION 3 ACCESS 0
//ADD OPTION aRotina Title 'Excluir' Action 'VIEWDEF.TCOMA093' OPERATION 5 ACCESS 0
//ADD OPTION aRotina Title 'Imprimir' Action 'VIEWDEF.TCOMA093' OPERATION 8 ACCESS 0
//ADD OPTION aRotina Title 'Copiar' Action 'VIEWDEF.TCOMA093' OPERATION 9 ACCESS 0
Return aRotina
Qual error.log ocorre?
Cristian,
A sua função AcessaPV recebe como parâmetro cPedido.
E você está invocando a função sem passar esse parâmetro, logo, a concatenação com o retorno de xFilial vai gerar error.log, pois a variável cPedido está com o valor nil:
Z4I->(dbSeek(xFilial("Z4I")+ cPedido))
Para corrigir, você pode criar um valor default para o parâmetro cPedido, algo como:
default cPedido := SC5->C5_NUM
Ou qualquer outra regra para obter o valor de pedido que você tenha.