No vídeo de hoje, vamos demonstrar a diferença de buscar os campos entre a DbStruct e a FWSX3Util.
A dúvida de hoje, nos perguntaram, qual seria a diferença entre usar a DbStruct e a FWSX3Util para buscar os campos.
Pensando nisso, montamos esse exemplo, onde as principais diferenças são:
- Na DbStruct não traz campos virtuais. Já na FWSX3Util você tem essa opção
- Na DbStruct traz o nome do campo, tipo, tamanho e decimais. Já na FWSX3Util traz apenas o nome do campo
- Na DbStruct a ordem que vem, é conforme o campo foi criado na base. Já na FWSx3Util traz a ordenação respeitando a configuração do dicionário (X3_ORDEM)
Segue abaixo o vídeo exemplificando:
E abaixo o código fonte desenvolvido:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} User Function zVid0099
Exemplo de comparação entre DbStruct e FWSX3Util (por causa do X3_ORDEM)
@type Function
@author Atilio
@since 01/03/2024
/*/
User Function zVid0099()
Local aArea := FWGetArea()
Local aEstruSB1 := {}
Local aSX3daSB1 := {}
Local cMensagem := ""
//Abre a tabela de produtos e busca todos os campos
DbSelectArea("SB1")
aEstruSB1 := SB1->(DbStruct())
aSX3daSB1 := FWSX3Util():GetAllFields("SB1", .F. /*lVirtual*/)
//Exibe uma mensagem com a quantidade em comparação
cMensagem := FormatStr("Com DbStruct: %n , com FWSX3Util %n", {Len(aEstruSB1), Len(aSX3daSB1)})
FWAlertInfo(cMensagem, "Comparação")
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.