Wiedervorlage-Liste

TKirchmann

Mitglied
Hallo,

ich habe eine eigene Tabelle IQAufgaben angelegt.
Diese beinhaltet den Primärschlüssel (integer) AufgabeID, das varchar Feld Rückruf, das varchar Feld Aufgabe, das date Feld Erstelldatum und das boole Feld IstErledigt. Die Tabelle inkl. aller Felder wird auch schon vom AppDesigner erkannt.

Nun möchte ich eine Lösung bauen die so aussieht, dass man im Regiezentrum irgendwo (z.B. bei weitere Stammdaten) eine Oberfläche hat, wo man einen Rückruf oder eine Aufgabe anlegen kann.

Leider habe ich ständig Probleme mit dem Primärschlüssel. Irgendwie zählt der nicht automatisch hoch und ich bekomme in meiner Lösung dauernd Fehler.

Eventuell kann mir jemand nochmal erklären wie genau ich die Lösung bauen muss, damit das tut?
Optimal wäre es wenn alle Datensätze die im Feld IstErledigt einen Haken haben automatisch in eine weitere Liste, die man als Detail-Element benutzt transferiert werden.

Vielen Dank und schöne Grüße
 
Die Fehlermeldung sieht im Moment so aus:

wzuxek5x.png


Das bedeutet für mich quasi, dass das Feld AufgabeID keinen Wert drinstehen hat. Ich habe es überall in der Lösung auf Integer stehen und beim Datensatz steht "Primärschlüsseltyp 1: Automatisch hochgezählt".

Was mache ich falsch?
 
Eine Tabelle mit Spalten ID (Inkrement), Mandant und Gruppe (varchar, ist aber egal).
1. Datenquelle mit Schlüsselfeld 1 = ID
2. Datensatz mit Mandanten Tabelle 1 = Mandant, Primärschlüsselfeld 1 = ID, Primärschlüsseltyp = Automatisch hochzählen
3. Datensatzfeld ID mit Pflichtfeld = True
4. Kontextmenü mit Kontextmenüeintrag Neu mit Position > 0 und Funktionsaufruf DatensatzNeu.Sage.System
5. Listen-Element mit Datenquelle aus 1 mit für Wawi? aktivieren
6. Data-Edit-Element mit Kontextmenü aus 4 und Navigationselement aus 5, Verwendungszweck Stammdatendialog für einen Datensatz, Primärschlüssel 1 für Datensatz = 1, im Regiezentrum verfügbar? aktivieren
7. Data-Edit-Element-Feld ID mit Sichtbarkeit = versteckt

Etwas unklar ist, dass die Meldung im Dialog angezeigt wird. Systemfehler werden normalerweise im Hinweisstack angezeigt.
 
Danke für die Erklärung. Habe alles Schritt für Schritt so durchgeführt und erhalte diese Fehlermeldung:

9tv8k76z.png


Weiterhin stellt sich mir die Frage wie das mit dem Ausfüllen des Mandants und der Gruppe läuft?
Muss ich im Mandantenfeld bei jeder Neuanlage eines Datensatzes dann den smallint - Wert des Mandanten eintragen? Also quasi jedes Mal '123' o.Ä.?
Was muss im Gruppenfeld eingetragen werden? Oder kann man das leer lassen?
Ich würde Gruppe und Mandant dann auch gerne verstecken, die sind ja eigentlich nicht zur Anzeige benötigt.
 
Die Tabellendefinition in #3 ist nur ein Beispiel von mir, um zu zeigen, was in den Metadaten eingestellt werden muss.
Die Spalte Mandant brauchen Sie nicht, falls doch, muss es im Datensatz auf Schreibschutz?=ja stehen. Durch die Hinterlegung der Spalte für die MandantenId übernimmt das System die Behandlung der MandantenId.
Was es mit der Gruppe bei Ihnen auf sich hat, weiß ich nicht. Felder verstecken können Sie natürlich.
 
Die Tabellendefinition in #3 ist nur ein Beispiel von mir, um zu zeigen, was in den Metadaten eingestellt werden muss.
Die Spalte Mandant brauchen Sie nicht, falls doch, muss es im Datensatz auf Schreibschutz?=ja stehen. Durch die Hinterlegung der Spalte für die MandantenId übernimmt das System die Behandlung der MandantenId.
Was es mit der Gruppe bei Ihnen auf sich hat, weiß ich nicht. Felder verstecken können Sie natürlich.

Ich glaube ich hatte Sie falsch verstanden, Entschuldigung. Das Feld Gruppe habe ich wieder gelöscht - beim Feld Mandant den Schreibschutz hinzugefügt.
Bekomme leider immer noch eine Fehlermeldung bei der Neuanlage eines Datensatzes.

Der TraceLogManager spuckt mir folgendes aus:

DataRecordHandler/Create: Sagede.Core.Data.DataActionResultException: Eine Ausnahme vom Typ "Sagede.Core.Data.DataActionResultException" wurde ausgelöst.
bei Sagede.Shared.RealTimeData.Core.Handlers.DataRecordHandler.CreateInternal(DataRecord definition, DataContainer data, Boolean updateIfExist, DataRecordOperationContext operationContext, DataActionResultMessageContext dataContext, Dictionary`2 tanForeignKeys, DataActionResultMessages messages, Boolean& doValidationOnly, DataContainer parentReread)
bei Sagede.Shared.RealTimeData.Core.Handlers.DataRecordHandler.CreateInternal(DataRecord definition, DataContainer data, Boolean updateIfExist, Boolean beginTransaction, DataRecordOperationContext operationContext, DataActionResultMessageContext dataContext, Dictionary`2 tanForeignKeys, DataActionResultMessages messages, Boolean& doValidationOnly, DataContainer parentReread)
 
Die Meldung kommt (vermutlich) aus dem Bereich des Systems wo serialisiert/deserialisiert wird. Da kann ich leider auch nicht wirklich etwas zu sagen. Allerdings hätte ich noch einen Tipp: haben Sie ein Kontextmenü mit einem Kontextmenüeintrag Neu und Funktionsaufruf DatensatzNeu.Sage.System angelegt?
 
Die Meldung kommt (vermutlich) aus dem Bereich des Systems wo serialisiert/deserialisiert wird. Da kann ich leider auch nicht wirklich etwas zu sagen. Allerdings hätte ich noch einen Tipp: haben Sie ein Kontextmenü mit einem Kontextmenüeintrag Neu und Funktionsaufruf DatensatzNeu.Sage.System angelegt?

Ja, das habe ich.

Das Kontextmenü heißt IQAufgaben, hat den Kontextmenüeintrag Neu und den Funktionsaufruf DatensatzNeu.Sage.System.

Komischerweise sagt mir der AppDesigner immer beim Kontextmenü "Die Verwendung des Elements wurde nicht angegeben", obwohl ich im Kontextmenüeintrag für Wawi? einen Haken gesetzt habe.
Im Komtextmenü selbst kann man ja nur Anhängen an anderes Kontextmenü, da gibt es den Haken für Wawi? ja gar nicht.
 
Zuletzt bearbeitet:
Dann haben Sie in Lizenzierung z.B. "für Wawi?" vergessen zu aktivieren. Dann ist der Eintrag am Client nicht vorhanden.
 
Haben Sie im Datensatz möglicherweise das ID-Feld auf Schreibschutz gesetzt?

Falls ja, den Schreibschutz bitte einmal entfernen, da sonst der auto-increment Wert nicht geschrieben werden kann und somit das Speichern in der Tabelle verhindert wird.
 
Haben Sie im Datensatz möglicherweise das ID-Feld auf Schreibschutz gesetzt?

Falls ja, den Schreibschutz bitte einmal entfernen, da sonst der auto-increment Wert nicht geschrieben werden kann und somit das Speichern in der Tabelle verhindert wird.

Ich hatte in der Tat im Feld Mandant einen Schreibschutz, im Feld ID allerdings nicht.
Nach Entfernen des Schreibschutzes im Feld Mandant hat sich leider nichts geändert.
 
Mir fällt gerade noch auf, dass der Datensatz bei "RowVersion-Feld Tabelle 1" einen Wert erwartet. Dort habe ich IQAufgaben.Rowversion eingetragen. Dieses Feld gibt es allerdings in der Tabelle gar nicht.

Macht das eventuell Probleme?
 
Zum Mandantenfeld: entweder überhaupt nicht im Datensatz hinterlegen oder mit Schreibschutz. Das System hängt an die Insert und Update-Befehle automatisch das Mandantenfeld (wenn es denn im Datensatz angegeben wurde).

Zu Rowversion: ja, das kann das Problem sein. Sie haben ein Feld hinterlegt, welches es in Ihrer Tabelle nicht gibt, oder einen anderen Namen (Timestamp) vom Typ Rowversion hat. Schauen Sie doch mal im Createskript des Standards (DBAdmin/Create) nach. Oder schauen Sie sich einen Datensatz des Standards an (z.B. recArtikelstamm.Sage.Wawi) und vergleichen.
 
Zurück
Oben