Autor Thema: Typisch Notes  (Gelesen 13669 mal)

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Typisch Notes
« am: 28.02.07 - 14:38:01 »
Hi @all,

stehe gerade vor einem Notes Feature. Folgendes.

Neues Dokument wird mit Maske 1  ( @command([compose.... erstellt ) geöffnet. Während der Eingabe entscheidet sich der User aber noch ein Dokument mit Maske zwei (aus Maske 1) zu erstellen. Inhalte soll natürlich von Maske 1 in Maske 2 (Formeln übernehmen Daten aus gewähltem Dokument) übernommen werden. Und was passiert ? Es werden tatsächlich Inhalte übernommen, nur nicht aus dem geöffnetem Dokument (Maske 1) sondern aus dem markiertem Dokument aus der darunterliegenden Ansicht.

: )
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Typisch Notes
« Antwort #1 am: 28.02.07 - 14:50:49 »
Gehört ja auch so. Steht in den Eigenschaften der Maske: Formeln übernehmen Werte aus markiertem Dokument

So is das mit dem Licht, mal brennt's und mal brennt's nicht

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Typisch Notes
« Antwort #2 am: 28.02.07 - 14:52:09 »
du solltest die Werte per LS in die neue Maske übertragen.

Gruß Ronny
So is das mit dem Licht, mal brennt's und mal brennt's nicht

Glombi

  • Gast
Re: Typisch Notes
« Antwort #3 am: 28.02.07 - 14:55:00 »
Und wenn dann noch der User die <Strg> Taste gedrückt hält ist das Chaos perfekt. So kann man nämlich "Werte übernehmen aus gewähltem Dokument" ausschalten, egal was der Programmierer eingestellt hat  ;)

Andreas

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Typisch Notes
« Antwort #4 am: 28.02.07 - 14:55:50 »
Hö, das kannte ich auch nicht. Man lernt nie aus  ;D
So is das mit dem Licht, mal brennt's und mal brennt's nicht

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Typisch Notes
« Antwort #5 am: 28.02.07 - 14:58:16 »
Aber zurück zum Thema:

Setz einfach einen Aktion Button ind Maske, mit dem du ein neues Dokument öffnst und alle Werte aus dem aktuellen Dokument (notesUIWorkspace.CurrenDocument.Document) im Backend in das neue Überträgst und es dann zur bearbeitung öffnest.


Gruß Ronny
So is das mit dem Licht, mal brennt's und mal brennt's nicht

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Typisch Notes
« Antwort #6 am: 28.02.07 - 14:59:06 »
Ja, und wenn er STRG + Q drückt sagt er mein Notes geht immer zu wenn ich das @ einfügen will
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Typisch Notes
« Antwort #7 am: 28.02.07 - 15:03:35 »
Das im Backend zu erledigen, scheint hier die einzige Möglichkeit. Leider muss man dann auch alle wichtigen versteckten Felder setzen.  Bei Drei Felden wäre das ja kein Problem. Aber in diesem Fall könnten das mal locker 30 Felder sein. : ) Hier wird Notes zur Fleissarbeit.

Ein Compose auf ein selbst gewähltes doc wäre hier genau das richtige. Ein Backend-Dokument Stück für Stück zusammenzubauen ist doch super lästig.
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline w3dev

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Typisch Notes
« Antwort #8 am: 28.02.07 - 15:17:03 »
Nimm doch einfach doc.CopyAllItems(docNew)
So is das mit dem Licht, mal brennt's und mal brennt's nicht

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Typisch Notes
« Antwort #9 am: 28.02.07 - 15:21:06 »
Sind unterschiedliche Masken mit unterschiedlichen Feldern und unterschiedlicher Anzahl von Feldern. So gehts nicht.
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: Typisch Notes
« Antwort #10 am: 28.02.07 - 15:34:38 »
Wie wärs mit einer Liste der zu übernehmenden Felder und einer superkleinen Schleife, die eben diese Felder kopiert?
+++To be human is more important than to be important!+++

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Typisch Notes
« Antwort #11 am: 28.02.07 - 15:46:00 »
Die Idee ist nicht schlecht. vielleicht kann man das so dynamisch bauen, dass der Code wiederverwendbar wird.

Ich probiere das mal aus.
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Typisch Notes
« Antwort #12 am: 28.02.07 - 15:50:32 »
Gerade der wiederverwendbare Teil ist das kleinste Element - das lohnt also nicht.

Und die List erfordert kaum mehr Schreibarbeit als in der Maske Feld X der Maske A Feld Y der Maske B zuzuordnen - wobei genau dies für die spätere Entwicklung grosse Gefahren birgt, die man mit dem Verfahren wie von Thomas beschrieben umgeht.

Bernhard

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Typisch Notes
« Antwort #13 am: 28.02.07 - 16:17:53 »
Also ich finde schon, dass sich das lohnt, die Sache so zu gestalten, dass es wiederverwendbar ist. Ich bin der Meinung, dass sobald man etwas zwei mal schreibt, man versuchen sollte, diese Sache so zu gestalten, dass es wiederverwendbar ist. Und ich glaube nicht, dass das wiederverwendbar Gestalten hier extrem aufwendig ist.

So weit ich das verstanden habe geht es doch rein um ein rüberkopieren und evtl umbenennen von Feldern. Und das geht wunderbar mit einer List zu lösen:
  • ListTag enthält Quellfeldnamen
  • ListValue enthält Zielfeldnamen
Verpackt man dieses in einer Klasse, die eben diese List dann abarbeitet für ein Quell- und ein Zieldokument(sind dann Attribute der Klasse und werden über den Konstruktor zusammen mit der List gesetzt), so ist das eigentlich relativ schnell geschrieben. Ich habe was ähnliches mal für das kopieren und umsetzen zwischen zwei Datenbanken gemacht.
« Letzte Änderung: 28.02.07 - 16:20:45 von MadMetzger »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Typisch Notes
« Antwort #14 am: 28.02.07 - 16:26:58 »
Ich bin ein wirklicher Fan von wiederverwendbaren Code (und habe deswegen schon einige Prügel eingesteckt, wenn die Erstentwicklung "zu lange" dauerte - weil ich eben die Wiederverwertbarkeit gleich berücksichtigt habe - und niemals Lob, als es später dann um so schneller ging).

Hier meine ich aber - an "Lotus-Schmidts" Beispiel  - dass hier der Aufwand nicht so richtig lohnt:
List-Variable füllen = 30 Zeilen
Werte übertragen: 3 Zeilen

Mehr wollte ich mit meiner Kritik nicht sagen.

Bernhard

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Typisch Notes
« Antwort #15 am: 28.02.07 - 16:31:27 »
Dann habe ich das eben ein bißchen falsch aufgefasst und wir sind eigentlich der gleichen Meinung.

Aber diese Feldübernahme ist ja eine Sache die durchaus öfter vorkommen kann und man diese eben in einen "Werkzeugkasten" übernehmen könnte und dann bei Bedarf aus der Tasche ziehen kann... Daher kam mir die Aussage komisch vor. Das Verhältnis hier zwischen Code für Iteration und Code für Aufbau der Zuordnung war mir klar, aber ich sehe hier durchaus Nutzen, das so anzugehen.

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Typisch Notes
« Antwort #16 am: 01.03.07 - 01:43:53 »
Als Klasse mit zugegebenermassen zu wenig errorhandling

Code
Public Class DocCopyFactory
	Private db As NotesDatabase
	Private fieldNames As Variant
	
	Sub New (fieldNamesIn As String)
		' first get the names of the fields which should be copied. 
		
' if (fieldNamesIn == null) throw new ilegalArgumentException (no idea how to code that in LS)
'		extracted as tokens separated by ~ (by convention) 		
		fieldNames = Split(fieldNamesIn, "~")
		
		Dim s As New NotesSession
		Set db = s.CurrentDatabase
	End Sub
	
	Public Function copyDocument(docToCopy As NotesDocument, formCopyDocument As String) As NotesDocument
		
		' document to return
		Set copyDocument = db.createDocument ' return value
		copyDocument.form=formCopyDocument
		
		' copy the items
		Dim itemDocToCopy As NotesItem
		Forall fieldName In fieldNames
			Set itemDocToCopy = docToCopy.GetFirstItem(fieldName)
			If Not itemDocToCopy Is Nothing Then
				Call itemDocToCopy.CopyItemToDocument(copyDocument, fieldName)
			Else 
				' do some better errorhandling or logging than this. 
				Print "NO GOOD. The item " + fieldName + " does not exist in the document to be copied."
			End If
		End Forall	
	End Function
	
End Class

wird so angesprochen:
(Client code für Klasse)
Code
Dim s As New NotesSession
	Dim docOriginal As NotesDocument
	Dim docNochneKopie As NotesDocument
	Dim aDocCopyFactory As New DocCopyFactory("item1~item2~item3")
	
	Set docOriginal = s.DocumentContext	
	Set docKopie = aDocCopyFactory.copyDocument(docOriginal, "Kopie von original")  
	docKopie.save True, False
	
	Set docNochneKopie = aDocCopyFactory.copyDocument(docOriginal, "Kopie von original")  
	docNochneKopie.save True, False
	

In der Beispiel DB in Agenten DocCopyFactory.

In BeispielDB sich in der Ansicht "Alle" auf das einzige Dokument stellen und dann den einzigen button mit der Beschriftung "push the button" drücken. Der startet den Client code für die Klasse (im Agenten DocCopyFactory).
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Typisch Notes
« Antwort #17 am: 01.03.07 - 08:54:16 »

' if (fieldNamesIn == null) throw new ilegalArgumentException (no idea how to code that in LS)
 
      

Kein Wunder, dass Notes dich hier anmeckert. Diese Art von Codierung erinnert mich an C(++ oder #).

In Notes kann das so ausehen:

   Sub New (fieldNamesIn As String)
      ' first get the names of the fields which should be copied.
      
                                if fieldNamesIn = "" Then Exit Sub

'      extracted as tokens separated by ~ (by convention)       
      fieldNames = Split(fieldNamesIn, "~")
      
      Dim s As New NotesSession
      Set db = s.CurrentDatabase
   End Sub


Das wäre die einfachste Form und ist mit Sicherheit ausbaufähig.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Typisch Notes
« Antwort #18 am: 01.03.07 - 10:09:37 »
Hallo Axel,

ich wusste, dass das kein LS ist. Hab das nur zur Markierung dagelassen, weil mir um 1:45 Uhr nachts das nicht einfiehl.

Gruß Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Typisch Notes
« Antwort #19 am: 01.03.07 - 11:02:15 »
Der Code kopiert aber nicht den Inhalt von Feld A (in Doc X) nach Feld B (in Doc Y), sondern schaufelt "nur" die Items einfach so rüber.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz