/ / Umgang mit Zim Error "Der ZIM-Baum-Pool ist übergelaufen" - zim-database

Umgang mit Zim Error "Der ZIM-Baum-Pool ist übergelaufen" - zim-database

Ich habe den folgenden Code:

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")

Die dritte Auswahl stürzt ZIM mit dem folgenden Fehler ab:

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

Was mache ich falsch und wie kann ich es beheben?

Antworten:

2 für die Antwort № 1

Beim Versuch, SQL in ZIM zu verwenden, sah ich auch Probleme und unerwartete Fehler. Sie sollten immer versuchen, die nativen ZIM 4GL-Befehle zu verwenden, um sowohl auf Daten als auch auf Objektdefinitionen zuzugreifen.

Das ZIM Data Dictionary enthält einige vordefinierte interne Beziehungen, mit deren Hilfe das Datenmodell analysiert werden kann. Zum Beispiel könnten Sie sagen:

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

um herauszufinden, welche Formen in der gegebenen Anzeige enthalten sind. Ebenso könnten Sie tun:

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

um alle Formularfelder aufzulisten, die zu den angegebenen Formen gehören. Leider gibt es keine Beziehung zwischen DisplayForms und Forms, so dass Sie nicht direkt erreichen können, was Sie in Ihrem Beispiel mit SQL versucht haben.

ODER (nach Ihrem Kommentar hinzugefügt):

Sie können das mit einem kleinen Programm erreichen. Für dieses Beispiel wäre es:

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

Jetzt haben Sie alle Formularfelder, die zu allen Formen der gegebenen Anzeige gehören, die in der Ausgabedatei aufgeführt sind.