[Gelöst] C/FRONT fieldNo für ID_

28. Juli 2009 14:28

Hallo Forum,

ich versuche gerade per C/FRONT auf die Customer Table zuzugreifen, wenn ich dann aber die Nummer für das Feld ID holen möchte um die KundenID zu vergrleichen sagt mir der debugger folgendes:
Code:
Error Code: 2687088 - Error Message: Sie dürfen nicht 'id_' in FieldNo eingeben. Der Cursor befindet sich vor dem ungültigen Zeichen.

Hab es mir "id", "id_", "ID" und "Id_" probiert immer das selbe. Hab ich über das API evtl. keine Berechtigung die ID zu lesen ??? Wäre ja ziemlich d*****h :-)

Ich möchte die ID vergleichen und dann wenn die ID matcht soll der Datensatz durchgelaufen werden und alle Werte auf unterschiede geprüft werden und evtl. nen Update durchgeführt werden.

Mit folgendem Code versuch ich die FieldNo zu bekommen:
Code:
int FiledNoID = CFrontDotNet.Instance.FieldNo(CurrentTable, "id_");

und bei diesem Record dann per
Code:
CFrontDotNet.Instance.InitRecord(CurrentTable, CurrentRecord);
CFrontDotNet.Instance.StringToField(CurrentTable, CurrentRecord, FieldNoName, "test");

Die Eigenschaften zu ändern.

Hat jemand ne Idee wie ich die mir den Datensatz mit der ID aufrufe?

Nochmal zusammenfassend mein Vorgehen:
- hole nummer von Feld ID
- setze Filter mit ID auf Feld ID
- suche Zeile in der Filter matched
- setze Zeiger auf gefundenen Rekord
- schreibe in aktuellen Record folgende Werte


Sollte doch gehen oder hab ich nen falschen Ansatz?


Gruß
René
Zuletzt geändert von kockiren am 29. Juli 2009 11:29, insgesamt 1-mal geändert.

Re: C/FRONT fieldNo für ID_

28. Juli 2009 23:02

Hallo René,

das Feld id_ gibt es in Tabelle Customer nicht. Der Primärschlüssel der Customer-Tabelle ist das Feld 'No.'.

Kleiner Tipp:
1. Ich kann nur davon abraten die Tabelle Customer per C/Front zu ändern. Die meisten Felder sind mit Validate-Triggern versehen, die bei C/Front nicht ausgeführt werden, was zu undefinierten Zuständen in NAV führen kann. Wie ich schon in einem frühreren Beitrag ausführte, sollte man auf diese Tabellen nur lesend zugreifen. Wenn man Daten in NAV ändern oder einfügen will sollte man sehr genau die NAV- Programme und NAV-Datenstruktur kennen, bevor man es wagt in den Standardtabellen zu modifizieren. Mit C/Front sollte nur in Tabellen geschrieben werden, die keine Trigger (weder Feld- noch Tabellentrigger) enthalten, da sie von C/Front nicht bedient werden.
2. es ist sehr viel einfacher mit C/Front zu arbeiten, wenn man NAV Programmmierung und Datenstruktur kennt bevor man mit C/Front arbeitet.
3. Ein weiterer Grund möglichst auf große Programme in C/Front zu verzichten ist, dass bei Programm- oder Datenstrukturänderungen in NAV auch das C/Front-Programm angepasst werden muss.

Gruß, Fiddi

Re: C/FRONT fieldNo für ID_

29. Juli 2009 10:09

Hey Fiddi,

danke das wars schon. Ich hab in der DB nachgeschaut und da stand No_ drin deswegen bin ich da so rangegangen. Gut also wird das irgendwo gemappt. Aber nun gehts ja. Hab jetzt nur noch das Problem mit dem Modify.

Zu deinen Tipps. Das ist gut zu wissen das man mit C/FRONT die Trigger nicht anstoßen kann. Wieso sind die Trigger denn dann nicht in der DB hinterlegt, dann könnte man doch besser entwickeln oder hab ich da auch wieder nen Gedankenhacken :-)
Ich würde die Sachen dennoch gern mit C/FRONT programmieren, da ich damit meine Verständniss für C/FRONT und Navision detailierter vorwärts bringen kann. Ich möchte das auch nicht Produktiv einsetzen, da stell ich mit ne Lösung über nen Dataport vor. Da sich die Daten ja nicht oft ändern.

Gruß
René

Re: C/FRONT fieldNo für ID_

29. Juli 2009 10:20

Hallo René,

wenn du gut mit C/AL umgehen kannst, dann weißt du eigentlich auch wie du in C/Front programmieren musst. Es gibt zwar noch ein paar Erweiterungen (Transaktionen,..), aber im großen und ganzen funktioniert C/Front genauso wie C/AL.

Außerdem glaube ich, das C/Front gegenüber WEB-Services und NAS mit XML immer weiter ins Hintertreffen gerät, da diese wesentlich mehr Möglichkeiten bieten, und nicht die Einschränkungen haben, die C/Front hat.

Gruß, Fiddi

Re: C/FRONT fieldNo für ID_

29. Juli 2009 10:34

Hey Fiddi,

danke für die Info, ich würd mich ja gern in C/AL einarbeiten, aber ich habe in der Doku nur nen PDF mit C/FRONT gefunden :-) und ausserdem haben wir keine Entwicklerlizenz und dann kann ich ja glaube ich nicht auf C/AL zugreifen oder hab ich das falsch verstanden?

Gruß
René

Re: C/FRONT fieldNo für ID_

29. Juli 2009 11:04

Es gibt auch noch andere Kunden- Lizenzerweiterungen, die es erlauben zumindest Teile der Objekte zu ändern bzw. neu zu erstellen. (Table/report Designer, Application Designer). Aber ohne den Zugriff auf die C/AL-Objekte mit denen du erfährst, was die Feld- und Tabellentriger auf der entsprechende Tabelle veranstalten, richtest du mit C/Front beim Schreiben nur Chaos an.

Gruß, Fiddi

Re: C/FRONT fieldNo für ID_

29. Juli 2009 11:07

Okay, das klingt alles Plausibel wir werden uns wohl eine Erweiterung holen um mit C/AL zu arbeiten, scheint der bessere Weg zu sein. Aber dennoch wurmt es mich :-)

Gruß
René