Duplikate suchen

  • Hallo zusammen,


    ich habe zwei mehr oder weniger größere Probleme:


    1.) In einem Dokument werden manuell Nummern vergeben. Wie kann ich jetzt prüfen, dass eine Nummer in einem anderen Dokument in dem gleichen Feld wieder vergeben wird? Am besten wäre es, wenn die Meldung "Nummer existiert bereits" erscheint. Eine Ansicht mit allen Nummern habe ich bereits.


    2.) Beim Speichern der Dokumente schreibe ich verschiedene Eurobeträge in ein neu angelegtes Dokument (Profildok), da ich mit diesen Zahlen später in anderen Dokumenten rechnen muss. Jetzt habe ich das Problem, wenn jemand das Dokument löscht, aus dem ich die Eurobeträge in das Profildok geschrieben habe, möchte ich auch, dass die Euros in dem Profildok (ohne das ganze Profildok zu löschen) gelöscht bzw. subtrahiert werden.


    Ich hoffe ich konnte meine Probleme einigermasen gut beschreiben.


    Gruß

  • zu 1:
    Vergib die Nummern doch automatisch. Dann bist du sicher, dass sie nicht doppelt vergeben werden.


    zu 2:
    Im Querydocumentdelete des Datenbank-Scripts kannst du dein Profil Dokument wieder bereinigen.

  • Zitat


    frankie07 schrieb:
    zu 1:
    Nummern kann ich nicht automatisch vergeben, da sie in einem anderen Programm generiert werden.


    ok, dann anders....
    Wenn du schon eine View hast, dann kannst du doch im QuerySave des Documents über view.getDoumentbyKey versuchen ein Dokument mit der Nummer zu holen. Wenn die Collection dann leer ist, gibt es keines und alles ist in Ordnung. Sonst ist die Nummer halt schon vergeben.

    • Offizieller Beitrag

    zu beyerstes Beitrag
    wenn die Nummer existiert, musst Du noch prüfen, ob es sich eventuell um das Dokument handelt, welches Du gerade bearbeitest (am besten über die UniversalID).


    Dies ist allerdings keine Garantie, dass die Nummer noch nicht existiert, da in anderen Repliken (Cluster, Repliken auf andern Dominos und lokale Repliken [offline arbeiten]) diese Nr. schon vergeben sein kann.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • man brauch die Nummer natürlich nur bei einem neuen Dokument zu prüfen.
    Wenn man mehrere Repliken der DB hat, dann ist es sowieso nicht möglich die Nummern zu prüfen.
    Da gibt es meiner Meinung nach nur die Möglichkeit die Nummern im Nachhinein zentral zu vergeben.

    • Offizieller Beitrag
    Zitat

    man brauch die Nummer natürlich nur bei einem neuen Dokument zu prüfen.

    ich kenne die Anwendung jetzt zu wenig, aber mit Copy & Paste hast Du dann auch 2 Dokumente mit der gleichen Nummer und unsere Anwender nutzen C & P gern, wenn die Dokumente bis auf wenige Felder identisch sind..


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • frankie07
    Zuerst zwei Fragen zu deiner Frage 1):
    1) Dürfen die "Nummer-Dokumente" programmatisch nachbearbeiten werden?
    2) Tippt der User in seinen neuen Dokumenten die Nummer ein oder wählt er sie aus einer Liste?


    @all
    Copy & Paste kann man wunderbar in den User-Ansichten verbieten.
    Im Querypaste der Ansicht
    Msgbox "Was du machen?" ,64, "Verpoten!"
    Continue = false

  • Hallo,


    das mit dem Querypaste hab ich gemacht, super Tipp!!!!


    1) bis jetzt darf die Nummer noch nachbearbeitet werden. Ich würds dann aber wohl besser so machen, das nach dem ersten Speichern das Feld nicht mehr verändert werden darf.


    2.) Es ist ein normales Textfeld.

  • 1) Ähm, was ich mit "Nummer-Dokumente" gemeint habe, ist:
    eine Extra-Maske mit zwei Felder "Nummer" und "Flag" (1 = Nr. ist schon vergeben / 0 = Nr. ist frei).
    Mit dieser Maske erstellte "Nummer-Dokumente" sind in einer Extra-Ansicht XY(nur die Docs mit Flag=0!) in der Replik auf dem Hauptserver abrufbar.


    2) User hat in seiner Erfassungsmaske ein "berechnet beim Anlegen" Textfeld "Nr" (Formel >> ""), das er nur durch Klick auf ein von dir programmiertes Knopf befüllen kann.
    Der Knopf macht folgendes:
    1. Bietet die Auswahl freier Nummer an. (Die o. g. Ansicht XY in der Replik auf dem Hauptserver.)
    2. Setzt sofort nach der Auswahl einer Nr. den Flag im entsprechenden Nummer-Dokument auf 1 und speichert es.
    3. Aktualisiert die Ansicht XY (der nächste User kann diese Nr. nicht mehr auswählen).
    4. Setzt das Feld Nr = ausgewählte Nummer


    Der Knopf sollte man verbergen wenn Nr != "".


    Falls das neue Dokument doch nicht gespeichert wird, sollte man im QueryClose das Nummer-Doc frei geben.


    Ich hoffe, ich habe nichts vergessen...

  • Wenn du


    nur eine Replik,
    kleine Dokumente und
    wenige parallel erfassende User


    hast,
    dann kannst du es mit der Prüfung beim QuerySave versuchen.


    Ansonsten kann man nicht ausschließen, dass zwei oder mehr User gleichzeitig eine Nr. toll finden und so ihre Dokumente abspeichern. (S. die Beiträge von beyerste und Diali)


    Gruß


    Laura


    P.S. Übrigens, die von mir beschriebene Lösung mit den getrennten Nr- und Erfassungsdokumenten funktioniert zuverlässig bei 47 Server und ca. 800 User).

  • Hallo,


    muss doch noch mal nachfragen:
    Die Nummer kann nicht gleichzeitig vergeben werden, somit ist diese Fehlerquelle schonmal ausgeschlossen.
    Wie kann ich das im Querysave machen?
    Ich hätte am liebsten eine Lösung, bei der beim Verlassen des Feldes schon geprüft wird und dann eine Meldung erscheint!


    Gruß

  • Mein persönlicher Vorschlag


    Im Exiting-Event prüfst du mit einem kleinen LotusScript einfach, ob die Nummer bereits vorhanden ist:


    Sub Exiting(Source As Field)

    Dim ws As New notesuiworkspace
    Dim sid As New notessession
    Dim db As notesdatabase
    Dim view As notesview
    Dim iddoc As notesdocument
    Dim doc As notesdocument

    Set db = sid.currentdatabase
    Set doc = ws.currentdocument.document
    Set view = db.getview("IDs")
    Set iddoc = view.getdocumentbykey(doc.ID(0))

    If Not iddoc Is Nothing Then
    Print "nummer bereits vorhanden"
    End If

    End Sub