title image


Smiley such für die Ursache, warum ComputeWithForm nicht funzt...
Weil: Das ist die einzige Möglichkeit, um Dokumente in einem Periodischen Agenten zu refreshen. Alle @Commands funktionieren in solchen Agenten nicht.



Du müsstest also einen Agenten schreiben, der ein "ComputeWithForm" durchführt...



Besser ist es also, dieses ComputeWithForm gleich beim Import einzubauen...



Ich vermute im übrigen, dass Dein ComputeWithForm genau aus DEM Grund nicht tut, weil Du Text in ein Zahlenfeld schreibst (was Dir ja offensichtlich in der Ansicht zum Verhängnis wird).



Wie debuggt man ein ComputeWithForm:



1. GAAAANZ wichtig: Das Form- Feld muss VOR dem Computewithform zugewiesen werden, denn sonst verwendet ComputeWithForm nämlich die Standard- Maske der Datenbank, was eventuell eine ganz andere ist, als die, die Du willst.



Also so:



doc.Form = "NameDeinerMaske"

call doc.ComputeWithForm( True, True )





Du setzt erst mal beide Parameter auf "True" und führst dann den Agenten von Hand (am besten in ner Test- Datenbank) durch.



Dann kommt (mit fast 100%iger Sicherheit eine Fehlerbox:



Z.B.:

Fehler in Formel: @Text erwartet



oder:

Zahl erwartet...



Dann musst Du anhand der Meldung rausfinden, welches Feld den Fehler meldet... Das ist nicht immer einfach, weil der Name des Feldes nicht genannt wird, aber wenn er was von Datum schwafelt, dann weiss man, dass man nach nem Datums- Feld schauen muss... wenn er was von Zahl sagt, dann sucht man nach nem Zahlenfeld.



Behebe alle Fehler so lange, bis der ComputeWithForm keine Fehler mehr ausspuckt.



Dann bist Du fertig. Vergiss aber nicht das doc.Save nach dem ComputeWithForm (das kommt ab und an im Eifer des Gefechts vor).



Wenn Du partout nicht drauf kommst, in welchem Feld der Fehler ist, dann bau Dir ein Debug- Feld in Deine Maske:



Feldname "Debug", Typ: Berechnet beim anlegen, Wert: "Ja, ich wurde berechnet".



Dieses Feld stellst Du nun gaaanz oben in Deine Maske, führst Deinen Agenten aus, und debuggst bis nach dem ComputewithForm (wichtig: unbedingt jetzt mit False, False als Parameter arbeiten).



Jetzt prüfst Du im Debugger, ob der Wert gefüllt ist (sollte er eigentlich, ist ja das erste Feld in der Maske und der Refresh arbeitet von oben nach unten, von links nach rechts).



Nun schiebst Du das Feld ein Stück nach unten in Deiner Maske (nie zu weit auf einmal...) und startest wieder... Wird es immer noch berechnet, dann sind alle Felder oberhalb in Ordnung.

Das machst Du so lange, bis das Debug- Feld nach dem ComputeWithForm leer bleibt.



In den Feldern, die seit dem letzten Debug VOR Dein Debug- Feld gewandert sind, ist der Fehler...



Ist zwar aufwändig, aber meist kommt man so zum Ziel.



Nicht ganz so aufwändig ist die andere Methode, einfach das Debug- feld ganz ans Ende der Maske zu stellen, und dann successive alle Felder davor aus der Maske zu löschen (bitte sicherungskopie der Maske nicht vergessen), so lange, bis nach dem ComputeWithForm Dein Debug- Feld korrekt gefüllt ist...



Das letzte Feld, dass Du gelöscht hast, das wars dann (ich mache das immer absatzweise und verfeinere dann die Suche im Betroffenen Absatz).



HTH

Tode

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: