Beiträge von HeikoE

    Wie deklaierst du den genau?
    Wie bekommst du einen String in dieser Form in die Variable?


    Oder willst du so einen String aus einem Feld herauslesen?


    gruß
    heiko

    Hallo zusammen,


    ich muss mich erneut an euch wenden.
    Ich bin immernoch dabei Dokumente zu erzeugen. Mein problem ist folgendes:
    Im Debugger erkenne ich, dass in der Sub LaufendeNummer alles korrekt abgearbeitet wird und auch doc.txtLNummer = neuenummer durchgeführt wird.


    In der Sub Querysave wird alles korrekt bis zum end sub durchlaufen.


    Danach startet die Sub aber wieder in der Zeile Set doc = source.document und läuft erneut durch.
    Nun ist das problem, dass in der Methode LaufendeNummer das doc cniht gespeichert wird und daher die txtLNummer nicht im doc übernommen ist, daher wird erneut eine laufende Nummer mit einem neuen Dokument erzeugt.


    Was mich nun wundert sind 2 Dinge:
    1. Wieso wird der Wert nicht ins Doc übernommen?(wenn ich doc.save mache wird es auch nicht übernommen)
    2. Wieso läuft das gerade 2x durch?


    Ich bin über eure Hinweise dankbar, auch andere Nachfragen konnten mir bisher nciht weiterhelfen, sie wundert das ebenso.


    Danke


    gruß
    Heiko


    Coding der betroffenen Methoden:


    Querysave:

    Code
    Sub Querysave(Source As Notesuidocument, Continue As Variant)	Dim doc As NotesDocument	Set doc = source.document	'Ermöglichen der temporären Sicherung	If doc.wfValidationFlag(0)<>"1" Then Exit Sub	'Verhindert das abgeschlossene Dokumente vor dem Beenden auf Fehler geprüft werden	If doc.wfStatus(0)<>"Completed" Then		Call VorEnde(Source, Continue, doc)	End If	If Not Continue Then Exit Sub	'Erzeugt eine laufende Nummer für das Dokument	If doc.wfAlias(0) ="StartRequest" Then		If doc.txtLNummer(0) ="" Then			Call LaufendeNummer (doc)		End If	End If	End Sub


    LaufendeNummer:


    Code
    Sub LaufendeNummer (doc As NotesDocument)	Dim doc2 As NotesDocument	Dim db As Notesdatabase	Dim session As New NotesSession	Dim view As NotesView	Dim num As Double	Dim note As NotesDocument	Dim neunummer As Integer	Set db = session.currentDatabase	Set view =db.getView("$LaufN")	Set note=view.getLastDocument	If Not note Is Nothing Then		num# = Val(Cstr(note.txtLNummer(0)))	Else		Set view =db.getView(".AdminSettingsView")			Set note =view.getDocumentbyKey("9")		num# = Val(Cstr(note.txtLNummer(0)))	End If	Dim LNdoc As NotesDocument	Set LNdoc = db.CreateDocument	neunummer = num +1	LNdoc.Form= "LID"	LNdoc.txtNummer = doc.txtNummer	LNdoc.txtLNummer=neunummer	LNdoc.namAuthor = session.username	LNdoc.ymdCreatedAt =Now	doc.txtLNummer = neunummer	Call LNdoc.save(False,False)End Sub


    VorEnde:


    Und das funktioniert bei dir so?


    Ich habe ein ähnliche Funktion und die erstellt mir 2 Neue Dokumente bei jedem Durchlauf. (Ich habe die Querysavefunktion teilweise ausgelagert.)


    Gruß
    heiko

    In Vor Ende werden Felder überprüft:



    Ja wenn das funktioniert werde ich Nummern generieren lassen, aber dazu muss die Sache ersteinmal funktionieren. Dann kommen da auch noch weitere felder rein.


    Grüße
    heiko

    In den Methoden Queryclose und Postsave steht nix drin.


    Die Methode Querysave sieht so aus:


    Code
    Sub Querysave(Source As Notesuidocument, Continue As Variant)	Dim doc As NotesDocument	Set doc = source.document	Call VorEnde(Source, Continue)	If doc.wfAlias(0) ="StartRequest" Then		Dim db As Notesdatabase		Dim session As New NotesSession		Set db = session.currentDatabase		Dim doc2 As NotesDocument		Set doc2 = db.CreateDocument		Print "Erstellt"+ Now		doc2.Form= "LID"		Call LaufendeNummer (doc2)	End IfEnd Sub


    Und in der Methode LaufendeNumemr ist das drin:


    Code
    Sub LaufendeNummer (doc2 As NotesDocument)
    
    
    	doc2.txtNummer = "Nummer"
    	doc2.txtLNummer="2"	
    	Call doc2.save(True,True)
    
    End Sub


    Mehr gibt es im Moment noch nicht.

    Zitat


    Diali schrieb:
    was ist doc? Dürfte noch objectlos sein. Es fehlt ein Set doc = ...
    Wahrscheinlich dürfte es Set doc = Source.Document sein.


    Gruß
    Dirk


    Das stimmt. Ich habe nciht alles aus der Querysave kopiert, denn das andere funktioniert alles. Es geht einzig um den Aufruf der LaufendenNummer.

    Hallo,


    ich muss beim Speichern eines Dokumentes ein neues erzeugen und dazu einige Daten aus dem Dokument in das neue speichern.


    Ich habe das im Querysave mit einer Sub eingebunden. Leider kommt die Meldung IlLEGAL USE OF PROPERTY sobald ich das neue Dokument bearbeiten will.


    Mein Coding im Querysave:


    Code
    If doc.wfAlias(0) ="StartRequest" Then		Dim db As Notesdatabase		Dim session As New NotesSession		Set db = session.currentDatabase		Dim doc2 As NotesDocument		Set doc2 = db.CreateDocument		doc2.Form("LID")		Call LaufendeNummer (doc2)	End If


    Coding in der Sub:


    Code
    Sub LaufendeNummer (doc2 As NotesDocument)
    
    
    	doc2.txtNummer = "Nummer"
    	doc2.txtLNummer="2"	
    	Call doc2.save(True,True)
    
    End Sub


    Hinweis: Auch als ich das Dokuemtn in der Sub erzeugt habe ging es nicht.


    Ich wäre über jede Hilfe dankbar!


    grüße


    Heiko

    Zitat


    Diali schrieb:
    bau Dir doch eine Fehlerbehandlung ein und setze dann err auf einen Wert ungleich 0.


    Gruß
    Dirk


    So ich hab jetzt die Lösung gefunden.
    Ich habe meinen Agenten so umgebaut, dass er die entsprechende Abfrage bereits im Initialize abfängt und abbricht.

    Guten Morgen,


    ich versuche einen Agenten mit mehreren Subs zu beenden.
    Leider finde ich bisher keinen Befehl den kompletten Agenten zu stoppen, nur Exit Sub und das hilft mir nichts, da es in einer verschachtelten Sub entdeckt wird ob abgebrochen werden soll.


    Kann ich auch den kompletten Agenten stoppen?


    Vielen Dank für Eure Hilfe


    grüße


    Heiko

    Den String bekommst du mit


    Dim blbla as String


    In der Maske muss ein feld dann als TEXTFELD deklariert sein.


    Du solltest die Hilfe des Designers lesen, auch nach 2 Wochen ist Notes nicht so schwierig ;)
    Fang mit den einfachereren Sachen an, wie dem Aufbau einer Maske und wende dich dann zu den komplizierteren. Sonst wird das nichts.


    Ich programmiere auch erst seit einem halben Jahr. Habe aber bereits nach 4 Wochen die erste Anwendung fertig, du wirst sehen das lernst du ganz schnell.

    Deine Maske muss ein String- Textfeld haben in die ließt du den String dann ein. Die Ansicht muss eben alle masken von dem bestimmten Typ anzeigen.


    Anstatt dieser Zeile:


    Code
    txtFile = ws.OpenFileDialog( False, "File List",  "", "p:")


    Musst du die Zeile in etwa so schreiben:


    Code
    txtFile = "C:\datei.txt"


    Unter der Domino Hilfe, bzw hier gibts aber auch schon ettliche Betiträge, die das beschreiben. ;)

    Du musst den Code natürlich einbauen, zum Beispiel so:
    Du musst dann den String, den du bekommen hast in ein neues Doukemtn einfügen und in einer entsprechenden Ansicht ablegen.