Keine Änderung in der Datenbank möglich

20. Dezember 2005 18:10

Hallo Zusammen
Ich bekomme einen Fehler wenn ich in einem Trigger den Befehl
Record.DELETEALL;
eingebe.
Die Fehlermeldung lautet:
Sie können von diesem Trigger keine Änderungen in der Datenbank durchführen.

Kann mir bitte jemand helfen.
Danke

20. Dezember 2005 18:18

Hallo,
auf welchen Trigger hast du es Ausprobiert?
Welche Tabelle bzw. aus welcher Form?

Ich hatte bisher keine Problem damit, es sei den an der falschen Stelle!

Gruß Mikka

20. Dezember 2005 18:27

Es gibt Trigger, in denen dürfen keine Änderungen an den Daten ausgeführt werden.
Versucht man es trotzdem, erscheint die genannte Fehlermeldung.

Ob Änderungen an den Daten in einem bestimmten Trigger erlaubt sind, kann der Online-Hilfe zu dem Trigger entnommen werden.

Wie Mikka schon schrieb: Wenn du uns den Trigger nennst, dann können wir auch ganz schnell die Antwort dazu liefern, ohne dass lange in der Online-Hilfe gewühlt werden muss.
Wahrscheinlich können wir sogar sagen, in welchen Trigger der Code verschoben werden muss, damit es funktioniert.

20. Dezember 2005 18:28

Hallo
Ich habe den Tabelle 'Sales Line' kopiert. Da gibt es eine Funktion die CalcVatAmountLine heist. Wenn ich jetzt die Statistik (F9) aufrufen will kommt immer der Fehler. Kann mir es auch nicht erklären.
Danke

20. Dezember 2005 19:56

Wichtiger wäre zu wissen, in welchem Trigger du den Code Record.DELETEALL; eingegeben hast.
Z. B. kannst du in dem Trigger OnOpenForm() bzw. OnCloseForm() keine Daten verändern.

21. Dezember 2005 09:52

Ich habe den Befehl in einer von mir selber kreirten Function eingegeben. Diese Function befindet sich auf einer Table.

21. Dezember 2005 10:26

Moin,

mada hat geschrieben:Ich habe den Befehl in einer von mir selber kreirten Function eingegeben. Diese Function befindet sich auf einer Table.


Ja, und in welchem Trigger wird diese deine Funktion denn aufgerufen!?
Lass dir doch nicht alles aus der Nase ziehen....(würde meien Oma jetzt sagen) :wink:

Gruss, Otschko

21. Dezember 2005 10:47

Trigger = CalcVATAmountLines
Table = Sales Line


Code:
 
CalcVATAmountLines(QtyType : ...)

IF "Record SalesHeader"."Currency Code" = '' THEN
  "Record Currency".InitRoundingPrecision
ELSE
  "Record Currency".GET("Record SalesHeader"."Currency Code");

"Record VAT Amount Line".DELETEALL; <= hier krachts


ich hofe es ist genug verständlich.

Gruss

21. Dezember 2005 12:05

Hallo Manda,
fast komplet, aber der Funktionsaufruf fehlt leider noch :wink:


Sorry, ich habe zu schnell gepostet, ich schau mir gerade den Code :oops:
Gruß Mikka
Zuletzt geändert von mikka am 21. Dezember 2005 12:15, insgesamt 1-mal geändert.

21. Dezember 2005 12:13

Hallo mikka

Ich habe glaube ein Brett vor dem Kopf. Kanst du mir das näher erklären bitte.

mada

21. Dezember 2005 12:20

Sorry ich auch :wink:
Ich hate eben zu schnell gepostet, und mir den Code nicht richtig angeschaut.

Mir ist Aufgefallen, das eine Funktion "CalcVATAmountLines(QtyType : ...) " breits Existiert. (Original Code von Navision!)
Die den von dir beschriebenen Code enthält.

Meine Frage: Von wo aus wird der Code Aufgerufen, bzw. was machst Du, das es Knallt? (F9 in welchen Form?)
(Verkauf&Marketing-->Aufträge-->F9?)

Wenn ja, wird die Form ID 402 "Sales Order Statistics" aufgerufen.
Der Funktionsaufruf befindet sich auf demForm - OnAfterGetRecord() Trigger, in einer CASE Abfrage.

So weit so gut. Ich müsste jedoch weitere Infos haben um zu Verstehen wo Dein Problem ist. Was ist den bei deiner Funktion anders?
Gruß Mikka

21. Dezember 2005 15:32

@mika
>>Wenn ja, wird die Form ID 402 "Sales Order Statistics" aufgerufen.
>>Der Funktionsaufruf befindet sich auf demForm - OnAfterGetRecord() >>Trigger, in einer CASE Abfrage.

Es wird kaum das Form 402 sein. mada schreibt ja weiter oben, dass er die Tabelle 'Sales Line' kopiert.

@mada
Was willst Du mit dem Kopieren der Tabelle erreichen?
Sorry, wegen der Frage, aber ich verstehe denn Sinn hinter der ganzen Aktion nicht.

Gruss

21. Dezember 2005 17:08

Hallo martinst,
da hast du möglicherweise Recht.
Da habe ich nicht drüber nachgedacht.
Ich hatte nachgeschaut im CRONUS wie der Original Code aufgebaut ist incl. Aufruf aus der Form!
Gruß Mikka

21. Dezember 2005 17:14

Hallo mikka

Der Fehler muss von einem Aufruf aus einem Form heraus stammen.
Ist ganz typisch.
Der Code sieht mir in Anbetracht der Namensgebung der Variabeln nicht so ganz "sauber" aus.
Aber was soll's, ist vermutlich Geschmackssache. :wink:

Gruss
Martin

19. Januar 2006 11:53

hallo

@martinst
Auf die Frage warum ich das mache. Ich muss eine kleine Auftragsverwaltung schreiben. Da habe ich mir gedacht ich kopiere die orginale und ändere sie dementsprechend ab.

Zu meinem Problem. Es ist alles wieder in Ordnung. Ich musste die Tabelle Temporär anlegen.

Danke allen für die Hilfe