rmw Posted January 13, 2004 Posted January 13, 2004 Zie ik het nou verkeerd of hebben we hier een bug? Er zijn drie bestanden: File1, File2 en File3 File1 bevat in elk geval de velden Veld11, Sleutel11 en Sleutel12: Sleutel11 is een geïndexeerd tekstveld. Sleutel12 is een geïndexeerd tekstveld. Veld11 is een geïndexeerd tekstveld. File3 bevat in elk geval de velden Veld31 en Sleutel31: Sleutel31 is een geïndexeerd tekstveld. Veld31 is een geïndexeerd tekstveld. File2 bevat tenminste de velden Veld21, Veld22, Veld23, Sleutel21 en Sleutel22 Sleutel21 is een geïndexeerd tekstveld. Er ligt een relatie van File2 naar File1: Relatie1 = Sleutel21<->Sleutel11 Sleutel22 is een berekend veld (niet opgeslagen): =Relatie1::Veld11 Er ligt een relatie van File2 naar File3: Relatie2 = Sleutel22<->Sleutel31 Veld21 is een geïndexeerd tekstveld met een lookup van Relatie2::Veld31 Veld22 is een geïndexeerd tekstveld. Veld23 is een berekend veld: =if(isempty(Veld22); Veld21; Veld22) Is Veld23 volgens de theorie wel of niet opgeslagen? De vraag stellen is hem beantwoorden: de theorie zegt dat het veld kan worden opgeslagen. Zelfs FM zegt dat het kan (de checkbox voor het niet opslaan van de gegevens kan worden uitgezet) Maar...... Als ik de velddefinities afsluit en weer open is Veld23 NIET OPGESLAGEN! En het wordt nog mooier: Als ik Relatie2 anders opbouw: Relatie2 = Sleutel21<->Sleutel12 kan Veld23 WEL worden opgeslagen. Iemand? rmw Files.zip Quote
0 AvD Posted January 13, 2004 Posted January 13, 2004 Veld23 is een berekend veld: =if(isempty(Veld22); Veld21; Veld22) Is Veld23 volgens de theorie wel of niet opgeslagen? De vraag stellen is hem beantwoorden: de theorie zegt dat het veld kan worden opgeslagen. De theorie zegt, denk ik, het tegenovergestelde. Het hele probleem zit, als ik het me goed herinner, in de niet indexeerbaarheid van calculaties waarin de IsEmpty-functie betrokken is. IsEmpty is redelijk nieuw en werd vanaf FileMaker 3 in gebruik genomen om het volstrekt onbetrouwbare = "" te vervangen. En ik geloof - maar ik vind dat nu niet direct terug - dat toen al problemen van die aard werden gemeld, juist omdat IsEmpty niet vanaf het begin in de calculation engine van FileMaker zat. Nu, om te besluiten: zolang ik het artikel over dit probleem niet terugvind, moet je bovenstaande lezen met het nodige voorbehoud. Quote
0 AvD Posted January 13, 2004 Posted January 13, 2004 Heb al iets gevonden in die richting, maar dat probleem is gemeld en al in 3.0 v3 opgelost: The IsEmpty function will not work properly with number fields in a conditional script. Here is an example script that demonstrates the problem: If["IsEmpty(Number field)"] Show Message ["The field is empty"] End If In this example, the script will show the message whether the number field it references is empty or not. Update to FileMaker Pro 3.0v3 to fix this problem. Quote
0 AvD Posted January 13, 2004 Posted January 13, 2004 En dit is al beter: Calculations do not calculate when the field that they are dependent on is blank. En ze geven meteen de oplossing: het lege veld concatenaten met een ander dat gevuld is en dan die concatenate vergelijken met het gevulde: In order to trigger the calculation, you need to have a field that will always have a value in it. Sometimes these are referred to as 'dummy' or 'constant' fields. A good way to do this is to create a calculation that has a value in it. It can have any value - a date, some text, a number, etc. In this example we will use text: Check4Empty (Calculation, Text result) = "XYZ" So here is the test that will be reliable: ReliableTest(Calculation) = If (TestMe & Check4Empty = Check4Empty, Result if True, Result if False) This test says, 'if you concatenate (combine) the contents of the TestMe field and the Check4Empty field, is that equal to the Check4Empty field?' If they are equal, then there is obviously nothing in the TestMe field. Ik hoop dat dit je verder helpt. Quote
0 AvD Posted January 13, 2004 Posted January 13, 2004 Hier nog iets over het soms onverwachte gedrag van lege velden: http://www.avd-ci.be/tip073.htm Quote
0 Theo2 Posted January 13, 2004 Posted January 13, 2004 Wees gerust, het is een Bug!! Iets dergelijks overkwam mij ook. Sleutel22 is een berekend veld (niet opgeslagen): =Relatie1::Veld11 Zet ofwel Sleutel22 in de index of haal de lookup eruit van Veld21. Filemaker controleert of de index van veld23 mag worden gemaakt en test (ten onrechte!) ook op de lookup berekening. Deze lookup-berekening maakt gebruik van een niet geïndexeerd veld en dat is de clou. Deze bug heb ik ook gehad en is op het forum beschreven. Ik weet even niet meer zo gauw wanneer. Quote
0 AvD Posted January 13, 2004 Posted January 13, 2004 Deze lookup-berekening maakt gebruik van een niet geïndexeerd veld en dat is de clou. En is dat dan niet op te lossen met het antwoord van FileMaker of vergis ik me? Quote
0 Theo2 Posted January 14, 2004 Posted January 14, 2004 Hallo André, volgens mij heeft dit probleem geen relatie met de IsEmpty formule. De oplossing van Filemaker geeft dus geen soelaas. Zie mijn conclusie in het bericht van 4 oktober over hetzelfde probleem: http://www.clarify.net/viewtopic.php?t=943&highlight=theo+bug Quote
0 rmw Posted January 14, 2004 Author Posted January 14, 2004 Zie mijn conclusie in het bericht van 4 oktober over hetzelfde probleem:http://www.clarify.net/viewtopic.php?t=943&highlight=theo+bug Vreemd om in die draad een antwoord van mezelf terug te vinden. Ik zal de volgende keer beter zoeken op het forum of in mijn eigen archief Toch bedankt voor de moeite rmw Quote
Question
rmw
Zie ik het nou verkeerd of hebben we hier een bug?
Er zijn drie bestanden: File1, File2 en File3
File1 bevat in elk geval de velden Veld11, Sleutel11 en Sleutel12:
Sleutel11 is een geïndexeerd tekstveld.
Sleutel12 is een geïndexeerd tekstveld.
Veld11 is een geïndexeerd tekstveld.
File3 bevat in elk geval de velden Veld31 en Sleutel31:
Sleutel31 is een geïndexeerd tekstveld.
Veld31 is een geïndexeerd tekstveld.
File2 bevat tenminste de velden Veld21, Veld22, Veld23, Sleutel21 en Sleutel22
Sleutel21 is een geïndexeerd tekstveld.
Er ligt een relatie van File2 naar File1: Relatie1 = Sleutel21<->Sleutel11
Sleutel22 is een berekend veld (niet opgeslagen): =Relatie1::Veld11
Er ligt een relatie van File2 naar File3: Relatie2 = Sleutel22<->Sleutel31
Veld21 is een geïndexeerd tekstveld met een lookup van Relatie2::Veld31
Veld22 is een geïndexeerd tekstveld.
Veld23 is een berekend veld: =if(isempty(Veld22); Veld21; Veld22)
Is Veld23 volgens de theorie wel of niet opgeslagen?
De vraag stellen is hem beantwoorden: de theorie zegt dat het veld kan worden opgeslagen.
Zelfs FM zegt dat het kan (de checkbox voor het niet opslaan van de gegevens kan worden uitgezet)
Maar......
Als ik de velddefinities afsluit en weer open is Veld23 NIET OPGESLAGEN!
En het wordt nog mooier:
Als ik Relatie2 anders opbouw: Relatie2 = Sleutel21<->Sleutel12
kan Veld23 WEL worden opgeslagen.
Iemand?
rmw
Files.zip
8 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.