Domino 9 und frühere Versionen > Entwicklung
Arrays bearbeiten
(1/1)
Onkel Domino:
Hallo,
ich habe hier eine Dokumentart 'Taxi'. Zu diesen Taxen können mehrere Dokumente des Typs Fahrer zugeordnet werden. Die Fahrer halte ich in dem multivalue-Feld 'Fahrer' fest und zwar in dem Format 'Name_mit_Personalnummer#UNID'.
Ein Beispieltaxi hat also das Feld Fahrer mit folgendem Inhalt:
Hans Mustermann, 0815#98AC7051565FE354C1256C21003FA5DE;
Peter Müller, 4711#4A0610547454FB89C1256C3600328F67;
Jürgen Schmidt, 1199#7157D2F9394A64F8C1257164004B6B66
Jetzt möchte ich dem Benutzer erlauben, einzelne Fahrer zu löschen. Als Auswahl soll natürlich nur der Fahrer erscheinen und nicht Fahrer#UNID.
Mit der Formel:
_Fahrer := Fahrer;
_delChoice := @Prompt([OKCANCELLISTMULT] ; "Bitte wählen" ; "Wählen Sie bitte den Fahrer, den Sie entfernen möchten:" ; "" ; @Word( Fahrer ; "#" ; 1 ) );
erhalte ich nun den Namen des Fahrers, den ich entfernen möchte. Wie kann ich diesen jetzt aber aus dem Array 'Fahrer' entfernen?
Ich bräuchte quasi eine Funktion @Replace( Fahrer ; _delChoice* ; @Nothing ).
Ich habe bereits versucht, das mit Script zu lösen. Leider gibt es unter Notes 5 die Funktion StrToken noch nicht :-(
Wie kann ich das mit Formelsprache lösen?
Grüße,
Markus
Glombi:
Sodele:
_Fahrer := @Left(Fahrer;",");
_delChoice := @Prompt([OKCANCELLISTMULT] ; "Bitte wählen" ; "Wählen Sie bitte den Fahrer, den Sie entfernen möchten:" ; "" ; _Fahrer );
_ReplaceString := _Fahrer + @Trim(@Right(Fahrer;_Fahrer));
@Trim(@Replace(Fahrer;_ReplaceString;""))
Andreas
Onkel Domino:
Hi Andreas,
das funktioniert bei mir leider nicht :-(
_ReplaceString beinhaltet bei mir, egal welche Auswahl ich vornehme, das komplette Feld 'Fahrer' und es wird immer nur jeweils der erste Eintrag aus dem Feld 'Fahrer' gelöscht.
Grüße,
Markus
umi:
Ungefähr so könnte es aussehen:
--- Code: ---_Fahrer := @Left(Fahrer;",");
_delChoice := @Prompt([OKCANCELLISTMULT] ; "Bitte wählen" ; "Wählen Sie bitte den Fahrer, den Sie entfernen möchten:" ; "" ; _Fahrer );
_pos:=@member(_delCHoice;_Fahrer);
_origFahrer:=@subset(@subset(Fahrer);_pos);-1);
Field Fahrer:=@trim(@replace(Fahrer;_origFahrer;""));
--- Ende Code ---
Onkel Domino:
Vielen Dank für die Denkanstöße. Die zweite Lösung funktioniert soweit, jedoch lassen sich damit lediglich einzelne Fahrer löschen. Hiermit klappt es nun auch mit einer Mehrfachauswahl:
_Fahrer := @Left(Fahrer;"#");
_delChoice := @Prompt([OkCancelListMult] ; "Bitte wählen" ; "Wählen Sie bitte den Fahrer, den Sie entfernen möchten:" ; "" ; _Fahrer );
_del1 := @Replace( _Fahrer ; _delChoice ; (@Replace( _delChoice ; _delChoice ; "" ) + "<delStub>" ));
_del2 := @Replace( _del1 ; _Fahrer ; "" );
_del3 := _del2 + Fahrer ;
_del4 := @Trim( @Replace( _del3 ; "<delStub>" *+ Fahrer ; "" ));
Field Fahrer := _del4;
Viele Grüße,
Markus
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln