01. juli 2002 - 12:56Der er
16 kommentarer og 1 løsning
Lotusscript
Hejsa,
jeg har en formular der skal udskrives på printeren, men med et specielt udseende. Derfor sætter jeg en click-funktion på udskriv-knappen der starter en agent.
Denne agent skal så gemme dokumentet, gå ud af dokumentet, derefter skifte til en 2. formular (næsten ens), gemme den og derefter udskrive og skifte tilbage til formular 1.
Agenten ser indtil videre således ud:
Sub Udskriv(Source As Field) Dim session As New notessession Dim ws As New notesuiworkspace Dim uidoc As notesuidocument Set uidoc = ws.currentdocument Dim doc As notesdocument Set doc = uidoc.document Set db = session.currentdatabase Call uidoc.save id = doc.noteID Call uidoc.save Call uidoc.close Set doc = db.GetDocumentByID(id)
End Sub
Hvodden får jeg den til at skifte til form "udskrivfirma", gemme den samt udskrive og vende tilbage?
Øh, vil du gemme dokumentet 2 gange med forskellige forms som grundlag? Nå, men print fra et view via lotusScript ser sådan ud: Syntax Call notesUIView.Print([ numCopies%] [, fromPage%] [, toPage%] [, draft] [, pageSeparator%] [, formOverride$] [, printview] [, dateRangeBegin] [, dateRangeEnd]) Parameters numCopies% Integer. Optional. The number of copies you want to print. If you omit this parameter, the method displays the File Print dialog box. fromPage% Integer. Optional. The page of a document where you want to start printing. "0" means all. toPage% Integer. Optional. The page of a document where you want to stop printing. "0" means all. draft Boolean. Optional. Specify True if you want to print the document in draft mode. pageSeparator% Integer. Optional. Determines the page separator. formOverride$ Text. Optional. The name of the form you want to use to print the document. printView Boolean. Optional. Specify True to indicate that you want to print the current view. dateRangeBegin Variant. Optional. Prints the beginning date if printing from a calendar view. dateRangeEnd Variant. Optional. Prints the end date if printing from a calendar view.
Nej jeg vil egentlig ikke printe fra et view. Jeg vil åbne et dokument fra et view, som man i edit-mode kan redigere og gemme/udskrive. Den anden "form" er bare en form for viewtemplate der inheriter de values man har indtastet (altså felter der er beregnet).
Så agenten skal "bare":
1. gemme/lukke dokumentet efter indtastning 2. åbne form2 og overføre værdierne til form2 3. udskrive siden 4. lukke form2 og skifte tilbage til form1
min kollega som ikke er tilstede idag skrev denne "checkliste" op for mig og tilføjede at den skulle gemme de ekstra par gange. hvorfor, ved jeg faktisk ikke :-)
Du kan ikke printe et dokument med en ande form hvis det er åbent. Derfor må du gemme dokumentet, lukke det, åbne dokumentet igen med den ønskede form, lukke dokumentet og endelig åbne det igen med den oprindelige form. Du skal ikke "oiverføre data" til nr2 form, men den skal eksistere i basen. Fortsæt din kode med noget i denne stil: Doc.Form=DinFormNr2 Doc.Save Call ws.EditDocument( False, Doc, True ) Set uidoc = workspace.CurrentDocument Call uidoc.Print( 1 ) Call uidoc.close Doc.Form=DinFormNr1 Doc.Save Call ws.EditDocument( False, Doc, True )
Sub Udskriv(Source As Field) Dim session As New notessession Dim ws As New notesuiworkspace Dim uidoc As notesuidocument Set uidoc = ws.currentdocument Dim doc As notesdocument Set doc = uidoc.document Set db = session.currentdatabase Call uidoc.save id = doc.noteID Call uidoc.save Call uidoc.close Set doc = db.GetDocumentByID(id)
Når en agent ændres som du skriver sættes der automatisk ( ) om navnet. Derfor skal du rette dit kald til agenten i din knap ved at sætte ( ) om agentens navn sådan: @Command([ToolsRunMacro]; "(NavnPåDinAgent)")
Hvis debuggeren ikke kører skal du vist blot lukke basen og åbne den igen - det skulle være nok
jeg havde () rundt om navnet på agenten i ovenstående linje og den vil stadig ikke finde agenten når jeg klikker på knappen. Debuggeren går igang når jeg begynder at udfylde felterne i formularen. Jeg trykker på fortsæt et par gange og derefter klikker jeg på udskriv knappen. Der kommer den med "agenten ikke fundet" fejlen og debuggeren kommer aldrig i aktion - også selv jeg har lukket/åbnet basen igen.
Tror jeg skal have en snak med kollegaen når han kommer tilbage fra ferie for der er da vist noget helt galt. Men det er nok galt med vores database. Du får i hvert fald points for de sidste linjer af scriptet som ser meget rigtige ud :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.