Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Onkel Domino am 27.01.07 - 15:14:56

Titel: Arrays bearbeiten
Beitrag von: Onkel Domino am 27.01.07 - 15:14:56
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
Titel: Re: Arrays bearbeiten
Beitrag von: Glombi am 27.01.07 - 16:25:41
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
Titel: Re: Arrays bearbeiten
Beitrag von: Onkel Domino am 27.01.07 - 18:22:20
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
Titel: Re: Arrays bearbeiten
Beitrag von: umi am 29.01.07 - 14:16:21
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;""));
Titel: Re: Arrays bearbeiten
Beitrag von: Onkel Domino am 29.01.07 - 17:59:17
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