Autor Thema: Dokument verschieben und gleichzeitig ähnliche Dokumente ausblenden  (Gelesen 2785 mal)

Offline Boox

  • Junior Mitglied
  • **
  • Beiträge: 64
  • Geschlecht: Männlich
Hallo alle zusammen! Ich brauche etwas "Starthilfe" von Euch. Ich habe eine Datenbank mit Betreuungseinheiten und zugeordneten Kunden, ein Kunde kann mehreren Einheiten zugeordnet sein. In der Ansicht sieht das etwa so aus:

Betreuungseinheit A
          - Kunde 1
          - Kunde 2
          - Kunde 3

Betreuungseinheit B
          - Kunde 2
          - Kunde 4
          - Kunde 6

Betreuungseinheit C
          - Kunde 1
          - Kunde 2
          - Kunde 6

....

Für jeden Eintrag gibt es ein Dokument, also ich gehe nicht über Mehrfachwerte (das führte an anderer Stelle zu Problemen, daher ist dieser Weg besser für mein Vorhaben). Nun möchte ich eine Schaltfläche bauen um Kunden in eine andere Einheit zu verschieben, also beispielsweise Kunde 6 in die Einheit A. Gleichzeitig möchte ich aber auch, dass der Kunde 6 aus der Betreuungseinheit C entfernt (bzw. aus der Ansicht ausgeblendet) wird, also anschließend nur noch in A vorhanden ist.

Das Verschieben von B nach A ist ja kein Problem und auch mit Formelsprache machbar (@SetField("Einheit"; Zieleinheit), für den Rest benötige ich vermutlich Script?! Da bin ich allerdings (immer) noch Anfänger...

Ich möchte hier nicht um "fertigen Code" betteln, ich benötige einfach nur ein paar Denkanstöße über welche Klassen/Methoden das am besten zu bewerkstelligen ist :)


Viele Grüße


Gregor
« Letzte Änderung: 10.02.15 - 10:43:57 von Boox »

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Hallo,

Prinzipiell ist dein Vorhaben auch mit @Formeln realisierbar.

Nur eine kleine Frage haette ich.

Was passiert, wenn du z.B. deinen Kunden 1 der Betreuungseinheit B und C zuordnen willst?


Andreas

Offline Boox

  • Junior Mitglied
  • **
  • Beiträge: 64
  • Geschlecht: Männlich
Halo Andreas,
ich habe vergessen zu erwähnen: Am Ende soll ein Kunde nur in einer Einheit auftauchen. Also man würde ihn dann einfach nur verschieben!

Viele Grüße

Gregor
« Letzte Änderung: 10.02.15 - 10:44:20 von Boox »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Wenn ein Kunde nur einer Einheit angehört, hast Du doch kein Problem, denn wenn Du die Einheit des Kunden 6 von C auf A änderst, steht der Kunde nicht mehr unter C.

In Deinem Beispiel hast Du aber mehrere Einheiten einem Kunden zugeordnet. Falls das Altlasten sind, müsste da wohl jemand mal drin aufräumen.

EDIT: Falls das das Problem ist, was Du lösen willst

Mit NotesDatabase.Search nach den doppelten Dokumenten suchen (gleicher Kunde), die dann löschen (wäre fatal, wenn das ginge, denn dann hätten die User Löschrechte in der Datenbank) bzw. mit einem Flag versehen, dass die nicht mehr in den Ansichten erscheinen und später von einem Admin oder periodischen Agenten gelöscht werden.

Als Search übergibst Du eine Selektionsformel, wie in einer Ansicht. Also alle Dokumente mit der gleichen Kundennummer, wie der des aktuellen Dokuments, aber nicht mit der ID. Etwa so

Set col = db.Search (|Kunde = "| & doc.Kunde (0) & | " @Text (@DocumentUniqueID) != "| & doc.UniversalID & |"|, Nothing, 0)

Danach ein Flag mit StampAll einfügen oder mit RemoveAll alle löschen (siehe oben)
« Letzte Änderung: 10.02.15 - 11:03:27 von Peter Klett »

Offline Boox

  • Junior Mitglied
  • **
  • Beiträge: 64
  • Geschlecht: Männlich
Hallo Peter,
Genau um das Aufräumen geht es ja ;) Oder besser gesagt: Neustrukturierung.

Zu deinem Hinweis: Dann steht der Kunde aber noch unter B. Und das soll möglichst "automatisch" gelöst werden, ohne dass ich den Kunden 6 unter B nochmal anfassen muss. In dem Beispiel ist das ja schnell gemacht, aber es gibt Kunden, die in 20 Einheiten sind.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
siehe mein EDIT im Post oben

Offline Boox

  • Junior Mitglied
  • **
  • Beiträge: 64
  • Geschlecht: Männlich
Ah, das klingt doch gut, werde ich mir mal anschauen! Vielen Dank!


P.S: Natürlich sollen (und dürfen) sie auch nicht löschen, mache das selbstverständlich über nen Flag :D

Offline Boox

  • Junior Mitglied
  • **
  • Beiträge: 64
  • Geschlecht: Männlich
So, dank Peters Hilfe bin ich einen großen Schritt weiter! Aus dem Dokument heraus klappt das schon mal. Allerdings möchte ich es gerne auch aus der Ansicht heraus erledigen.

Ich habe es bisher jedoch nicht hinbekommen. Mein Problem: Wie kann ich denn das ausgewählte Dokument in der Ansicht "greifen", so dass ich dann auf die Felder zugreifen kann? Vom Gefühl her hätte ich gesagt, über die NotesUIView gibt's bestimmt sowas wie eine "GetDocument"-Methode...da finde ich jedoch nichts...nur in der DocumentCollection-Klasse, aber die Collection habe ich ja noch gar nicht. Oder habe ich da einfach nen Denkfehler?



Hier schon mal mein Code, der aus dem geöffneten Dokument funktioniert.

Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim session As New NotesSession   
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   
   Set uidoc = workspace.CurrentDocument
   Set doc=uidoc.document
   Set db=session.CurrentDatabase
   
   Set collection = db.Search (|kd_kdnr = | & doc.kd_kdnr (0) & | & @Text (@DocumentUniqueID) != "| & doc.UniversalID & |"|, Nothing, 0)
   
   Call collection.StampAll("Test", "2")
   
End Sub

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Hallo,

Ein Ansatz waere NotesDatabase.UnprocessedDocuments


Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Und dann mit NotesDocumentCollection.Count = 1 prüfen, ob da wirklich nur ein Dokument gewählt wurde (dafür reicht es auch, den Cursor einfach auf das Dokument zu stellen, Haken ist nicht erforderlich). Nicht, dass da vorher schon Dokumente ausgewählt wurden, die dann für den User klammheimlich mit umgebogen werden.

Bernhard

Offline Boox

  • Junior Mitglied
  • **
  • Beiträge: 64
  • Geschlecht: Männlich
Es klappt, vielen Dank, Andreas! Da muss man aber auch erstmal drauf kommen ;)

Und danke auch an Bernhard, baue das gleich mal rein!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz