Avatar billede cbkc. Nybegynder
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.
Avatar billede wise Seniormester
28. maj 2001 - 14:22 #1
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
Avatar billede cbkc. Nybegynder
28. maj 2001 - 14:43 #2
Wise: Beklager, måske var det lige hurtigt nok med den afvisning.
Det ser noget mere indviklet ud end det jeg umiddelbart søger, men måske er der noget jeg kan bruge (så skal du også have point!).
Mit problem er at der er en meget genial og brugbar kodestruktur der ligner mit gæt meget. Desværre kan jeg bare ikke huske den.

PS: der kan godt gå en uges tid før jeg svare på andre indlæg.
:-) cbkc
Avatar billede cbkc. Nybegynder
06. juni 2001 - 10:15 #3
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester