Nesse vídeo demonstraremos a utilização da função MSMM, que serve para ler ou gravar em antigos campos MEMO (que ficam as informações na SYP e RDY).
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zExe362 Visualiza ou edita um campo memo do tipo antigo (tabelas SYP ou RDY) @type Function @author Atilio @since 27/03/2023 @see https://tdn.totvs.com/display/public/framework/Msmm+-+Pesquisa+do+campo+MEMO+Virtual @obs Função MSMM Parâmetros + cChave , Caractere , Código da chave para busca + nTam , Numérico , Tamanho do campo controlado na SYP / RDY + nLin , Numérico , Linha do campo memo a ser retornada + cString , Caractere , Texto do campo memo + nOpc , Numérico , Opção a ser executada pela rotina (1 = incluir informação; 2=excluir conteúdo; 3=ler campo;) + nTamSize , Numérico , Quantidade de caracteres + lWrap , Lógico , Habilita quebra de linha + cAlias , Caractere , Alias da Tabela + cCpoChave , Caractere , Campos da Chave da Tabela na SYP + cRealAlias , Caractere , Alias da tabela MEMO (SYP / RDY) + lSoInclui , Lógico , Define se só irá realizar inclusão de informação Retorno + uRet , Indefinido , Se nOpc igual a 1 retorna conteudo do memo; Se igual a 2 retorna .T. ou .F. se conseguiu excluir; Se igual a 3 retorna a chave do código Obs.: Nesse exemplo foi usado a SB1, onde o campo REAL é o B1_CODOBS e o VIRTUAL é o B1_OBS **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe362() Local aArea := FWGetArea() Local cCodigo := "F0001" Local cObservacao := "" Local nTamObserv := TamSX3("B1_OBS")[1] //Abre o cadastro de produtos DbSelectArea("SB1") SB1->(DbSetOrder(1)) // Filial + Código //Posiciona em um produto If SB1->(MsSeek(FWxFilial("SB1") + cCodigo)) //Busca a observação já gravada hoje cObservacao := MSMM(SB1->B1_CODOBS, nTamObserv) //Agora iremos definir algum texto qualquer, adicionando na observação cObservacao := Alltrim(cObservacao) + ";editado no dia " + dToC(Date()) + " as " + Time() + ";" //Por fim, iremos fazer a gravação desse conteúdo RecLock("SB1", .F.) MSMM(, nTamObserv, , cObservacao, 1, , , "SB1", "B1_CODOBS") SB1->(MsUnlock()) EndIf FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.