Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: wolge am 13.08.08 - 14:42:46

Titel: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: wolge am 13.08.08 - 14:42:46
Ich habe ein Formular in dem mehrere (unter)-Substanzen erfasst werden können. Dazu schrieb ein ehemaliger Kollege drei Scripts. Je einen für Add, Edit und Remove. Hierbei wird eine kleine Dialogbox geöffnet in der 4 Felder abgefüllt werden können. Mein Problem ist nun das eine Substanz bei der am Anfang noch nicht alle Felder abgefüllt wurden nicht mehr editiert werden kann. Scheinbar hat Notes ein Durcheinander unter den einzelnen Substanzen da diese nicht sauber getrennt werden.

Wie lässt sich dies lösen ohne bestehende Daten zu beinträchtigen?

Hier der Script der Add Funktion:

Sub Click(Source As Button)
   On Error Goto Errhandler
   
   Dim ss As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   
   Set uidoc = ws.CurrentDocument
   Set doc = uidoc.Document
   
   ret = ws.DialogBox("frmContentDlg", True, True, False, True, False, False, "Substance Details")
   If ret = False Then Exit Sub
   
   doc.sEC_number = Evaluate({@Trim(sEC_number : "} & doc.dlgsEC_number(0) & {")}, doc)
   doc.sIUPAC = Evaluate({@Trim(sIUPAC : "} & doc.dlgsIUPAC(0) & {")}, doc)
   doc.sCAS_number = Evaluate({@Trim(sCAS_number : "} & doc.dlgsCAS_number(0) & {")}, doc)
   doc.Composition = Evaluate({@Trim(Composition : "} & doc.dlgComposition(0) & {")}, doc)
   
   If Isnumeric(doc.Volume(0)) Then
      calcVol = doc.Volume(0) / 100 * doc.dlgComposition(0)
      doc.sVolume = Evaluate({@Trim(sVolume : "} & Round(calcVol, 2) & {")}, doc)
   Else
      doc.sVolume = Evaluate({@Trim(sVolume : "0.00")}, doc)
   End If
   
   doc.dlgsEC_number = ""
   doc.dlgsIUPAC = ""
   doc.dlgsCAS_number = ""
   doc.dlgComposition = ""
   
   Exit Sub
   
Errhandler:
   Msgbox "Line " & Str(Erl) & " : Error " & Str(Err) & " - " & Error$
   End
   
End Sub
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: eknori am 13.08.08 - 14:48:56
Was verstehst du unter
Zitat
eine Substanz
  ???
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: koehlerbv am 13.08.08 - 15:10:59
Doppelposting (http://www.dominoforum.de/modules/newbb/viewtopic.php?topic_id=18875&forum=47&post_id=108468#forumpost108468) - und bei den Kollegen bereits beantwortet.
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: klaussal am 13.08.08 - 15:17:47
Zitat
Was verstehst du unter...

Zitat
Umgangssprachlich steht das Wort oft synonym für einen chemischen Stoff im allgemeinen, in einem engeren Sinn der Chemie wird die Bezeichnung Substanz auf Stoffe in fester Form (Feststoffe) beschränkt, im Gegensatz zu Flüssigkeiten und Gasen.

In der Medizin und Pharmazie wird der Begriff v. a. angewandt für

Strukturen und Gewebe benutzt, die einheitlich aussehen, wie substantia nigra, substantia grisea
Stoffe, die eine Wirkung ausüben, etwa psychotrope Substanz, pharmazeutische Substanz (Arzneimittel, Pharmakon), toxische Substanz (Gift)
Häufig wird der Begriff Substanz auch im Sinne von „wichtige Stoffe“ verwendet, z. B. „etwas geht an die Substanz“. Dies bedeutet, (im stofflichen/medizinischen Sinne) dass die Vorräte aufgebraucht sind und nun die Grundlagen angegangen werden. Im psychologischen Sinne „geht etwas an die Substanz“, wenn die persönlichen Schutzmechanismen (Abwehr, Verdrängung...) nicht mehr greifen.
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: wolge am 14.08.08 - 10:02:19
Doppelposting (http://www.dominoforum.de/modules/newbb/viewtopic.php?topic_id=18875&forum=47&post_id=108468#forumpost108468) - und bei den Kollegen bereits beantwortet.
Sorry dachte ich erhalte so breitere Hilfe
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: m3 am 14.08.08 - 10:11:43
Hmmm, Du hast aber unsere Forumsregeln bei der Anmeldung akzeptiert?

Zitat
2.3 Crosspostings in mehreren Webforen oder Newsgroups
     Es verstößt gegen die gültige Netiquette von Newsgroups und Onlineforen, Probleme zeitnah in mehreren verschiedenen Webforen gleichzeitig zu posten.
Bitte entscheidet Euch deshalb zunächst, in welchem Forum Ihr Euer Problem posten wollt, bevor Ihr ein Thema einstellt.
Bekommt Ihr in diesem Forum keine befriedigende Antwort, so könnt Ihr die Frage einige Tage später gerne in einem weiteren Forum stellen - mit Querverweis und Link auf den ursprünglichen Beitrag.
Sollte es einmal Gründe dafür geben, ein Problem gleichzeitig in verschiedenen Foren einzustellen, so ist in jedem Forum ein Querverweis mit Link auf die jeweils anderen Forumsbeiträge zu erstellen.
Genauso sind gefundene Lösungen in den jeweiligen Foren als Querverweis mit Link einzustellen.
http://atnotes.de/projekte/bp/team/tmc/_forumsregeln/rules001.html#23
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: wolge am 14.08.08 - 10:30:28
Nun die liest wohl kaum jemand oder?
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: koehlerbv am 14.08.08 - 10:39:23
Deswegen weisen wir ja notfalls auch nochmal explizit darauf hin  ;)
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: wolge am 14.08.08 - 15:07:48
schon wieder was gelernt ;-)
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: wolge am 14.08.08 - 15:10:41
Was verstehst du unter
Zitat
eine Substanz
  ???

Nun ist eigentlich egal ob Substanz oder Artikel. Möchte einfach in einem Formular via Script gewisse Substanzen/Artikel erfassen können. Diese sollen auch editiert oder gelöscht werden können. Weiter müssen sie vom mutterdockument abhängig sein. Ist alles da und funktioniert einwandfrei solange man alle 4 Felder abfüllt. sobald man jedoch eines leer lässt und im Nachhineni nochmals editieren möchte bekommt man ein Error
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: Thomas Schulte am 14.08.08 - 15:25:23
Entweder alles in ein Feld packen und mit ~ und @word arbeiten. dann ist das Feld nie leer.
Oder mit einem "pseudoleerwert" arbeiten zum Beispiel #IstLeer# und diesen jeweils beim bearbeiten und bei der Anzeige durch einen "echten" Leerwert ersetzen. Eine andere Möglichkeit hast du für das was du erreichen willst nicht.

Und wenn du es richtig schön machen willst dann nimmst du für die Darstellung der Daten eine auf das Dokument selbst berechnete Ansicht. So wie zum Beispiel diese hier ...
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: Thomas Schulte am 14.08.08 - 15:32:53
Ach ja. Nein, das was man da in der Ansicht sieht sind KEINE Antwortdokumente, sondern Felder aus dem Dokument in dem die Ansicht eingebettet ist.
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: eknori am 14.08.08 - 15:34:20
Zitat
sondern Felder aus dem Dokument in dem die Ansicht eingebettet ist.
Du Fuchs, du  ;D ;D Sowas kann Notes doch gar nicht ... ;D ;D
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: Thomas Schulte am 14.08.08 - 15:57:11
Doch das kann das. Werner Götz hat bewiesen das und wie das geht. Inklusive was man tun muss um diese Daten bearbeitbar zu machen und Änderungen sofort im zugrundeliegenden Dokument sichtbar zu machen. Ich bin da nur der Nutznieser einer genialen Vorarbeit.
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: wolge am 14.08.08 - 16:19:14
Das Formular sieht so aus:

Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: koehlerbv am 14.08.08 - 17:10:34
@"Wolge": Das Bild haben wir schon im DominForum gesehen ;) Uns hast Du es bisher ja vorenthalten  ;)

@Thomas: Das geht schon anders (wenn man es so denn will) - auch abseits von Pseudoleerwerten (sondern richtigen), man muss nur richtig speichern (siehe Bild unten aus einer alten Datenbank von mir).
Ich würde das aber heute nicht mehr so machen. Ausserdem: Was man am Bild auch sehr gut sieht - man muss sich auch um den Zeilenumbruch selber kümmern. Wenn bei Wolges Maske der Rest wieder stimmen würde (und das ist ja nur das bescheuerte @Trim), dann kann bei einem längeren Text / einer grösseren Zahl / whatever die ganze Tabelle auseinanderbröseln.

Das bisherige Prinzip wie in "Wolges" DB verwendet ist eben ... schlecht.

Bernhard

PS: Im Thread im DominoForum hat sich jetzt herausgestellt, das "Wolge" (der hat die Forumsregeln immer noch nicht richtig gelesen) bestehenden LS-Code korrigieren soll, aber von LS keinerlei Ahnung hat. Damit ist das sowieso chancenlos. "Wolge", lass Dir ein "Training on the job" genehmigen ...
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: wolge am 14.08.08 - 17:12:27
hehehe gute idee ich schlag das mal meinem boss vor.. der wird sich freuen ;-P
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: Thomas Schulte am 14.08.08 - 17:18:53
@Thomas: Das geht schon anders (wenn man es so denn will) - auch abseits von Pseudoleerwerten (sondern richtigen), man muss nur richtig speichern (siehe Bild unten aus einer alten Datenbank von mir).
Du kannst in Multivalue Feldern NULL oder bei Text eben Leere Werte Speichern ohne das beim speichern der interne Trim zuschlägt? Wie???

Ich würde das aber heute nicht mehr so machen. Ausserdem: Was man am Bild auch sehr gut sieht - man muss sich auch um den Zeilenumbruch selber kümmern. Wenn bei Wolges Maske der Rest wieder stimmen würde (und das ist ja nur das bescheuerte @Trim), dann kann bei einem längeren Text / einer grösseren Zahl / whatever die ganze Tabelle auseinanderbröseln.
Welches Bild?
Deswegen ja der Ansatz mit der Ansicht. Da musst du dich um die Zeilenumbrüche eben nicht kümmern.
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: koehlerbv am 14.08.08 - 17:35:25
Sorry für das vergessene Bild - ich habe es nachgereicht (das ist ja wie mit Mail-Attachments  ;D)

Und natürlich kann man leere Elemente speichern. Man sollte es eben nur nicht mit @functions probieren - man kommt bei bestimmten Dingen eben sehr schnell an die Grenzen. Deswegen verstehe ich auch den Programmier vor "Wolge" nicht.

Das mit der Ansicht im Dokument ist natürlich die Alternative: Wie auch immer - ob stino embedded und abhängige Dokumente oder das Prinzip von Werner Götz oder ... Ruft natürlich andere Aufwände hervor (die ich heute aber lieber auf mich nehme).

Was "Wolges" letztes Posting angeht: Ich finde es immer wieder frappierend, wie manche Firmen und Organisationen Geld zum Fenster herausschmeissen. Ein oder zwei Monatsgehälter ihrer Leute werden eingespart, um andererseits viel grössere Mehrkosten zu haben oder eigentlich Geld auszugeben für nix (oder - meist - beides kombiniert).

Bernhard
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: Thomas Schulte am 14.08.08 - 17:40:28
Also du hast ein Array mit folgenden Werten:
Arr(0) = "Ein Wert"
Arr(1) = "Anderer Wert"
Arr(2) = ""
Arr(3) = "Letzter Wert"

Und das übergibst du jetzt an ein Item.
und machst ein Doc.Save
Und anschließend hast du im gespeicherten Dokument ein Item mit 4 Werten stehen bei dem der dritte Wert nicht vorhanden ist? Kannst du das beweisen?

Bei mir kommt da immer ein Item mit 3 Werten raus weil er beim speichern den dritten Wert rausschmeist.
Titel: Re: Formular in dem mehrere Untersubstanzen via Script erstellt werden
Beitrag von: koehlerbv am 14.08.08 - 18:08:18
Kurz und knackig und nur als Beispiel:
Code
Sub Click (Source As Button)
	
	Dim ws As New NotesUIWorkspace
	
	Dim aTest (0 To 2) As String
	
	aTest (0) ="A"
	aTest (1) = ""
	aTest (2) = "B"
	
	ws.CurrentDocument.Document.TestArray = aTest
	Call ws.CurrentDocument.Document.Save (True, False, True)
	ws.CurrentDocument.Document.SaveOptions = "0"
	Call ws.CurrentDocument.Close
	
End Sub

Resultat siehe unten. Mit dem weiteren Umgang im Frontend muss man natürlich entsprechend umgehen.

Bernhard