0

Bildschirmanzeige im Funktionsfeld ist nicht aktuell

Guten Tag zusammen.

Folgendes Problem bekomme ich nicht gelöst und bitte um Hilfe. Bin noch nicht so wirklich gut mit Ninox vertraut und vielleicht kann mir einer der 'alten Ninox Hasen' hier auf die Sprünge helfen?

1) Das Feld in 'Lagerbestand' errechnet sich aus

'Bestellmengen geliefert' - 'Auftrag erledigt'

 

2) Das Feld 'Auftrag erledig' füllt sich aus

let aa := 'Produkt Nr.';
sum((select Rechnungspositionen where substr(AufNr, 0, 2) = "AF" and ArtNr = aa).Menge)

 

3) Das Feld 'Bestellmengen geliefert' füllt sich aus
sum('Einkäufe'.Geliefert)

 

Die Anzeige im Lagerbestand ignoriert 'Auftrag erledigt' und zeigt die Liefermenge an!?

Foto-2021.11.22_003_

 

Füge ich testhalber das untere Feld Berechnung ein, mit der selben Formel, wie für Bestellung, so stellt sich in beiden Feldern das richtige Ergebnis dar.

Foto-2021.11.22_004_

 

Jedoch beim nächsten öffnen der Tabelle stimmt es wieder nicht?

Was mache ich falsch oder noch besser, was muss ich ändern?
Vielen Dank für Eure Hilfe im Voraus
Gruß

Siegfried

8 Antworten

null
    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Siegfried. Hier mal ein paar Anregungen, wonach Du schauen kannst. Eventuell werden Trigger nach Änderung aktiviert, z.B. beim Öffnen oder Schließen der Tabelle, oder beim Verlassen eines Felds nach der Eingabe. Was ist der letzte Vorgang, vor der Änderung des Werts?

    Wie sieht der genaue Code im Feld Lagerbestand aus - man sieht ja, dass es formatierter Text ist. Wie ist der Code im Feld Berechnung? Vielleicht hilft es Dir, mir oder jemandem, der hier mitliest. Gruß Mirko

    • SCKH Beratungs- & Service GmbH
    • Siegfried_Hoffmann
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Mirko,

    Danke für Deine Antwort.

    Hier sind die Inhalte von Lagerbestand und Berechnung. Beide sind identisch. Das (für mich) verrückte ist, das ich im Lagerbestand bei Aufrufen des Formulars einen Wert sehe, der der gelieferten Menge entspricht, aber von dem die ereldigte Auftragsmenge nicht subtrahiert ist. Erzeuge ich nun in dem Formular ein neues Feld (Berechnung) und gebe dort die gleiche Formel ein, so rechnet er richtig und aktualisiert zeitgleich auch das Feld im Lagerbestand.

     

    Foto-2021.11.22_005_

    Foto-2021.11.22_006_

    Gruß Siegfried

    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Sie sind nur scheinbar gleich. Im Feld Lagerbestand steht das Format "Textbox". Damit wird die Zahl zum Text und kann für weitere Rechnungen nicht mehr benutzt werden. Lösche mal zum Test den Stil in den Einstellungen. Den Erfolg dieser Maßnahme siehst Du daran, das der Wert rechts im Feld steht und wieder schwarz ist.

    Was ist mit den Triggern? Gibt es welche in der Tabelleneinstellung?

    Dann wäre noch gut zu wissen, mit welchem Code in der Tabelle Lagerbestand die Bestände aktualisert werden und wo dieser steht.

    • SCKH Beratungs- & Service GmbH
    • Siegfried_Hoffmann
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Guten Morgen Mirko,

    Danke für Deinen Hinweis. (hatte ich nicht beachtet). Habe die Formatierung aus dem Feld genommen. Das ändert allerdings nichts am bisherigen Ergebnis.

    Zum Code in der Tabelle:
    Diese nethält lediglich den Code bei neuem Datensatz zur Erzeugung der Artikel-Nummer:

    let myLast := last(((select '3_Artikel') order by 'Produkt Nr.').'Produkt Nr.');
    let myNum := number(substr(myLast, 5)) + 1;
    'Produkt Nr.' := "PrNo-" + format(myNum, "00000")

    Es wird für mich allerdings noch kurioser:
    In der Tabellenansicht werden die Ergebnisse rechnerisch korrekt angezeigt. Allerdinmgs fehlt bei dem aufgefallenen Artikel Sunpower395 in der Tabellenansicht der Werte-Eintrag, während er in der Formularansicht sichtbar und richtig ist!?

    Foto-2021.11.23_001_

     

    Foto-2021.11.23_002_

     

    Zur Berechnung der Ergebisse in den jeweiligen Feldern liegt die Formel jeweils im Berechnungsfeld:

    Zum Beispiel für:
    'Auftrag erledigt'

    let aa := 'Produkt Nr.';
    sum((select Rechnungspositionen where substr(AufNr, 0, 2) = "AF" and ArtNr = aa).Menge)

     

    Für Lagerbestand:
    'Bestellmengen geliefert' - 'Auftrag erledigt'

    Für 'Bestellmengen geliefert'
    sum('Einkäufe'.Geliefert)

     

    u.s.w.

    Kannst Du mir mit diesen Angaben vielleicht einen weiteren Tip geben?
    Gruß
    Siggi

    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Was steht in dem Filter in der Tabellenansicht bei "Auftrag erledigt".

    Lösche den Code im Feld "Lagerbestand". Schliesse das Feld und öffne es wieder und schreibe per Aufruf aus der Seitenleiste den Code neu hinein. Klingt skurril hat mir aber bei solchen Fällen schon geholfen.

    • SCKH Beratungs- & Service GmbH
    • Siegfried_Hoffmann
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Was verstehe ich unter Aufruf aus der Seitenleiste genau?

    • SCKH Beratungs- & Service GmbH
    • Siegfried_Hoffmann
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Der Filter war: Nur Zeilen anzeigen in denen nicht nur Nullen stehen

    • SCKH Beratungs- & Service GmbH
    • Siegfried_Hoffmann
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Da ich Euch mit meinem Problem auch nicht unendlich auf den Zeiger gehen möchte, habe ich zunächst provisorisch Formular und Tabelle mit neuen Feldern aufgebaut. In diesem Fall Zahlenfelder.
    Die ich über Button Klick neu berechnen lasse. Soweit bisher geprüft, stimmen die Ergebnisse jetzt. Nachteil: Wenn man sicher sein will, muss man immer den Button betätigen und dann 'orgelt' es eine Weile.

    Doch bin hierhin erst einmal herzlichen Dank an Dich, Mirko.
    Wenn Dir oder Euch noch was hilfreiches einfällt, bitte melden.
    Einen schönen Gruss aus dem Düsseldorf Raum
    Siggi

     

    Foto-2021.11.23_003_

     

    Foto-2021.11.23_004_

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 8Antworten
  • 234Ansichten