28. maj 2001 - 12:01
Der er
2 kommentarer og
1 løsning
Oprette nyt doc. der overtager værdier.
Jeg har tidligere lavet et script, der, når man stod i en oversigt, kunne oprette et dokument der overtager visse af værdierne fra det i oversigten markerede dokument.
Det kan laves med formelsprog, men det unikke ved scriptet var at der ikke kunne oprettes flere dokumenter med samme værdier.
I forsøget på at få scriptet til at køre på alle dokumenter i oversigten har jeg desværre slettet det , :-().
Der er oprettet et dokument der i formler overtager værdier fra markerede dokument. Jeg ønsker blot at oprette nye dokument vha. et script (og udnytte umuligheden for at oprette flere med samme værdier)
Det jeg kan huske af scriptet er følgende:
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = Session.CurrentDatabase
\'Sørger for at der åbnes et nyt dokument.
Set doc = New NotesDocument( db )
\'Bruger formularen \"LabelNavne\"
doc.form = \"LabelNavne\"
Call doc.Close
End Sub
Scriptet er delvist stjålet andetsteds. Det aktiveres fra en knap i en oversigt.
Ovenstående Script standser dog ved Call doc.close -
og giver fejlmeddelsen: Illegal use of PROPERTY
Håber at nogen der kan hjælpe.
Kan nogen komme med anvendelige løsning både til at køre på markeret doc. og alle doc. i oversigten dobles point.
Prøv at kigge på denne - den har jeg kørende i en base med udstyr. Den tager en kopi af det markerede (og tømmer/ændrer et par felter)
Sub Initialize
\' 1.Tjekkes om der er nogle dokumenter valgt
\' 2. hvis 1 er sand
\'Spørg efter refnr
\'For hvert document
\'Opret nyt doc
\'Kopier alle felter
\'tøm
\'serienr
\'iunr
\'bekræftigelsesdato, leveringsdato med mere
\' indstil refnr
Dim Thisdb As NotesDatabase
Dim doc, newdoc As NotesDocument
Dim collection As notesdocumentcollection
Dim n As Integer
Dim session As New NotesSession
Set ThisDB = Session.CurrentDatabase
Set Collection = ThisDb.Unprocesseddocuments
Set doc = collection .Getnthdocument(1)
If Collection.Count = 0 Then
\' HER KOMMER MAN ALDRIG FOR DER VIL ALTID VÆRE 1 DOC VALGT
Messagebox( \"Der er ikke valgt nogen dokumenter\" )
End If
Dim rekvnr, nybruger As String
rekvnr = Inputbox(\"Indtast rekvnummer\")
If rekvnr = \"\" Then Exit Sub
nybruger = Inputbox(\"Indtast navnet på den nye bruger\",,\"Drift - nyt udstyr\")
\'kopier dokumenterne, og ret værdier
For n = 1 To Collection.count
Set doc = Collection.GetNthDocument(n)
Set newdoc = thisdb.CreateDocument
Call doc.CopyAllItems( newdoc )
\'tøm specifikker værdier
Call ret_item(newdoc,\"IUnr\",\"\")
Call ret_item(newdoc,\"serienr\",\"\")
Call ret_item(newdoc,\"bruger\",nybruger)
Call ret_item(newdoc,\"IP\",\"\")
Call ret_item(newdoc,\"IP_NY\",\"\")
Call ret_item(newdoc,\"Oprettet\",Now())
Call ret_item(newdoc,\"Oprettet_Person\",session.username())
Call ret_item(newdoc,\"rekvnummer\",rekvnr)
Call ret_item(newdoc,\"godkendt\",\"\")
Call ret_item(newdoc,\"godkendt_person\",\"\")
Call ret_item(newdoc,\"bestilt\",\"\")
Call ret_item(newdoc,\"bestilt_person\",\"\")
Call ret_item(newdoc,\"Bekræftet\",\"\")
Call ret_item(newdoc,\"lovet\",\"\")
Call ret_item(newdoc,\"bestilt_ref\",\"\")
Call ret_item(newdoc,\"bekraeft_ref\",\"\")
Call ret_item(newdoc,\"leveret\",\"\")
Call ret_item(newdoc,\"modtaget_person\",\"\")
Call ret_item(newdoc,\"Faktura\",\"\")
Call ret_item(newdoc,\"faknr\",\"\")
Call ret_item(newdoc,\"Fak_Godkendt_person\",\"\")
Call ret_item(newdoc,\"Fak_Godkendt_Dato\",\"\")
newdoc.save False, False
Next
Msgbox \"Der er oprettet \" & n-1 & \" nye dokumenter\"
End Sub
Function ret_item(localdoc As notesdocument, itemnavn As String, vaerdi As Variant)
If localdoc.HasItem( itemnavn ) Then
\' Msgbox \"retter: \" + itemnavn
Call localdoc.removeitem(itemnavn)
Dim localitem As notesitem
Set localitem = localdoc.AppendItemValue( itemnavn, vaerdi )
End If
End Function
Følgende kan størstedelen af det jeg søgte, desværre kan det oprette mere end et dokument for hvert overordnede dokument (det kunne den savnede kode ikke)
(Ulempe ved nedenstående er at skærem følger med - formodes at give større tidsforbrug)
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim dc As NotesDocumentCollection
Callworkspace.ComposeDocument(\"\",\"\",\"LabelNavne\")
Set uidoc = workspace.currentDocument
Call uidoc.Close
End Sub