/ / Como lidar com o erro Zim “O conjunto de árvores ZIM transbordou” - zim-database

Como lidar com o erro Zim “O conjunto de árvores ZIM transbordou” - zim-database

Eu tenho o seguinte código:

set output spoole

select * from displays where displayname="dsp020a"
select * from forms where formname in (select formname from displayforms where displayname="dsp020a")
select * from formfields where formname in (select formname from displayforms where displayname="dsp020a")

A terceira seleção está travando o ZIM com o seguinte erro:

*** ZIM System Error *** The Zim tree pool has overflowed. Type BYE to exit from Zim.

O que estou fazendo de errado e como posso consertar isso?

Respostas:

2 para resposta № 1

Ao tentar usar o SQL no ZIM, também vi problemas e erros inesperados. Você deve sempre tentar usar os comandos nativos do ZIM 4GL para acessar os dados, bem como as definições de objetos.

O ZIM Data Dictionary contém algumas relações internas predefinidas que podem ajudar a analisar o modelo de dados. Por exemplo, você poderia dizer:

list all Displays DispDispForms DisplayForms where Displays.DisplayName = "dsp020a"

para descobrir quais formulários estão contidos na exibição dada. Da mesma forma você poderia fazer:

list all Forms FormFormFields FormFields where Forms.FormName in ("f020a", "f020b", "f020c")

para listar todos os campos de formulário que pertencem aos formulários fornecidos. Infelizmente, não há relação entre DisplayForms e Forms, então você não pode alcançar diretamente o que você tentou em seu exemplo usando SQL.

OR (adicionado após seu comentário):

Você pode conseguir isso usando um pequeno programa. Para este exemplo, seria:

set output output_file
find Displays DispDispForms DisplayForms where Displays.DisplayName = "dsp020a"
while $setcount > 0
let vStr = DisplayForms.FormName
list all Forms FormFormFields FormFields where Forms.FormName = vStr
let $setcount = $setcount - 1
next
endwhile
set output terminal

Agora você tem todos os campos de formulário que pertencem a todas as formas de exibição mostradas no output_file.