Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: jens1979 am 09.12.03 - 13:18:03

Titel: Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: jens1979 am 09.12.03 - 13:18:03
Hallo mal wieder,

heute hab ich glaub ich 'ne ziehmliche Anfängerfrage. Ich habe eine kleine Produkt-DB geschrieben.
Mein Problem ist das ich eine Maske habe in die eich als erstes eine Artikelnummer eingebe und dazu einige Informationen.
Nun habe ich eine Ansicht in der ich die Produkte nach Artikelnummern sortiert aufgelistet habe. Wenn allerdings ein Artikel mit der Artikelnummer 1000 bereits vorhanden ist und ein neuer über die Maske eingepfliegt werden soll und dieser versehentlich wieder mit der 1000 abgespeichert wird, sind nun 2 Artikel in der Ansicht.
Das möchte ich unterbinden indem Notes den Datensatz des 2. Artikels gar nich speichert sondern zurückgibt das dieser bereits vorhanden ist.
Bzw. wäre die ideale Lösung das Notes anbietet entweder die Artikelnummer zu ändern oder den Artikel mit der eingegebenen zu öffnen und diesen zu bearbeiten.
Vorerst würde die erste Möglichkeit aber ausreichen.


Danke Jens
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: ata am 09.12.03 - 13:29:11
... auf die schnelle ....

Mit LS per view.GetDocumentByKey( "Artikelnummer" , True ) versuchen das Dokument mit dieser Artikelnummer zu finden. Wenn vorhanden, dann öffen, ansonsten abspeichern...

Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument

Set db = session.CurrentDatabase
Set view = db.getView("(ByArticel)") ' # 1. Spalte sortiert nach Artikelnummer
Set doc = view.GetDocumentByKey( "<deine Artikelnummer>" , True )

If doc Is Nothing Then
   ' # ... setzen der Feldwerte und abschließendes Speichern.

Else
   Call ws.EditDocument( true , doc ) ' # öffnen zum Bearbeiten
End if

ata
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: koehlerbv am 09.12.03 - 13:37:14
Das funktioniert aber nur mit neuen Dokumenten - wird ein bereits vorhandenes editiert, dann heisst es: "In Ewigkeit - Amen !", sprach die Endlosschleife ;-)
Bernhard
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: ata am 09.12.03 - 13:42:02
... mit Fehlermeldung sieht das dann eben so aus...

If doc Is Nothing Then
  ' # ... setzen der Feldwerte und abschließendes Speichern.

Else
  MsgBox "Es gibt bereits einen Artikel mit dieser Numer"
  Exit Sub ' # oder Exit Function - je nachdem
End if

ata
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: koehlerbv am 09.12.03 - 13:47:02
Die Fehlermeldung behebt aber nicht das Problem. Wird ein bestehendes Dokument bearbeitet, gibt es immer einen Treffer mit GetDocumentByKey. Man kann nun einfach die UNIDs vergleichen, um festzustellen, ob es sich um das gerade aktuelle Dokument handelt oder um einen "Doppelgänger".

Bernhard
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: Semeaphoros am 09.12.03 - 13:54:09
Oder auf IsNewDoc überprüfen
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: koehlerbv am 09.12.03 - 14:05:42
Dann muss man aber die Artikelnummer für bereits gespeicherte Docs unbearbeitet machen ;-)
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: jens1979 am 09.12.03 - 14:10:28
Hi

erstmal danke für die schnelle Hilfe.
Unbearbeitbar ist die Artikelnummer für bereits gespeicherte Dokumente ... da sollten also eigentlich keine Probleme auftreten.

Ich werd das mit dem Script jetzt gleich mal probieren und dann ein Feedback geben .... Danke erstmal.



Jens
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: Semeaphoros am 09.12.03 - 14:11:11
Du meinst unbearbeitbar? Oder dann auf Aenderungen angemessen reagieren.

Hat eigentlich jemand Erfahrungen mit der Vieh-Eigenschaft "Generate Unique Keys in Index (ODBX-Access)? Das ist doch im Grunde genommen dasselbe Problem, aber ich habs noch nie ausprobiert, was da geschieht.
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: Semeaphoros am 09.12.03 - 14:13:36
Ok, hab grad selber mal nachgeschaut, offenbar wird da die Anzeige von Dupplikaten unterdrückt, ansonsten passiert nix, ist also nicht wirklich brauchbar -- meistens.
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: jens1979 am 09.12.03 - 15:07:10
Hab mich jetzt mal an den Script probiert.

Allerdings bekomme ich immer wieder die Fehlermeldung "Object variable not set" , hab hier im Forum schon ein bissel rumgeschaut aber nicht wirlkich was passendes für mich gefunden ... die Erklärung in der Designer Hilfe sagt mir auch nicht so viel ... hab Ihr vieleicht noch ne Idee woran das liegen könnte?

Danke Jens

Achja ich hab den Script erstmal nur zum Testen hinter ne Schaltfläche gelegt (falls Ihr die Info benötigt)
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: koehlerbv am 09.12.03 - 15:10:36
Bei solchen Meldungen immer den Debugger bemühen.
Und den ganzen Code posten.

Als alter Kaffeesatzleser: Stimmt der Name der Ansicht ?

Bernhard
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: jens1979 am 09.12.03 - 15:21:24
OK hier mal der Code

Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   
   Set db = session.CurrentDatabase
   Set view = db.getView( "Artikelnummer" ) ' # 1. Spalte sortiert nach Artikelnummer
   Set doc = view.GetDocumentByKey( "12345" , True )
   
   If doc Is Nothing Then
      Messagebox "nicht vorhanden"
      
   Else
      Messagebox "vorhanden"

   End If
End Sub


Ich hoffe das hilft weiter
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: jens1979 am 09.12.03 - 15:51:09
OK die fehlermeldung kommt jetzt net mehr.

Es lag wirklich am Ansichtsnamen, ich verstehs zwar nicht, weil die Ansicht "Artikelnummer" vorhanden ist, aber ich hab jetzt den Namen auf "all" geändert und der Fehler bleibt weg.
Jetzt hab ich allerdings das Problem das er mir immer sagt "nicht vorhanden" egal ob die Artikelnummer drin ist oder nicht.

Jens
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: jens1979 am 09.12.03 - 18:03:31
Hallo nochmal,

mir ist da grad noch was aufgefallen, keine meiner Ansichten ist kategorisiert. Kann es damit zusammenhängen das ich immer das "nicht vorhanden" Feedback bekomme?

Wenn ja wie kategorisiere ich die Ansicht ... hat bis jetzt irgendwie nicht so einfach hingehauen ... d.h. ich bekomme immer wieder "nicht vorhanden".

Gruß Jens
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: koehlerbv am 09.12.03 - 18:27:47
Nochmals: Was sagt denn nun der Debugger ? Du stocherst ja sonst im Nebel - und wir mit !
Wenn Du eine Ansicht "all" hast und damit der Fehler "Object variable not set" nicht mehr auftritt, dann heisst das im Umkehrschluss, dass Deine Ansicht "Artikelnummer" eben doch nicht vorhanden ist.
Kategorisierung ist überhaupt nicht erforderlich in diesem Zusammenhang - nur Sortierung der 1. Spalte. Aber Du schreibst ja, dass dies der Fall ist.
Deine Ansicht "all": Hat die überhaupt die Artikelnummer als erste sortierte Spalte ?

Bernhard
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: jens1979 am 09.12.03 - 18:37:42
in der Ansicht "all" hab ich nach der Artikelnummer sortiert.

Frage : Wie komme ich in den Script-Debugger (sorry das sind Grundlagen ich weiß aber ich fang grad mit LS an)

Jens
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: MartinG am 09.12.03 - 18:40:21
Menü:  Datei - Extras - Debug Lotus Script...

Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: jens1979 am 09.12.03 - 18:40:28
OK hab den Debugger wieder .... das hat mich schon mal ne Stunde gekostet den zu finden ... sorry für die dämliche Frage ... geb gleich ein feedback
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: koehlerbv am 09.12.03 - 18:49:31
Zitat
in der Ansicht "all" hab ich nach der Artikelnummer sortiert

Jens, versuche bitte, so genau wie möglich Deine Probleme zu beschreiben (das hilft Dir immer auch gleich selber), und lies unsere Postings ganz genau.
Du schreibst, Du hast "all" nach der Artikelnummer sortiert. Ist die Artikelnummer aber auch die 1. Spalte ?
Steht in der Spalte dann auch wirklich das, was Du erwartest ?

Wir finden des Pudels Kern schon noch ;-)

Bernhard
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: jens1979 am 09.12.03 - 18:54:04
Also der Debugger gibt keinerlei Fehlermeldung.

Wenn ich mir die Variablen anschaue klappt das alles (für mein empfinden) gut bis zur stelle "Set doc = viewGetDocument..."
Die Variable bleibt leer ... das sollte ja eigentlich nicht sein ... oder ?
Dadurch führt er dann die 1. Anweisung der Schleife aus und nicht die zweite.

Heist also die Variable DOC bleibt leer


Jens
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: jens1979 am 09.12.03 - 18:57:41
Hi Berhard,

in meiner Ansicht "all" gibts nur eine Spalte und zwar "Artikelnummer" (abgesehen von der Notesspalte wo die Symbole für Löschen und so hinkommen).
Die Spalte ist aufsteigend sortiert und ihr Typ ist Standart.

Jens

P.S. Danke für eure Geduld
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: koehlerbv am 09.12.03 - 19:01:52
Zitat
Danke für eure Geduld

He, kein Problem !

Wenn doc nicht instantiiert wird, dann findet er Deinen Eintrag wirklich nicht in der Ansicht. Was nun wirklich sehr mystisch ist.
Bist Du sicher, dass in Deiner Ansicht wirklich das steht, was Du erwartest ? Suchst Du nach Artikelnummer = "4711", das Feld ist aber im Dokument (und damit in der Ansicht) vom Typ Zahl ?
Hast Du nach mehr als einem Deiner Artikelnummern bei Deinen Tests gesucht ?

Bernhard
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: jens1979 am 09.12.03 - 20:14:22
Hi Bernhard,

ja meine Artikelnummer ist vom Typ Zahl! Ist das ein Problem, hab ich da was übersehen.

Jens
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: jens1979 am 09.12.03 - 20:21:33
Okay danke Berhard ... es funktioniert ... ich hatte irgendwie beim basteln was mit "" versaut.

Ich danke euch erstmal allen.

Aber keine Sorge das was bestimmt net die letzte Frage ;)

THX Jens
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: koehlerbv am 09.12.03 - 20:35:23
Artikelnummern und ähnliches = Zahl: Das ist ein no-no. Auch wenn es momentan zu klappen scheint, kommt dann auf einmal eine Artikelnummer "00212" - als Zahl nicht abbildbar. Bei HR kommt jemand auf den Trichter, Azubis bei der Personalnummer mit "A" beginnen zu lassen etc. pp.
Nur normieren sollte man diese "Nummern", wenn machbar: Alle gleiche Stellenzahl.

HTH,
Bernhard
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: jens1979 am 09.12.03 - 21:01:12
Mein Problem ist: Wenn ich die Artikelnummer zum Text mache werden die Einträge in meiner Ansicht nicht mehr sortiert


Jens
Titel: Re:Feldeintrag unique; keine doppelten Artikelnummern
Beitrag von: Semeaphoros am 09.12.03 - 21:05:59
Dochdoch, das sortiert bestimmt, nur nicht mehr numerisch sondern alphabetisch, und das Sortverfahren ist nicht dasselbe. Aber für das Auslesen ist das nicht weiter von Bedeutung, GetDocumentByKey findet das richtige Dokument, wenn sortiert ist.

Genau deshalb hat Bernhard übrigens vorher gesagt, die Anzahl Stellen müssen immer gleich sein, dann spielt der Unterschied keine Rolle mehr.