[gelöst] Herausfinden welches Feld ausgewählt ist.

22. August 2011 12:38

Hallo,

gibt es in Navision eine Möglichkeit/Funktion, welche feststellt, welche Feldreihe in einer im RTC geöffneten Page vom Typ liste gerade aktiv ist?


Grüße

Sky
Zuletzt geändert von Sky am 29. August 2011 08:41, insgesamt 1-mal geändert.

Re: Herausfinden welches Feld ausgewählt ist.

22. August 2011 16:25

Hi,

glaube nicht ,dass es so eine Funkion im RTC gibt.
Unter CurrPage.'' gibt es nicht viele Funktionen oder Properties:-(


Was willst du denn damit anstellen?


Gruß
Aydin

Re: Herausfinden welches Feld ausgewählt ist.

22. August 2011 16:30

Auf dieser Page werden verschiedene Artikel gelistet. Oben auf der Page ist ein Button, der auf Knopfdruck einen Artikel kopiert. Aktuell wird jedoch immer der erste Artikel kopiert. Ich hätte aber gerne so, dass nur der vom Benutzer ausgewählte Artikel kopiert wird.


Grüße

Sky

Re: Herausfinden welches Feld ausgewählt ist.

22. August 2011 16:43

Arbeite doch mit einer globalen Variable.
Wenn du ein Feld verlässt dann aktualisier die Variable mit dem Feldnamen.

Am ende fragst du die Variable ab und nimmst von dem aktuellen Datensatz das entsprechende Feld was in der Variable steht.

So was in der Art?

Re: Herausfinden welches Feld ausgewählt ist.

22. August 2011 20:42

Hallo in die Runde,

... mal ne doofe Frage: wieso sollte currfieldno() nicht mehr gehen? Es gibt im Qualltext (Beispiel: Table 37) keine Unterscheidung zwischen RTC und CC. Also wird das wohl gehen. Dann hat man in Rec die aktuelle Zeile, und in Rec.Currfieldno() die aktuelle Spalte.

LG Jens

Re: Herausfinden welches Feld ausgewählt ist.

23. August 2011 08:20

Erstmal Danke für die bisherigen Beiträge.
Aydin könntest du mir deine Idee mit der Globalen Variable vllt. nochmal etwas genauer erklären?

Mein aktueller Ansatz war, alle Felder zu prüfen um herauszufinden welches aktiv ist:

Name DataType Subtype Length
Description1 Record Vendor Item
Description FieldRef
Desc RecordRef

Code:

Desc.OPEN(50000);
Description := Desc.FIELD(10);


REPEAT
IF(Description.ACTIVE=TRUE)  THEN BEGIN

[...]
Else
[...]

UNTIL Description1.NEXT = 0;




Grüße

Sky

Re: Herausfinden welches Feld ausgewählt ist.

23. August 2011 09:36

Hallo Sky,


leider funktioniert der Ansatz mit der globalen Variable nicht im RTC, Sorry.
Ich dachte es gibt wie im Classic den "OnActivate Trigger", da hättest du immer den globalen Variable mit dem Feldnamen überschreiben können und am Ende in deiner Kopie Funktion diese Variable auslesen.
Habe s mal gleich mit dem OnValidate Trigger im RTC ausprobiert, dieser wird aber nur ausgeführt wenn eine Änderung stattfindet.

Dein Ansatz hört sich aber gut an:-) Ich würde bei diesem Ansatz bleiben.

Und die Funktion "CurrfieldNo" gibts die überhaupt? Zumindest bekomme ich eine Fehlermeldung:-(

Gruß
Aydin

Re: Herausfinden welches Feld ausgewählt ist.

23. August 2011 09:46

Hey Aydin.

Erstmal Vielen Dank für deine Bemühungen. Bei mir funktioniert die von jglathe beschriebene Methode leider auch nicht.

Bei meinem Ansatz gibt es leider auch eine Fehlermeldung:

"Artikel existiert bereits. Identifizierte Felder und Werte: Nr.:'000022'


Grüße

Sky

Re: Herausfinden welches Feld ausgewählt ist.

23. August 2011 11:30

Hallo Sky,

machst du irgendwo ein Insert?
Die Meldung kommt eigentlich wenn du versucht einen Datensatz anzulegen, und da es den bereits schon gibt (Primärschlüssel), kannst du den nicht nochmal anlegen.



Gruß
Aydin

Re: Herausfinden welches Feld ausgewählt ist.

23. August 2011 11:42

Jep, dass war der Fehler. Das Insert war an der falschen stelle.

Der restliche Ansatz scheint jedoch trotzdem nicht zu funktionieren, da irgendwie immer nur der Erste Artikel aus der Liste kopiert wird...


Grüße

Sky

Re: Herausfinden welches Feld ausgewählt ist.

23. August 2011 13:59

Hi Sky,


um wie viele Felder gehts eigentlich?

Auf anhieb würde ich sagen, wenn du dein aktives Feld herausgefunden hast, so wie du es eben beschrieben hat, dann würd ich eine case Anweisung machen.

Code:
case(aktiveFeldName)
'Feld1': returnWert := rec.Feld1;
'Feld2': returnWert := rec.Feld2;
'Feld3': returnWert := rec.Feld3;
..
...


Und returnWert an die Funktion "Kopieren" übergeben.

Würde Sinn machen, wenn du ehe nicht so viele Felder in einem Datensatz hast (bei mehr als 20 Feldern würd ich es mir überlgen:-)). Aber wäre die einfachste Variante:-)

Gruß
Aydin

Re: Herausfinden welches Feld ausgewählt ist.

23. August 2011 14:06

Es soll um eine größere Menge an Feldern (10000-15000) gehen, daher wäre eine solche Case Anweisung wohl etwas zu aufwendig =)

Ich kopier nochmal die gesamte Funktion hierrein, vllt. fällt dir oder jemand anderem ja etwas auf.

Code:

Desc.OPEN(50000);
Description := Desc.FIELD(10);

// neue Artikelnummer generieren und zuweisen

 ItemSetup.GET;
      ItemSetup.TESTFIELD("Item Nos.");
      NoSeriesMgt.InitSeries(ItemSetup."Item Nos.",Item."No. Series",0D,InItem."No.",InItem."No. Series");
       TmpItemNo := InItem."No.";
       InItem."No." := TmpItemNo;


// Artikel mit Beschreibung kopieren

VendorItem.GET;

REPEAT
IF(Description.ACTIVE=TRUE)  THEN BEGIN

IF(VendorItem.Description_1<>'')THEN BEGIN
InItem.Description :=VendorItem.Description_1;

END
ELSE BEGIN
ERROR('Der Artikel, den Sie übernehmen wollen besitzt keine Artikelbeschreibung.')
END;
END;

UNTIL Description1.NEXT = 0;
InItem.INSERT;


Das Problem scheint ja leider zu sein, dass ich es irgendwie nicht schaffe, herauszufinden, welches das aktive Feld/die aktive Zeile ist...

Grüße

Sky

Re: Herausfinden welches Feld ausgewählt ist.

23. August 2011 14:21

Ich glaube die Funktion heißt "Rec.FieldActive(Field)"
"Rec" ist der Aktuelle Datensatz auf dem du stehst.

Der Parameter Field kann entweder der Name oder die ID des Feldes sein.

Dann solltest du in dem Rec alle Felder mit der Repeat oder For Schleife durchgehen.

Was mir noch so fehlt ist nur, das Feld über die ID Nummer auszulesen, also den Inhalt des Feldes.

Gibt es überhaupt so eine Funktion rec(feld1)?

Gruß
Aydin

Re: Herausfinden welches Feld ausgewählt ist.

23. August 2011 14:33

aydina81 hat geschrieben:Gibt es überhaupt so eine Funktion rec(feld1)?

Du meinst sicherlich die FieldRefs.

Re: Herausfinden welches Feld ausgewählt ist.

29. August 2011 08:41

Nochmal vielen Dank !
Es hat jetzt mit den Field refs funktioniert. Man musste der funktion nur den aktuellen Record als Parameter mitgeben und dann wurde automatisch mit den ausgewählten Werten gearbeitet.


Grüße

Sky