Autor Thema: Auswahl bestimmter Dokumente mit gleichen Stammdaten  (Gelesen 4862 mal)

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Hallo an alle,

ich brauche einen Lösungsansatz für folgendes Problem:

Ich habe ein Hauptdokument, dem beliebig viele Unterdokumente zugeordnet werden können. Eine eindeutige Nummer hällt alles zusammen. Soweit alles gut.

Die Unterdokumente beinhalten Stammdaten und variable Daten. Die Stammdaten können (müssen aber nicht) bei mehreren Unterdokumenten identisch sein. Wenn ein User ein Unterdokument anlegt, soll er bestimmte Stammdaten aus bereits angelegten Unterdokumenten übernehmen können (via Picklist wählen und bestimmte Werte übernehmen. Auch kein Problem.

Das Problem ist, dass mit jedem Unterdokument natürlich auch die in der Picklist angebotenen Dokumente um eins erweitert wird.
Wie kann ich erreichen, dass Unterdokumente mit den gleichen Stammdaten nur 1x in der Ansicht angezeigt werden, die ich für die Picklist verwende?


Viele Grüße
Stefan
« Letzte Änderung: 08.07.15 - 08:51:51 von cebolina »
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline rambrand

  • Senior Mitglied
  • ****
  • Beiträge: 469
  • Geschlecht: Männlich
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #1 am: 06.07.15 - 11:33:32 »
Hallo Stefan,

um zu sehen, ob ich Dich richtig verstanden habe. Du hast ein Feld "Farbe" in den Unterdocs sind da Werte drin wie Rot, Grün Blau, etc.
Du willst, dass in der Picklist jeder Wert nur einmal vorhanden ist.
In der Ansicht würde ich da nichts machen, aber in der Picklist mittels @unique wird aus der Liste jeder Einzelwert nur noch einmal gezogen.
Du willst doch nur den Wert ziehen und nicht das Dokument, oder?

Richtig verstanden?

Bye,
Markus
Domino/Notes ab 4.6 aktuell 10.1FP3
Traveler 10.0.1FP1
PHP-Entwickler
Domino/Notes-Entwickler (Hobby)
Consultant (Informationssicherheit & Datenschutz)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #2 am: 06.07.15 - 11:42:36 »
Da fallen mir spontan zwei Wege ein:

1. Ein Flag in die Unterdokumente "zeig mich in Picklist", das aufgrund der Tatsache gesetzt wird, ob es bereits ein Dokument mit den selben Stammdaten gibt
Dieses Flag muss halt regelmässig (bei jeder Änderung eines Unterdokuments, bei jeder Löschung eines Unterdokuments) überprüft und neu gesetzt werden.

Dabei würde ich über alle "Stammdaten" einen Hash bilden ( @Password( CompanyName : OfficeCity : OfficeStreetAddress : Whatever ) ), und diesen vergleichen (spart Vergleichsoperationen).

2. Für die Picklist einen "SPOFU"- Ordner verwenden, der beim anklicken der Funktion dynamisch gefüllt wird.

beide Ansätze haben ihre Vor- und Nachteile.
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #3 am: 06.07.15 - 11:46:33 »
Die Unterdokumente haben Stammdaten:
StammKennung (Bsp.: "4711")
StammBezeichnung (Bsp.: "Test")
StammWert1 (Bsp.: "A")
StammWert2 (Bsp.: "B")
und weiteren variable Daten.

1. Der User erstellt ein Dokument mit den genannten Stammdaten und weiteren variablen Daten.
2. Der User erstellt ein weiteres Dokument und soll die Stammdaten aus dem ersten Dokument nicht nochmal erfassen müssen.
3. Der User erstellt weitere Dokumente mit gleichen oder unterschiedlichen Stammdaten.

Angenommen, es existieren 6 Dokumente und jeweils 3 davon haben die gleichen Stammdaten, soll der User beim Erstellen des 7. Dokuments die Möglichkeit haben, die Stammdaten aus 2 Dokumenten zu übernehmen (und eben nicht 6).

Ich hoffe, dass mein Anliegen etwas klarer wurde.
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #4 am: 06.07.15 - 11:49:24 »
@Tode
das mit @Password könnte ich mir vorstellen.

Ich muss dann beim Speichern prüfen, ob es bereits ein Dokument mit dem gleichen Wert gibt, und entsprechend das Anzeige-Flag setzen?
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #5 am: 06.07.15 - 11:52:16 »
mit Ordnern habe ich noch nicht viel gearbeitet.
SPOFU ist was nochmal?
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #6 am: 06.07.15 - 12:10:46 »
Hallo,

Shared Private on First use.



Andreas

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #7 am: 06.07.15 - 13:15:34 »
habe das Problem mit Hilfe von @Password gelöst.

Das Unterdokument hat 3 Felder:
Feld1 "Stammdaten" (Berechnet)
@Password(Stammdaten1 + Stammdaten2)
Feld2 "StammdatenKopie" (Berechnet beim Anlegen)
@ThisValue
Feld3 "StammdatenKopieErlaubt" (Berechnet)
@If(Stammdaten = StammdatenKopie ; "0" ; "1")

Beim Kopieren übernehme ich der Wert aus Stammdaten (Quell-Dokument) nach StammdatenKopie (Ziel-Dokument).
Feld3 verwende ich als Flag, ob das Dokument in der Picklist-Ansicht angezeigt wird.

Für meine Zwecke funktioniert das perfekt.

Danke für die Unterstützung

Gruß Stefan
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #8 am: 06.07.15 - 13:15:58 »
@cebolina: So hatte ich mir das gedacht. Nur beim speichern alleine reicht halt nicht. Kann ja sein, dass das andere Dokument, das die selben Stammdaten enthielt, gelöscht oder geändert wurde.

Ich würde eine Ansicht machen, kategorisiert nach $Ref (oder Deinem Schlüssel) und dann sortiert nach dem Hash, dritte Spalte sortiert nach dem Flag (absteigend).
Dann durchläufst Du die Ansicht, und immer das erste Dokument mit einem Hash bekommt das Flag, alle weiteren nicht. Damit kannst Du beim speichern eines beliebigen Antwort- Dokuments recht schnell feststellen, ob Du irgendwo ein anderes Flaggen musst / das flag entfernen musst.
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #9 am: 06.07.15 - 14:56:11 »
@Tode
Problem verstanden, die Lösung noch nicht (liegt bestimmt an der Hitze) ;-)

ich habe eine Ansicht:
1. Spalte kategorisiert nach $Ref (= Nummer)
2. Spalte aufsteigend nach Hash
3. Spalte absteigend nach Flag

Im Querysave des Dokuments läuf dieser Code:
Code
...
Set dc = view.GetAllDocumentsByKey(doc.Nummer(0), True)
Set docCheck = dc.GetFirstDocument
While Not(docCheck Is Nothing)
	'???
	Set docCheck = dc.GetNextDocument(docCheck)
Wend
...

Wie kriege ich jetzt nur das 1. Dokument von Hash?
« Letzte Änderung: 06.07.15 - 14:58:53 von cebolina »
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #10 am: 06.07.15 - 15:13:46 »
Key kann ein Array sein...
Code
Dim key(1) as String
key(0) = doc.Nummer(0)
key(1) = doc.Hash(0)
Set dc = view.GetAllDocumentsByKey(key, True)

Damit ist dummerweise das erste Dokument in Deiner collection immer das "älteste" bzw das mit der kleinsten NoteID, weil DocumentCollections nie sortiert sind...
Besser ist es, mit einem NotesViewNavigator zu arbeiten und dann mit NotesViewEntries: Das ist sauschnell, weil es auf dem Viewindex basiert...

Code
Dim viwNav as NotesViewNavigator
Dim ve as NotesViewEntry
Set viwNav = view.CreateViewNavFromCategory( doc.Nummer(0) )
Set ve = viwNav.GetFirstEntry()
blnHashFound = False
While not ve is Nothing
  If ve.ColumnValues(1) = doc.Hash(0) then
    If ve.ColumnValues(2) = "1" then
      blnHashFound = True

    End If
  End If
  If blnHashFound = False then
    Set ve = viwNav.GetNextEntry(ve)
  Else
    Set ve = Nothing
  End If
Wend

If blnHashFound = False then 
   docCheck.Flag = "1"
End If
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #11 am: 06.07.15 - 15:53:04 »
Code
Set ve = viewNav.GetFirstEntry()
bringt Fehler
Not a member GETFIRSTENTRY
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #12 am: 06.07.15 - 16:01:19 »
Was sagt denn die Designer- Hilfe? Ich habe den Code mal so runtergetippt, ohne Designer... und beim Navigator heisst das Ding halt "GetFirstDocument"... Sorry dafür
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #13 am: 07.07.15 - 07:55:08 »
mit
Set ve = viewNav.GetFirstDocument
und
Set ve = viewNav.GetNextDocument(ve)
funktioniert es wunderbar.
Habe heute leider keine Gelegenheit, an meinem Problem weiterzuarbeiten, werde aber berichten wie es schließlich gelöst wurde.

Zunächst herzlichen Danke an Torsten
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 248
  • Geschlecht: Männlich
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #14 am: 07.07.15 - 08:11:05 »
Könnte man für die Problemstellung nicht einfach das Ansichts-Feature "Genervte Unique Keys in Index" nutzen? Siehe z.B. http://www-10.lotus.com/ldd/bpmpblog.nsf/dx/dbfunctions-thing-3

Bei diesem Ansatz gibt es zwar auch einige Sachen zu beachten, aber die hat man auch bei dem obigen Ansatz. Am besten mal zu diesem Thema googlen.

Ich hatte mal ein Problem mit diesem Ansatz, wenn nicht alle Anwender auf alle Dokumente in der Ansicht Lesezugriff haben. Aber dieses Problem hat man ja auch bei der oben genannten Vorgehensweise.

-Werner

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #15 am: 07.07.15 - 09:05:38 »
Warum sind die Unique Keys denn genervt? *g*
Scherz Beiseite: Das ist auch eine Gute Idee, dadurch werden Duplikate auch rausgerechnet. Ich hatte vor langer Zeit mal ein Problem mit dem Feature (keine Ahnung mehr warum), deshalb setze ich es nicht ein.
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #16 am: 07.07.15 - 10:30:58 »
nach meiner Erinnerung brechen Ansichten mit Unique Keys "auseinander", wenn dort Replizierkonflikte auftauchen. Die sollten also mit ! @IsAvailable( $Conflict ) im SELECT ausgeschlossen werden.

hth

Thomas

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: Auswahl bestimmter Dokumente mit gleichen Stammdaten
« Antwort #17 am: 08.07.15 - 08:50:45 »
Zunächst vielen Dank für den zahlreichen Input.

Ich habe mein Problem jetzt so gelöst:

1. In der Maske für die Unterdokumente gibt es ein berechnetes Feld "StammdatenHash".
Formel: @Password(Stammdaten1 + Stammdaten2)

2. Es gibt eine verborgene Ansicht ($PicklistStammdatenHash) mit Haken bei ODBC-Zugriff "Eindeutiger Schlüssel im Index erzeugen". Diese Ansicht verwende ich für die Dokumentauswahl (Picklist), um bereits erfasste Stammdaten zu kopieren.

Wer mag, kann sich die kleine Demo-DB (demo.nsf) anschauen.

Das Konstrukt funktioniert einwandfrei.

Nochmals vielen Dank an alle Beteiligten.

Gruß Stefan
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz