[gelöst] Codeunit zum Aktualisieren der Tabellen

Bild Microsoft Dynamics NAV 3.xx
(ehem. Navision Attain)

[gelöst] Codeunit zum Aktualisieren der Tabellen

Beitragvon Yvi » 18. November 2009 14:27

Hallo Zusammen,

und zwar hab ich da ein Problem und ich hoffe ihr könnt mir da weiterhelfen.

Und zwar wĂĽrde ich gerne meine Tabellen, also z.B. die Value Entry aktualisieren.

Das heiĂźt eine Codeunit machen die in die Value Entry schaut. Wenn dort eine Debitorpreisgruppe leer ist soll er schauen
welcher Debitor das ist, dann anhand des Debitors in der Customer Tabelle schauen ob fĂĽr diesen Debitor eine Preisgruppe hinterlegt ist.
Wenn ja soll er diese in die bestimmte Zeile in der Value Entry schreiben. Und das Ganze soll er mit jeder Zeile machen.

Nur leider kann ich das Ganze nicht in funktionierenden Code umsetzen.... Habt ihr sowas vielleicht schon mal gemacht?

Dankeschön & Gruß!!!
Zuletzt geändert von Yvi am 9. Dezember 2009 17:43, insgesamt 1-mal geändert.
Yvi
 
Beiträge: 97
Registriert: 17. Dezember 2007 15:26

Re: Codeunit zum Aktualisieren der Tabellen

Beitragvon fiddi » 18. November 2009 14:44

Hallo Yvi,

hast du eine Solution-Devoloper Lizenz? Falls nein, hast du ein Zugriffs Problem, das du ohne euren Partner nicht lösen kannst.

Ansonsten würde ich das über einen Report lösen, der über die Value- Entry läuft, im OnAftergetrecord einen GET auf Customer macht, die Preisgruppe in das Feld einträgt, und einen modify macht.

GruĂź, Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Codeunit zum Aktualisieren der Tabellen

Beitragvon Yvi » 18. November 2009 15:01

Achso, ja dann versuchen wir das ĂĽber den Report.

Also einen neuen Report, brauch ich da die beiden Tabellen Value Entry und Customer? Keine Sections, oder?
Und ich mach den ganzen Code im OnAfterGetRecord? Und vorallem wie soll der Code in etwa aussehen?
Genau da ist nämlich das Problem, ich kann das irgendwie noch nicht umsetzen!?

Fragen ĂĽber Fragen.... :-)

Dankeschön für die Hilfe!!!

GruĂź
Yvi
 
Beiträge: 97
Registriert: 17. Dezember 2007 15:26

Re: Codeunit zum Aktualisieren der Tabellen

Beitragvon fiddi » 18. November 2009 15:07

noch mal die Frage nach der Lizenz, du kannst die Tabelle nicht ändern, wenn du keinen Zugriff auf diese hast. Zweitens, wenn du nicht weist was du tust in der DB, dann machst du u.U. eine der wichtigsten Tabellen im System kaputt.

GruĂź, Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Codeunit zum Aktualisieren der Tabellen

Beitragvon Yvi » 18. November 2009 15:16

Doch, ich kann die Tabelle schon ändern!
Ich hab nur immer ein wenig Schwierigkeiten das Ganze in einen laufenden Code umzusetzen!
Und ich teste das ja alles vorher in einer Testdatenbank... :-)
Yvi
 
Beiträge: 97
Registriert: 17. Dezember 2007 15:26

Re: Codeunit zum Aktualisieren der Tabellen

Beitragvon mikka » 18. November 2009 16:19

Ich habe mir auch schon mal die Wertposten "zerschossen", war kein Spass :-(
Und ich habe vorher auch Tests auf einer Lokalen-DB gemacht, aber bei mehren millionen Datensätzen (wo nur 50 - 100 falsch waren), fällt das ganze nicht sofort auf (Gottlob hatte ich eine Sicherung)! Also bedenke was du tust!

Du benötigst keine Sections, der Report kann auf "ProcessingOnly" stehen.
Nur ein DataItem "ValueEntry", den Filter setzten auf "Source Type = Customer" damit nur die Debitorenposten angezeigt werden.
Dann eine Variable vom Typ Record deklarieren auf die Tabelle Customer.

Wie Fiddi schreibt, auf dem OnAfterGetRecord Trigger ein Get auf Customer machen (ĂĽber das Feld ValueEntry."Source No."). Jetztz nur noch den Feldwert zuweisen und Modify.

Wie der Zugriff per GET erfolgen kann steht sehr schön geschrieben, hier:
Records: GET SETFILTER FIND etc.
GruĂź, Mikka

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
mikka
Microsoft Partner
Microsoft Partner
 
Beiträge: 1832
Registriert: 26. September 2005 11:54
Wohnort: Bremen
Realer Name: Michael
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.7, 4, 5, 2009/13/15

Re: Codeunit zum Aktualisieren der Tabellen

Beitragvon Yvi » 19. November 2009 17:13

Ok, das schaut doch schon mal gut aus.... Das haben wir jetzt alles mal so gemacht.

Unser Code sieht momentan so aus:

Code: Alles auswählen
Debitor.GET("No.","Customer Price Group");
IF "Customer Price Group" = '' THEN
     "Customer Price Group" := Debitor."Customer Price Group";
MODIFY;


Jetzt bekommen wir aber den Fehler: "Es wurden zu viele Schlüsselfelder spezifiziert, daher kann Debitor nicht geöffnet werden.
Die Anzahl der Primärschlüsselfelder ist 1." Der Primärschlüssel in der Tabelle Value Entry ist: Entry No. Und der Customer Tabelle: No.

Irgendwo mĂĽssen wir dem ja auch noch sagen das die Source No. in der Value Entry die No. aus der Debitortabelle ist!?
Bisher weiĂź der ja noch gar nicht bei welchem Debitor er nach der Debitorpresigruppe schauen soll, oder?
Yvi
 
Beiträge: 97
Registriert: 17. Dezember 2007 15:26

Re: Codeunit zum Aktualisieren der Tabellen

Beitragvon Natalie » 19. November 2009 17:20

So ist zumindest das GET syntaktich richtig:

Code: Alles auswählen
Debitor.GET("No");
IF "Customer Price Group" = '' THEN
     "Customer Price Group" := Debitor."Customer Price Group";
MODIFY;

Bitte lies folgenden Artikel :greenarrow: viewtopic.php?p=40410#p40410 Abschnitt GET.
Und wenn der Inhalt nicht verständlich genug war, dann sage mir bitte, wo es hakt :-)
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Codeunit zum Aktualisieren der Tabellen

Beitragvon Yvi » 19. November 2009 17:25

Hallo,

danke schon mal... :-)

Jetzt bringt er folgenden Fehler: "Debitor Nr. '' existiert nicht."

Wie gesagt, weiĂź der denn schon von welchem Debitor er sich die Debitorpreisgruppe holen muss?
Der weiĂź ja nicht das Source No. aus der Value Entry gleich No. aus der Customer Tabelle ist, oder?
Yvi
 
Beiträge: 97
Registriert: 17. Dezember 2007 15:26

Re: Codeunit zum Aktualisieren der Tabellen

Beitragvon Natalie » 19. November 2009 17:29

Es gibt in Value Entry die Felder Source Type und Source No.
Nur wenn Source Type = Customer ist, nimmst du Debitorennr. = Source No.
Also filterst du schon mal am besten die Datensätze auf Source Type = Customer.
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Codeunit zum Aktualisieren der Tabellen

Beitragvon Yvi » 19. November 2009 17:32

Ja genau, das haben wir. Einen Filter: Source Type = Customer.
Und dadurch weiĂź er schon das Source No. gleich No. aus der Debitortabelle ist?

Was hat das dann mit dem Fehler auf sich?
Yvi
 
Beiträge: 97
Registriert: 17. Dezember 2007 15:26

Re: Codeunit zum Aktualisieren der Tabellen

Beitragvon Natalie » 19. November 2009 18:48

Yvi hat geschrieben:Ja genau, das haben wir. Einen Filter: Source Type = Customer.
Und dadurch weiĂź er schon das Source No. gleich No. aus der Debitortabelle ist?

Anders formuliert: Ohne Source Type wĂĽsste NIEMAND, was das in der Source No. ĂĽberhaupt fĂĽr eine Nummer ist ;-)
Ist ĂĽbrigens auch genauso in der TableRelation des Feldes Source No. definiert, falls dir das was sagt.

Was hat das dann mit dem Fehler auf sich?

Im dem Datensatz, in dem du standest (bzw. standest du ĂĽberhaupt schon auf einem??), war das Feld "No." (des Value Entrys) leer, also hat er nach dem Debitor mit der Nummer = leer gesucht - und nicht gefunden (Fehlermeldung).
Aber wie gesagt, er muss das Feld "Source No." nehmen.
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: [gelöst] Codeunit zum Aktualisieren der Tabellen

Beitragvon Yvi » 9. Dezember 2009 17:45

Hallo,

wir haben das ganze jetzt doch in eine Codeunit gepackt und noch ein bisschen probiert, jetzt klappts.

Dankeschön für eure Hilfe!:-)

GruĂź!
Yvi
 
Beiträge: 97
Registriert: 17. Dezember 2007 15:26


ZurĂĽck zu NAV 3.xx

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast