Autor Thema: Felder setzen  (Gelesen 10518 mal)

Offline TripleH

  • Frischling
  • *
  • Beiträge: 38
  • Ich liebe dieses Forum!
Felder setzen
« am: 10.01.04 - 19:46:39 »
Hallo!
Ich habs soweit hinbekommen das anhand der Status Feld die richtigen Dokumente in der richtigen Ansicht stehen.
Jetzt hab ih auch schon nen bißchen weitergemacht und hab leider wieder nen par Probs.

Es werden immer nur Dokumente in den Ansichten abgelegt welche die Infos der Kalskulationsmaske beinhalten.

1. Macht man z.B. die Ansicht Neu Kunden auf sind dort alle Kunden bei denen im Statusfeld Neu steht.
wählt man eins aus kommt man nur in den Lesemodus des Dokuments. Ich hab jetzt dort einen Button in dem
Dokument der Brief heißt mit folgendem Quelltext "@Command([CloseWindow]);
@If(status =  "neu";@Command([Compose];"BriefNeu");@Command([Compose];"angebot"))"

Allerdings hab ich die Vermutung das er das Feld Status nicht richtig auswerten kann im Lesemodus da er immer
gleich die then anweisung ausfürht und dann zur Maske angebot springt obwohl im Feld Status neu steht.
Weiß jemand Rat wie ich das verbessern kann ohne dabei in den Schreib Modus zu springen?

Das 2. Problm ist das wenn er dann weiter zu der Maske z.B. Brief Neu geht auch die Daten des Dokuments nicht
übernommen werden. Z.B. hab ich ein Feld Name in der Brief neu Maske. Als Vorgabewert hab ich
das Feld name gewählt aus dem Dokument zuvor. Das hängt wohl wieder mt dem Lesemodus zusammen denn wenn
von dem Schreib Modus in den die Maske Brief Neu gehe wird der Name übernommen.

Ich hoffe jemand kann mir weiterhelfen.

Schönen Tag noch.

Basti

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Felder setzen
« Antwort #1 am: 10.01.04 - 20:23:51 »
was passiert denn, wenn du die erste Zeile
@Command([CloseWindow]);
mal rausnimmst?
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TripleH

  • Frischling
  • *
  • Beiträge: 38
  • Ich liebe dieses Forum!
Re:Felder setzen
« Antwort #2 am: 10.01.04 - 20:49:31 »
Hi,
jetzt bist du mir zuvor gekommen hab ich auch grad erkannt.
Aber mein Problem ist immer noch wie ich FelderInhalte einer Maske mit in eine andere nehme?
Normalerweise dacht ich das man beim Vorgabewert immer den Feldnamen einträgt von dem man den Inhalt möchte.
Geht das nur wenn man vorher das Dokument speichert?
Weil ich ruf das Dokument auf und geh von dort in die andere Maske rüber in der die Felder sind welche die Inhalte übernehmen soll.
Gruß Basti

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Felder setzen
« Antwort #3 am: 10.01.04 - 21:11:05 »
Sollte auch im Lesemodus funktionieren.

Hast Du in den Masken-Eigenschaften der neuen Maske "Formulas inherit values from selected document" ausgewählt? In einem deutschen Client entsprechende Bezeichnung....

Ansonsten halt über Script das neue Doc erzeugen. Ich persönlich bevorzuge bei solchen Fällen Script, weil ich da noch mehr steuern kann....
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline TripleH

  • Frischling
  • *
  • Beiträge: 38
  • Ich liebe dieses Forum!
Re:Felder setzen
« Antwort #4 am: 11.01.04 - 12:55:51 »
Hi,
Danke TMC ja war dumm von mir hät ich auch selbst drauf kommen dürfen.
Nun mein neus Prob wie kann man erreichen das in einem Datumsfeld immer das aktuelle Datum steht?

Und 2. Ich hab eine Ansicht Mahnung in der alle die Kunden stehen wo in dem Feld Status in den Dokumenten "nicht bezahlt"
steht.
Ich möcht aber jetzt das sobalb ein Dokument in der Ansicht ausgewählt wurde und somit im Lesemodus angeschaut wurde das das Satus Feld geändert wird und dort Bitte steht.
somit müßte ja dann eigentlich das Dokument nicht mehr dort stehen wenn ich die Ansicht wieder öfne oder?

folgendes hab ich unter Postopen in der Ansicht Mahnung probiert aber haut leider nicht ganz hin:

Sub Postopen(Source As Notesuiview)
   Dim s As NotesSession              
   Set s = New NotesSession
   Dim db As notesdatabase
   Set db = s.CurrentDatabase  
   Dim c As NotesDocumentCollection
   Set c = db.UnprocessedDocuments
   Dim doc As NotesDocument
   For i = 1 To c.Count
      Set doc= c.GetNthDocument(i)
   Next
   Call doc.ReplaceItemValue("Status","Bitte")
   Call doc.Save(True,True)
   
End S

Ich hoffe es kann mit jemand helfen!?:)

Gruß
Basti

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Felder setzen
« Antwort #5 am: 11.01.04 - 13:37:51 »
zu 1: schau dir mal die Hilfe zu @Today an

zu 2: theoretisch dürfte das Dokument nicht mehr auftauchen (wenn die Auswahlformel korrekt ist). Bei dem Thema steig ich aber auch noch nicht so ganz durch. Du könntest versuchen, die ComputeWithForm-Methode deines Document-Objekts aufzurufen, bevor du es speicherst, vielleicht ändert das was an dem Verhalten.
Abgesehen davon finde ich die Vorstellung, dass ein Benutzer alleine durch das Öffnen eines Dokuments einen Feldwert ändert, ohne davon irgendwas mitzukriegen (Messagebox o.Ä.), beängstigend
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TripleH

  • Frischling
  • *
  • Beiträge: 38
  • Ich liebe dieses Forum!
Re:Felder setzen
« Antwort #6 am: 11.01.04 - 16:57:56 »
Hallo!
Ich hab schon probiert aber irgendwo hab ich einen Denkfehler ich hoffe jemand kann mir bei meinem Skript helfen.

Sub Postopen(Source As Notesuiview)
   Dim s As NotesSession              
   Set s = New NotesSession
   Dim db As notesdatabase
   Set db = s.CurrentDatabase  
   Dim c As NotesDocumentCollection
   Set c = db.UnprocessedDocuments
   Dim doc As NotesDocument
 
   For i = 1 To c.Count
      Set doc= c.GetDocument(i)

   Next
   Call doc.ReplaceItemValue("Status","Bitte")
   Call doc.Save(True,True)
   
End S

Also erklärt hab ich genauer 2 weiter oben.
Es handelt sich um eine Ansicht der Spalten wert ist:

name +"," + vorname

und ausgewählt welche Dukomente in der Ansicht stehen ist

select status = "fällig"

Status ist ein Feld.

So bis zur For Schleife ist noch alles Ok. Nur Variablendefinitionen
und das ich nur mit den ausgwählten Dokumenten arbeiten möcht. Das Skript soll eigentlich wenn man ein Skript bearbeitet also öffnet dann das Statusfeld auf "Bitte" setzen.
Ich hab eine For Schleife hier(mit If hab ichs auch schon probiert)
In der For Schleife wird jetzt durchgezählt. Aber da ich maximal nur eins aufeinmal öffnen kann dürfte die Schleife ja eigentlich nur einmal durchlaufen oder?
Kann ich die Dokumente überhaupt so durchzählen das sie nicht nummeriert sind (sie Spaltenwert) oder haben sie im Hintergrund immer noch Nummern?

Mit Set doc= c.GetDocument(i)
dachte ich das ich dann das aktuelle ausgewählte Dokument habe oder?

Und ab hier ist dann wieder richtig denk ich

Call doc.ReplaceItemValue("Status","Bitte")
   Call doc.Save(True,True)
   
End S


Nur im kleinen Mittelteil hakt es irgendwo.Ich hoffe es kann mir jemand helfen. Ich probiers schon den halben Nachmittag.
Vielen Dank.

Gruß

Basti



Glombi

  • Gast
Re:Felder setzen
« Antwort #7 am: 11.01.04 - 17:48:12 »
So geht's:

Sub Postopen(Source As Notesuiview)
  Dim s As NotesSession              
  Set s = New NotesSession
  Dim db As notesdatabase
  Set db = s.CurrentDatabase  
  Dim c As NotesDocumentCollection
  Set c = db.UnprocessedDocuments
  Dim doc As NotesDocument
 
  Set doc= c.GetFirstDocument
  While not (doc is nothing)

    Call doc.ReplaceItemValue("Status","Bitte")
    Call doc.Save(True,True)

     Set doc= c.GetNextDocument(doc)
  Wend

End Sub


Andreas

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Felder setzen
« Antwort #8 am: 11.01.04 - 17:55:56 »
oh, jetzt seh ich es erst. du hast dein Script ja ins postopen-Event der View gepackt.
das event wird ausgelöst, sobald die Ansicht geöffnet wird bzw kurz danach.
ich glaube, das, was du da machst, ist äußerst abenteuerlich, weil du da nicht genau voraussehen kannst, welche Dokumente gerade markiert sind

>Das Skript soll eigentlich wenn man ein Skript bearbeitet also öffnet dann das Statusfeld auf "Bitte" setzen.

Wenn man das Dokument öffnet oder wenn man es bearbeitet?

>In der For Schleife wird jetzt durchgezählt. Aber da ich maximal nur eins aufeinmal öffnen kann dürfte die Schleife ja eigentlich nur einmal durchlaufen oder?

Wie gesagt, dein Script wird nicht gestarte, wenn du ein Dokument öffnest, sondern wenn du die Ansicht öffnest. Und da können theoretisch kein, ein oder mehrere Dokumente gewählt sein.


>Kann ich die Dokumente überhaupt so durchzählen das sie nicht nummeriert sind (sie Spaltenwert) oder haben sie im Hintergrund immer noch Nummern?

Verstehe ich leider nicht. Ist aber wahrscheinlich auch nicht wichtig.

>Mit Set doc= c.GetDocument(i)
dachte ich das ich dann das aktuelle ausgewählte Dokument habe oder?

wenn genau ein Dkument gewählt ist, dann ja


Kurzum, dein Problem liegt vermutlich nicht an deinem Script, sondern an der Stelle, an der du dein Script hast
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TripleH

  • Frischling
  • *
  • Beiträge: 38
  • Ich liebe dieses Forum!
Re:Felder setzen
« Antwort #9 am: 11.01.04 - 18:36:58 »
Hallo!

Ja Postmoker Postopen ist problematisch.
Deshalb hab ich das Skript jetzt jetzt in der Ansicht unter QueryOpenDocument gespeichert.
Das bedeutet das das Skript ausgeführt wird wenn das Dokument geöffnet wird oder seh ich das falsch?
Ich hab Andreas sein Skript eingefügt aber das geht leider auch nicht. Ich würd sagen es ist an der richtigen Stelle.

 Dim s As NotesSession              
  Set s = New NotesSession
  Dim db As notesdatabase
  Set db = s.CurrentDatabase  
  Dim c As NotesDocumentCollection
  Set c = db.UnprocessedDocuments
  Dim doc As NotesDocument
 
  Set doc= c.GetFirstDocument
  While not (doc is nothing)

    Call doc.ReplaceItemValue("Status","Bitte")
    Call doc.Save(True,True)

    Set doc= c.GetNextDocument(doc)
  Wend

Syntaktisch ist das Skript nachvollziehbar.
Es spielt doch aucf keinen Fall der Spaltenwert ne Rolle oder?
Eigentlich doch nur die markierten Dokumente die dann geöffnet werden.

Ich hoffe es kann mit noch jemand helfen und hat ne Idee worans liegen kann da ich kurz vorm Ende bin mit meiner kleinen Übung.

Gruß Bast

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Felder setzen
« Antwort #10 am: 11.01.04 - 19:06:04 »
also in dem Kontext gibt UnprocessedDocuments eine Collection mit 0 Dokumenten zurück
in der Hilfe steht, wie du an das Dokument kommst, das der Benutzer öffnen möchte:
falls du die Hilfe noch nicht hast:

Die Klasse NotesUIView hat ein Attribut Documents:

Read-only. The documents that are currently selected in a view.

Data type
NotesDocumentCollection

Syntax
To get: Set notesDocumentCollection = notesUIView.Documents

Wenn du das Attribut im QueryOpenDocument-Event benutzt gilt für das Documents-Attribut folgendes:
The Documents property contains one document, the document the user wants to open.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TripleH

  • Frischling
  • *
  • Beiträge: 38
  • Ich liebe dieses Forum!
Re:Felder setzen
« Antwort #11 am: 11.01.04 - 20:10:37 »
Hi,
Postmoker oh du bist heut der aktivste Mann.
Wie kann ich das je wieder gut machen!?Ja das hast du gut in Erinnerung das ist mein großes Prob ihne Hilfe.
Ich les im Netzt und ww.anton-tauscher.de
hilft mir nen bißchen.So hab jetzt deine Zeile wie folgt eigefügt.und bekommen jetzt sogar schon mal ne Fehlermeldung
"Variant does not contain an object"
Das hängt mit deinem letten Satz zusammen.
Ich war in den Maskeneigenschaften gewesen aber kann dort diese Attributeinstellung nicht finden:) Hab ich was mißvertanden ?Du meintest doch bei den MaskenOptionen ?

Set s = New NotesSession
  Dim db As notesdatabase
  Set db = s.CurrentDatabase  
  Dim c As NotesDocumentCollection
  Set c = db.UnprocessedDocuments
  Dim doc As NotesDocument
   Set notesDocumentCollection = notesUIView.Documents
 
  Set doc= c.GetFirstDocument
  While not (doc is nothing)

    Call doc.ReplaceItemValue("Status","Bitte")
    Call doc.Save(True,True)

    Set doc= c.GetNextDocument(doc)
  Wend


Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Felder setzen
« Antwort #12 am: 11.01.04 - 20:39:35 »
Dein Problem ist die Zeile
Set notesDocumentCollection = notesUIView.Documents

notesUIView steht wie notesDocumentCollection als Platzhalter für ein Objekt der entsprechenden Klasse.
Das Objekt, das du benötigst wird der Funktion QueryOpenDocument übergeben (Source)

wenn du damit noch nicht klarkommst

Beispiel aus der Hilfe
Sub Queryopendocument(Source As Notesuiview, Continue As Variant)
  Dim docs As NotesDocumentCollection
  Dim doc As NotesDocument
  Set docs = Source.Documents
  Set doc = docs.GetFirstDocument
  If Ucase (doc.Categories(0) ) <> Ucase (workArea) Then
    Continue = False
  End If
End Sub
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TripleH

  • Frischling
  • *
  • Beiträge: 38
  • Ich liebe dieses Forum!
Re:Felder setzen
« Antwort #13 am: 11.01.04 - 21:43:41 »
Hallo!
Oh Thomas. Kannst du mich nicht noch mit der Nase drauf stoßen?
Also notesUIView  steht als Platzhalter.
Aber tut mir Leid ich blicke jetzt hier nicht ganz hinter das Problem ich schau auf meinen Quelltext und seh jetzt nicht ganz was da zu verbessern ist.
Kannst du mir nochmal helfen weil dann könnt ich schon ne ganze ecke mehr schaffen heut.
Wär super nett.
Gruß

Basti

Offline TripleH

  • Frischling
  • *
  • Beiträge: 38
  • Ich liebe dieses Forum!
Re:Felder setzen
« Antwort #14 am: 12.01.04 - 13:34:30 »
Hi, kann sich jemand noch mal dieser Topic zuwenden, da es sich hier um mein Hauptproblem handelt.
Kann jemand mir nicht mal zeigen wie der Quelltext richtig lläuft mit der Zeile
Set notesDocumentCollection = notesUIView.Documents
 da ich anhand des Quelltextes nicht ganz den Sinn erkennen kann.
Das wär super nett.

Gruß

Basti

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Felder setzen
« Antwort #15 am: 12.01.04 - 14:19:04 »
Hallo!
Oh Thomas. Kannst du mich nicht noch mit der Nase drauf stoßen?
Also notesUIView  steht als Platzhalter.
Aber tut mir Leid ich blicke jetzt hier nicht ganz hinter das Problem ich schau auf meinen Quelltext und seh jetzt nicht ganz was da zu verbessern ist.

du musst halt in deinem Code das Wort notesUIView (das ist der Name einer Klasse) durch Source (das ist ein Objekt dieser Klasse) ersetzen.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TripleH

  • Frischling
  • *
  • Beiträge: 38
  • Ich liebe dieses Forum!
Re:Felder setzen
« Antwort #16 am: 12.01.04 - 15:13:58 »
Hallo!
Oh mann es geht immer noch nicht bin ich zu blöd?
Dacht ich eigentlich nicht:)

Ich hab den Text so geändert:

Sub Queryopendocument(Source As Notesuiview, Continue As Variant)
   Set s = New NotesSession
   Dim db As notesdatabase
   Set db = s.CurrentDatabase  
   Dim c As NotesDocumentCollection
   Set c = db.UnprocessedDocuments
   Dim doc As NotesDocument
   Set notesDocumentCollection = Source.Documents
   
   Set doc= c.GetFirstDocument
   While Not (doc Is Nothing)
      
      Call doc.ReplaceItemValue("Status","Bitte")
      Call doc.Save(True,True)
      
      Set doc= c.GetNextDocument(doc)
   Wend
   
   
End Sub

Wo ist mein Fehler?Ich verzweifele schon langsam.

Gruß

Robert

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Felder setzen
« Antwort #17 am: 12.01.04 - 15:31:02 »
schön wäre gewesen, wenn du schreiben würdest, wie das "funktioniert nicht" aussieht (Fehlermeldungen, keine Änderungen am Dokument, etc.)
scheinbar kommen wir so nicht weiter und da du ja nie wieder mit Notes zu tun hast, nachdem du hier fertig bist, hier ein Vorschlag, der funktionieren sollte.

Stand eigentlcih auch schon 2-3 Posts weiter oben aber dann halt nochmal das Beispiel:

Sub Queryopendocument(Source As Notesuiview, Continue As Variant)
  Dim docs As NotesDocumentCollection
  Dim doc As NotesDocument
  Set docs = Source.Documents
  Set doc = docs.GetFirstDocument

'bis hierher kannst du das 1:1 übernehmen.
'dann kommen deine 2 Zeilen
      Call doc.ReplaceItemValue("Status","Bitte")
      Call doc.Save(True,True)

'und fertig.

End sub
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TripleH

  • Frischling
  • *
  • Beiträge: 38
  • Ich liebe dieses Forum!
Re:Felder setzen
« Antwort #18 am: 12.01.04 - 16:17:50 »
Tach auch,

Ich habe deinen Lösungsansatz gerade mal ausprobiert, nun habe ich das Problem, das sich das Statusfeld nicht ändert. Eine Fehlermeldung kommt nicht.
Erst nach schließen des Programms und neu laden ist die Ansicht aktualisiert bzw. das Statusfeld geändert.
Hast du vieleicht auch dafür noch eine Lösung parat?
schon mal danke im voraus.
mfG
Robi!!

Glombi

  • Gast
Re:Felder setzen
« Antwort #19 am: 12.01.04 - 16:19:59 »
So:

Sub Queryopendocument(Source As Notesuiview, Continue As Variant)
dim ws as New NotesUIWorkspace
  Dim docs As NotesDocumentCollection
  Dim doc As NotesDocument
  Set docs = Source.Documents
  Set doc = docs.GetFirstDocument

'bis hierher kannst du das 1:1 übernehmen.
'dann kommen deine 2 Zeilen
      Call doc.ReplaceItemValue("Status","Bitte")
      Call doc.Save(True,True)

'und fertig.

call ws.ViewRefresh

End sub

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz