Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Marie am 18.08.10 - 14:59:54

Titel: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Marie am 18.08.10 - 14:59:54
Hallo Leute,

ich habe eine Datenbank erstellt, mit der ich Angebote verwalte.
Bis jetzt habe ich die Dokumente mit Excel erstellt und dann als WK.3 importiert.
Jetzt möchte ich gerne die ohne Excel auskommen.

Die Datenbank läuft folgendermaßen.
In der Ansicht sind alle Angebote als Übersicht aufgelistet. Wenn ich nun mit Doppelklick auf ein Angebot gehe, dann öffnet sich eine Maske (Maske 1) in der alle wichtigen Details vorhanden sind.

Jetzt möchte ich über einen Button ein Neues Dokument erstellen.
Da in der Maske1 aber auch andere Daten und viel Text ist, möchte ich eine Eingabeform haben. Ich dachte an eine Maske (Maske2), muß es aber nicht unbedingt sein. So etwas wie in Excel eine Userform wärer super.

Wie gesagt, bis jetzt habe ich eine Maske2 genommen, wenn ich jetzt aberd en datensatz erstellt habe, dann taucht er auch in der Ansicht auf, sollte ich diesen jetzt aber anklicken, dann will ich ja wieder die Details in maske1 sehen, es öffnet sich aber Maske2...???

Hat vielleicht jemand eine Idee???

Lieben Gruß marie
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Axel am 18.08.10 - 15:19:56
Wie gesagt, bis jetzt habe ich eine Maske2 genommen, wenn ich jetzt aberd en datensatz erstellt habe, dann taucht er auch in der Ansicht auf, sollte ich diesen jetzt aber anklicken, dann will ich ja wieder die Details in maske1 sehen, es öffnet sich aber Maske2...???

Das ist auch logisch, da das Dokument mit Maske 2 erstellt wurde.

Ansonsten verstehe ich leider im Moment nur Bahnhof, was du genau erreichen willst.

Willst du ein ganz neues Dokument erestellen oder nur Daten in ein bestehendes einfügen?

Beschreibe mal die Sache so genau wie möglich, damit es ein Außenstehender auf versteht.

Axel
 
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Marie am 18.08.10 - 15:35:47
Hallo,

also, ich will nur ein neues Dokument erstellen, aber nicht mit der Maske1.

Ich möchte mit einer Userform oder Eingabemaske ein neues Dokument erstellen, welches in der Ansicht sichtbar ist, und dann die Details in Maske1 anzeigt.
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: koehlerbv am 18.08.10 - 15:39:14
Da führen viele Wege nach Rom und sind vor allem davon abhängig, wie fit Du in der Notes-Programmierung bist: Nur Formelsprache, Anfänger oder fortgeschrittener LS-Coder?

Bernhard
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Marie am 18.08.10 - 15:55:09
Hallo Bernhard,

ich würde sagen ein Anfänger.

Klappt aber mit etwas übung schon recht gut...
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: klaussal am 18.08.10 - 16:02:26
Anfänger(in) in Formel oder Script oder was ?
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Marie am 18.08.10 - 16:13:06
...in script...
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: koehlerbv am 18.08.10 - 16:18:25
Okay, was für den Anfänger: Du kannst im QueryClose Deiner Maske 2 das Item "Form", das ja die zu verwendende Maske bestimmt, umsetzen in "Maske 1":

If Source.Document.Form (0) = "Maske1" Then
    ....
End If

Achtung - Anfängerfalle: Du kannst das nicht im scheinbar naheliegenderen QuerySave machen - das ist dort unmöglich, da das Dokument noch rein vom Frontend gesteuert wird.

Die If-Abfrage erspart Dir ... okay, das kannst Du sicherlich selbst erkennen  ;)

Bernhard
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Peter Klett am 18.08.10 - 16:22:46
Wenn ich das richtig verstehe, willst Du das Dokument mit der Maske2 erstellen, aber wenn es später gelesen werden soll, soll Maske1 verwendet werden. Korrekt?

Dann würde ich beim Schließen des Dokuments (sofern dann noch die Zugriffsrechte auf das Dokument bestehen) den Inhalt des Feldes Form in "Maske1" ändern, falls er noch "Maske2" ist.

-> Ok, Bernhard war schneller. Was machst Du mit späteren Änderungen des Dokuments? Wenn Du die Änderung im Queryclose vornimmst (da gehört sie hin), musst Du das Dokument auch noch speichern.
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Axel am 18.08.10 - 16:25:32
Ich möchte mit einer Userform oder Eingabemaske ein neues Dokument erstellen, welches in der Ansicht sichtbar ist, und dann die Details in Maske1 anzeigt.

Ok. Sollen in der "Userform" alle Felder von Maske1 angezeigt werden oder nur ein paar? Wie komplex ist den Maske1 (Tabs, Tabellen, Abschnitte u. ä.)?

Axel
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Marie am 18.08.10 - 16:28:16
also, anscheinend bin ich doch blutiger Anfänger.
Ich kann das noch nicht so ganz umsetzten.

Spätere Änderungen kann ich auch in Maske1 machen.

Ich will nur die erste Dateneingabe in Maske 2 erstellen (Es muß aber nicht zwingend eine Maske sein.

Der Umfang ist nicht so riesig. Es sind vielleicht insgesamt 25-30 Felder in die etwas eingetragen wird.
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Peter Klett am 18.08.10 - 16:31:52
Es muß aber nicht zwingend eine Maske sein.
Doch
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: TRO am 18.08.10 - 16:40:46
Ich will nur die erste Dateneingabe in Maske 2 erstellen (Es muß aber nicht zwingend eine Maske sein.

Dann packe in Maske2 ein verborgenes Feld mit dem Namen "Form" rein, berechnet, Formel "Maske1". Das ist alles. Spätestens beim Speichern wird dieses Feld neu berechnet und hat dann den Wert "Maske1". Keine Stunts mit QuerySave/QueryClose notwendig.

hth

Thomas
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Axel am 18.08.10 - 16:47:24
Neben der von Bernhard aufgezeigten Möglichkeit, gibt's eine weitere. Die ist aber mit etwas mehr Aufwand verbunden, ist aber für einen Anfänger vielleicht etwas einfacher zu durchschauen.


Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim db As NotesDatabase
Dim newdoc As NotesDocument
Dim dlgdoc As NotesDocument

Set db = session.CurrentDatabase
Set dlgdoc = New NotesDocument(db)

'Dialog anzeigen und wenn mit OK bestätigt wird neues Dokument mit Maske 1 angelegt.   
If workspace.DialogBox( "Maske2", True, True, False, False, False, False, "Neues Dokument", dlgdoc, True) Then

  'Neues Dokument mit Maske1 anlegen
  Set newdoc = New NotesDocument(db)
  newdoc.Form = "Maske1"
  
  'Daten aus den Dialogfeldern in die Felder der Maske 1 einfügen
  newdoc.Feldname_1 = dlgdoc.Feldname_aus_Dialog_1
  newdoc.Feldname_2 = dlgdoc.Feldname_aus_Dialog_2
...
  newdoc.Feldname_n = dlgdoc.Feldname_aus_Dialog_n

  'Neues Dokument speichern
  newdoc.Save(True, False)
End If

Axel
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Marie am 18.08.10 - 16:52:54
Hallo Axel,

kann ich den Code als aktion über einen Button als Java Script starten?
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Marie am 18.08.10 - 16:56:03

    Re: Neues Dokument über eine Maske o.ä. erstellen
« Antworten #12 am: Heute um 16:40:46 »   

--------------------------------------------------------------------------------

Zitat von: Marie am Heute um 16:28:16
Ich will nur die erste Dateneingabe in Maske 2 erstellen (Es muß aber nicht zwingend eine Maske sein.


Dann packe in Maske2 ein verborgenes Feld mit dem Namen "Form" rein, berechnet, Formel "Maske1". Das ist alles. Spätestens beim Speichern wird dieses Feld neu berechnet und hat dann den Wert "Maske1". Keine Stunts mit QuerySave/QueryClose notwendig.

hth

Thomas
 
 
 
 
wenn ich dann ein Datensatz erstelle, dann erscheint er nicht mehr in der Ansicht!?!
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Marie am 18.08.10 - 16:57:36
 'Daten aus den Dialogfeldern in die Felder der Maske 1 einfügen
  newdoc.Feldname_1 = dlgdoc.Feldname_aus_Dialog_1
  newdoc.Feldname_2 = dlgdoc.Feldname_aus_Dialog_2
...
  newdoc.Feldname_n = dlgdoc.Feldname_aus_Dialog_n


Wenn in beiden Masken ein Feld "SFA-Nr" heißt, was muß ich denn dann hier eingeben?
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Axel am 18.08.10 - 16:58:52
Hallo Axel,

kann ich den Code als aktion über einen Button als Java Script starten?

Als Aktion ja, aber nicht als JavaScript, sondern als LotusScript.

Der Code ist aber nur als Beispiel gedacht. Den musst du dir entsprechend anpassen.

Axel
 
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Axel am 18.08.10 - 17:00:34
Wenn in beiden Masken ein Feld "SFA-Nr" heißt, was muß ich denn dann hier eingeben?

...
newdoc.SFA-Nr = dlgdoc.SFA-Nr
...


Axel
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: koehlerbv am 18.08.10 - 17:29:55
Dann packe in Maske2 ein verborgenes Feld mit dem Namen "Form" rein, berechnet, Formel "Maske1". Das ist alles. Spätestens beim Speichern wird dieses Feld neu berechnet und hat dann den Wert "Maske1". Keine Stunts mit QuerySave/QueryClose notwendig.

Thomas, dieses Verfahren muss nicht unbedingt sicher sein. Aber wir sollten Marie jetzt nicht verunsichern, sie hat eh noch einen weiten Weg vor sich.

Benrhard
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: TRO am 18.08.10 - 19:27:20
Dann packe in Maske2 ein verborgenes Feld mit dem Namen "Form" rein, berechnet, Formel "Maske1". Das ist alles. Spätestens beim Speichern wird dieses Feld neu berechnet und hat dann den Wert "Maske1". Keine Stunts mit QuerySave/QueryClose notwendig.

Thomas, dieses Verfahren muss nicht unbedingt sicher sein.
Benrhard

???
Was ist daran nicht sicher? Mit dem Konstrukt ist mir seit min. 15 Jahren noch nie was daneben gegangen.

Thomas
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Marie am 18.08.10 - 19:37:31
Thomas, kannst Du mir die Einstellungen für das Feld näher beschrieben. Muß ich trotzdem noch die fOrmel im Queryclose haben?
Dann funzt es nähmlich nicht?
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: koehlerbv am 18.08.10 - 20:32:50
@Thomas: Ich muss den initialen Fall nochmal heraussuchen, es betraf aber auf jeden Fall ein Konstrukt, das später eingefügt wurde und dazu führte, dass das Frontend-Speichern durch eine Backend-Aktion überlagert wurde (SaveOptions und so). Das Feld "Form" war da echt eine Falle.

Thomas, kannst Du mir die Einstellungen für das Feld näher beschrieben. Muß ich trotzdem noch die fOrmel im Queryclose haben?
Dann funzt es nähmlich nicht?
@Marie: Thomas hat wirklich alles beschrieben - dass Du Dir dann QueryClose-Code (und das wäre keine Formel!) sparen kannst und wie das Feld aufzubauen ist. Mehr gibt es dazu gar nicht mehr zu sagen.
Weiterhin: Das Feld und der von mir angedeutete Code im QueryClose können sich gar nicht behindern, das wäre nur "doppelt gemoppelt". Du musst also einen ganz anderen Fehler machen - und bitte hierzu konkrete Fragen stellen. "Funzt nicht" ist keine Aussage.

Bernhard
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Marie am 19.08.10 - 08:04:11
Hallo Thomas,

Ich habe ein einfaches Feld in die Maske eingefügt, habe die Typ Text und berechnet eingestellt. Im unteren Fenster  (Form(feld): Wert habe ich Angebotsübersicht (Maske2) eingegeben (ohne = oder "")

Wenn ich diese Feld in der Maske habe, erscheint der neue Datensatz nicht in der Ansicht, entferne ich es weider ist der Datensatz in der Ansicht.

Hast Du eine Ahnung warum?

Gruß Marie

Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Peter Klett am 19.08.10 - 08:08:45
Versuchs mal mit

"Angebotsübersicht"

anstelle

Angebotsübersicht

Im zweiten Fall schreibst Du den Wert des Feldes Angebotsübersicht in das Feld Form. Da es dieses Feld vermutlich nicht gibt, steht dann nichts in Form. Wenn in der Ansicht auf die Form "Ansichtsübersicht" selektiert wird, ist klar, warum Du die Dokumente nicht siehst.
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: klaussal am 19.08.10 - 08:09:04
Zitat
Im unteren Fenster  (Form(feld): Wert habe ich Angebotsübersicht (Maske2) eingegeben (ohne = oder "")

Kannst Du dich bitte mal präziser ausdrücken ?
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Marie am 19.08.10 - 08:35:05
vielen Dank Peter, so funktioniert es.

Eine Frage habe ich noch. In der Übersichtsmaske habe ich auch einige Felder die berechent werden. Jetzt kann es sein, daß ich nicht alle Felder bei der Angebotserstellung ausfülle. Kann ich einigen Feldern einen Standartwert von "0" zuweisen, den Sie haben. gerade dann, wennuch wenn ich nichts eingegeben habe?
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Axel am 19.08.10 - 08:39:31
Das kannst recht einfach über die Formel für die Eingabevalidierung machen.

Beispiel für ein Textfeld:   @If(@ThisValue = ""; "0"; @Thisvalue)

Axel
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Marie am 19.08.10 - 08:59:36
suuuper, vielen Dank schonmal an alle, die mir wirklich geholfen haben. Einige in diesem Forum reden ja immer nur und scheinen sich als Edle Ritter zu verstehen, die die Welt der Foren "säubern" wollen...

Aber wie gesagt... VIELEN DANK...

Kann ich diese Formel (oder Code)

@If(@ThisValue = ""; "0"; @Thisvalue)

auch so einbauen, daß die Zellen nur null sind, nachdem ich die Maske schließe. Jetzt sind die Zellen ja "0", und ich muß sie überschreiben. Ich würde es besser finden, wenn diese leer sind, und sie sich nur mit "0" füllen, sollte ich nichts eintragen und die Makse so schließen.

Wenn es nicht geht, ist es auch nicht schlimm...
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: ascabg am 19.08.10 - 09:06:26
Hallo,

Nein, kannst Du leider nicht.

@ThisValue bezieht sich nur auf den Wert des Feldes, in dem sich der Cursor (welches den Focus hat) befindet.


Andreas
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Axel am 19.08.10 - 09:18:49
... auch so einbauen, daß die Zellen nur null sind, nachdem ich die Maske schließe. Jetzt sind die Zellen ja "0", und ich muß sie überschreiben. Ich würde es besser finden, wenn diese leer sind, und sie sich nur mit "0" füllen, sollte ich nichts eintragen und die Makse so schließen.

Wo hast du denn die Formel eingebaut?

Die Eingabevalidierung wird nur ausgeführt wenn das Dokument aktualisiert oder gespeichert wird.
 

Axel
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Peter Klett am 19.08.10 - 09:31:52
Ich würde es besser finden, wenn diese leer sind, und sie sich nur mit "0" füllen, sollte ich nichts eintragen und die Makse so schließen.
Dann solltest Du das im Querysave für alle relevanten Felder machen
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: Marie am 19.08.10 - 09:34:21
ich habe es im "Design Pane" der jeweiligen Felder eingegeben...
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: BigWim am 19.08.10 - 10:45:08
@If(@ThisValue = ""; "0"; @Thisvalue)

Vielleicht darf ich auch noch meinen Senf dazugeben: Trotz besseren Wissens achte ich nicht immer so konsequent auf die Variablentypen, was mich schon oft in gewisse Verlegenheiten gebracht und zu unschönen Klimmzügen veranlaßt hat.

Das Thema "Angebotserstellung" hört sich sehr nach Zahlen an, deshalb solltest Du vielleicht überlegen, ob ein
Code
@If(@ThisValue = ""; 0; @Thisvalue)
nicht angebrachter ist ....

Markus
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: koehlerbv am 19.08.10 - 23:20:59
... vielen Dank schonmal an alle, die mir wirklich geholfen haben. Einige in diesem Forum reden ja immer nur und scheinen sich als Edle Ritter zu verstehen, die die Welt der Foren "säubern" wollen...

Marie, das war in Bezug auf das AtNotes-Forum ein ganz übler Rundumschlag, den Du Dir bitte nochmal überlegen und auch korrigieren solltest!
"Edle Ritter" sind hier alle, die bemüht sind, anderen bei ihren Problemen mit Notes / Domino zu helfen. Es gibt keinen, der "die Welt der Foren säubern" wollte - der wäre längst schon ausgeschlossen. Mit Deiner vagen Andeutung diskreditierst Du zudem all die Personen, die Dir vielleicht helfen wollten, aber nicht mehr mussten (weil es bereits ein anderer getan hat).

Folgende Anmerkungen sollen Dir helfen, zukünftig besser an Notes-Probleme heranzugehen. Wenn Du mich für diese Aufzählung verdammst, wäre mir das ziemlich egal. Wenn Du das nicht tust, würde nicht ur mich das sehr freuen - Du wärst dann in der AtNotes-Gemeinschaft angekommen.
- Erkenne an, dass Du ein blutiger Anfänger bist. So, wie wir das alle einmal waren (nenne mir ein AtNotes-Mitglied, dem das erkennbar nicht bewusst ist)
- Löse Dich komplett von dem, was Du von Excel weisst. Das ist eine andere Welt, eine ganz andere (und das heisst nicht "schlechtere", sondern wirklich nur anders)
- Stelle konkrete Fragen und schildere so konkret wie möglich das von Dir beobachtete. Deine Fragen kosten unsere Zeit, und lückenhafte Beschreibungen ermüden unsere Kristallkugeln.
- Arbeite Dich an Hand Dir zur Verfügung stehender Dokumentationen (in erster Linie die DesignerHelp) in die Programmierung ein.
- Fordere von Deinem Arbeitgeber, dass er Dich hierbei unterstützt. AtNotes ist nicht die billige Werkbank Deiner Firma.

Und: Wenn Du an einem AtNotes-Mitglied konkret Kritik äussern möchtest, dann tue das auch konkret mit Namensnennung und Benennung der Ursache. Was Du "kritisiert" hast, ist in Wirklichkeit "Gezicke" und geht an den Tatsachen vorbei.

Bernhard
Titel: Re: Neues Dokument über eine Maske o.ä. erstellen
Beitrag von: koehlerbv am 19.08.10 - 23:25:29
ich habe es im "Design Pane" der jeweiligen Felder eingegeben...

Zurück zum Thema:
Das Du das im design pane eingegeben hast, ist schon klar - woanders kann man das ja gar nicht. Aber wo in Bezug auf die Felder? Input validation? Default value? Oder wo?

Beschreibe bitte nochmal genau an *einem* Besipiel, was Du vor hast. Umsetzbar sein wird das bestimmt, soweit ich Deine bisherigen Aussagen verstehe. Wichtig wäre auch: Betrifft das nur Felder, die Du in der "Schnelleingabemaske 2" hast oder die in Maske 1?
Beachte bitte auch den Hinweis von Markus in Bezug auf die Datentypen, denn "0" ist absolut nicht gleich 0, und der "19.08.2010" hat überhaupt nichts zu tun mit 19.08.2010.

Bernhard