WebServices - Create

6. Februar 2012 13:28

Hallo zusammen,

ich bin absoluter Neuling auf dem Gebiet dynamics NAV und WebServices. Aktuell "teste" ich mehr oder weniger ein bischen herum und versuche erste Ergebnisse und Zusammenhänge zu verstehen. Das Forum konnte mir bei vielen Fragestellung bereits hilfreiche Informationen liefern.
Jetzt bin ich jedoch an einer Stelle an der ich absolut nicht weiter komme und auch nichts weiter habe finden können.

Folgendes habe ich programmiert:
Code:

            Time_Service time_service = new Time_Service();
            Time time = new Time();
            time_service.UseDefaultCredentials = true;
           
            time.Employee_No = "DN";
            time_service.Create(ref time);



Time_Service, bzw. Time bezieht sich auf die Page "5212 Absence Registration". Hintergrund sollte demnach sein einen neuen Datensatz einzufügen. Leider erhalte ich folgende Meldung:
Employee Absence Entry No. '0' does not exist.
Die Tabelle beginnt, wenn man sich die SQL-DB anschaut bei Entry No. 1. Deshalb wird an dieser Stelle laut meinem Verständnis die Fehlermeldung auftauchen. Andererseits weiß ich nicht wie ich somit einen neuen Datensatz einpflegen kann???

Selbes Scenario funktioniert nach durcharbeiten eines Tutorials für die Tabelle der Debitoren problemlos. Hier wird automatisch eine neue Deb-Nr. vergeben und über *.Create ein neuer Datensatz eingefügt.

Ich hoffe mein Problem ist einigermaßen verständlich. Hat jemand von den Profis einen Hinweis für mich in welche Richtung ich weiter denken muss? Stehe derzeit voll auf'm Schlauch. :-(

Gruß, Dom

Re: WebServices - Create

6. Februar 2012 13:39

Hi,

ich vermute der OnInsertRecord Trigger wird aufgerufen beim Anlegen eines neuen Datensatzes.

Code:
EXIT(Employee.GET("Employee No."));


Anscheinend hat er hier den Datensatz noch nicht (Page Properties abgleichen).

Vielleicht mit dem folgenden Befehl abfangen, und sehen ob es daran liegt.
Code:
if not Isservicetier then
 EXIT(Employee.GET("Employee No."));




Gruß
Aydin

Re: WebServices - Create

6. Februar 2012 19:50

Hi,

Entry-No ist der Primary Key der Tabelle. NAV hat keinen Standardwert in derTabelle hierfür definiert und auch kein Autoincrement. In dem Code oben wird das Feld Entry-No aber nicht belegt.

Für mich sieht das nach einem ähnlichen Problem wie mit meiner Manufacturer-Tabelle aus (http://www.msdynamics.de/viewtopic.php?f=40&t=15063). Funktioniert es wenn Du explizit einen (gültigen) Wert für Entry-No angibst?

Falls das geht, mußt Du aber trotzdem eine Lösung finden die nächste gültige Nummer von NAV zu beziehen.

Volker

Re: WebServices - Create

7. Februar 2012 11:53

...also...

@Aydin:
Besten Dank. Damit hat es schonmal funktioniert. Soviel zur guten Nachricht... :-) Jetzt muss ich nur noch verstehen was
Code:
if not Isservicetier then
EXIT(Employee.GET("Employee No."));

genau macht. Aber da bin ich noch am lesen. Also hoffe ich, das ich dahinter komme. Wenn nicht melde ich mich einfach nochmal.

@Volker:
Entry No. = Primary Key war mir bewusst. Nur habe ich bisher noch keine Idee gefunden den Wert anzusprechen. Bin allerdings auch noch nicht dazu gekommen deinen Post anzusehen.

Wenn ich genaueres rausgefunden habe(n sollte), poste ich das nochmal. Vielen Dank schonmal. Dann versuche ich mal weiter.

Gruß,
Dom