Avatar billede sbay Nybegynder
04. februar 2003 - 12:58 Der er 17 kommentarer og
3 løsninger

Opdatere et felt

Hej

Jeg har et felt på et dokument, der henter data fra et view. Hvis jeg ændrer data i viewet, vil jeg gerne have opdateret det dokumentet, så det afspejler de seneste ændringer i viewet. Nu skal jeg åbne og gemme dokumentet før ændringen er tilføjet. Kan man ikke gøre det fra en knap/action - uden at brugeren kan se opdateringen???
Avatar billede sbay Nybegynder
04. februar 2003 - 13:01 #1
Eventuelt bare en agent der via noget formula kan åbne det ene dokument og opdatere det og lukke det igen!
Avatar billede tanker Nybegynder
04. februar 2003 - 13:30 #2
1. Skal dokumentet "stå åbent" i længere tid (og vise aktivtet i viewet) ?
2. Ses det i Notesklienten eller på Web ?
Avatar billede sbay Nybegynder
04. februar 2003 - 13:45 #3
1. Nej - jeg sletter et dokument (A) -> ændring af data i view -> skulle så gerne resultere i opdatering af et andet dokument (B) der får data via viewet. Hvis jeg bare via en action kan få slettet det aktuelle dokument (A) og så få opdateret Dok (B), evt. ved at åbne-gemme-lukke dok (B)
2. Klient
Avatar billede sbay Nybegynder
04. februar 2003 - 13:46 #4
PS. Feltet er computed med en @DbLookup
Avatar billede avest Nybegynder
04. februar 2003 - 14:31 #5
Du kan lade en agent løbe dokumenterne du vil opdatere igennem med


    Set collection = db.UnprocessedDocuments
   
    For j =  1 To collection.Count         
        Set doc = collection.GetNthDocument(j)                   
        success = doc.ComputeWithForm( False, True )
        If success Then             
            Call doc.Save( True, True )             
        Else
        End If         
    Next
Avatar billede sbay Nybegynder
04. februar 2003 - 15:15 #6
Det virker ganske glimrende - bortset fra at jeg kalder det fra en action:

@Command( [ToolsRunMacro] ;"UpdateAll" );
@DeleteDocument;

hvor UpdateAll er agenten med ovenstående script. Den udfører desværre bare ikke @deleten. Hvis jeg bytter dem om udfører den ikke UpdateALL

Nogen idé om hvorfor?????
Avatar billede sbay Nybegynder
04. februar 2003 - 15:38 #7
Fik det vist til at virke med @command[EditClear]
Avatar billede sbay Nybegynder
04. februar 2003 - 15:39 #8
avest-> du er nødt til at lave et svar!
Avatar billede jogii Nybegynder
04. februar 2003 - 17:47 #9
Prøv dig evt. frem med følgende istedenfor:
@Command([ToolsRefreshSelectedDocs])
eller
@Command([ToolsRefreshAllDocs])

FIELD dummy := @DeleteDocument burde få dokumentet til at forsvinde.
Avatar billede avest Nybegynder
05. februar 2003 - 08:25 #10
For j =  1 To collection.Count         
        Set doc = collection.GetNthDocument(j)                   
        success = doc.ComputeWithForm( False, True )
        If success Then             
            Call doc.Save( True, True )             
        Else
        End If         
    Next
Avatar billede sbay Nybegynder
05. februar 2003 - 09:27 #11
kan man ikke i samme omgang få fjernet dokumentet - lige nu bliver det bare markeret med en skraldespand, men jeg vil egentlig gerne have det helt væk! Har prøvet med jogii's svar, men de fjerner ikke dok.

@If(AssToStatus = "OK";@SetField("AssToStatus";"Delete");@SetField("AssToStatus";"OK"));
@Command([EditClear]);
@Command( [ToolsRunMacro] ;"UpdateAll" )
Avatar billede avest Nybegynder
05. februar 2003 - 10:20 #12
Prøv med et script.

Call doc.Remove( True )
Avatar billede sbay Nybegynder
05. februar 2003 - 10:30 #13
avest->> Det kan altså ikke gøres i formula???
Avatar billede jogii Nybegynder
05. februar 2003 - 10:53 #14
Prøv:
FIELD dummy := @DeleteDocument;
Dette sletter dokumentet omgående.

Følgende udfører en doc.open og doc.save og doc.close på markerede dokumenter:
@Command([ToolsRefreshSelectedDocs]);

summa summarum burde følgende virke:

FIELD dummy := @DeleteDocument;
@PostedCommand([EditSelectAll]);
@PostedCommand([ToolsRefreshSelectedDocs]);

(under forudsætning af at dine dokumenter der skal opdateres, findes i samme oversigt)

Men jeg må advare dig mod replikerinskonflikter, hvis du anvender nogen af de foreslåede metoder. Tænk hvis en bruger udfører operationen lokalt og senere replikerer, samtidig med at en anden bruger har gjort det samme. Så bryder helvede løs. Det er derfor @Command([ToolsRefreshSelectedDocs])og @Command([ToolsRefreshAllDocs]) blev fjernet fra Menuen ved R4.

En bedre metode er måske at kode i LS og lave en DB.Search for at finde de dokumenter, som faktisk indeholder som er blevet fjernet.

//Jörg
Avatar billede sbay Nybegynder
05. februar 2003 - 13:00 #15
Problemet er bare at de doks der skal opdateres IKKE findes i samme oversigt!
Avatar billede tanker Nybegynder
05. februar 2003 - 15:04 #16
Stop stop, gør det nu ikke sværere end det er !
Feltet på dokument(B) som viser indholdet af viewet (med dblookup)
skal bare være af ComputesForDisplay-typen.
Så bliver det automatisk genberegnet hvergang dokumentet åbnes.
Avatar billede sbay Nybegynder
05. februar 2003 - 15:18 #17
tanker>>> jo tak - det ved jeg, men som du skriver kræver det at dokumentet åbnes! Jeg er interesseret i at det er rettet når dokumentet også bare vises ;-)
Avatar billede jogii Nybegynder
05. februar 2003 - 21:40 #18
sbay, jeg vil umiddelbart give tanker ret i at det her lyder lidt besværligt. Tilsyneladebde kunne dataproblematiken løses på en mere harmonisk måde. Min er faring siger hvis data er besværlige at vedligeholde så skyldes det ofte forkerte datamodeller. Måske burde du fortælle hvilken type applikation du har med at gøre og hvad formålet er at vise dokumenterne sorteret efter disse "opslagsdata".
//Jörg
Avatar billede tanker Nybegynder
11. februar 2003 - 16:08 #19
Åbnes <> vises ?!?!
Avatar billede jogii Nybegynder
13. februar 2003 - 11:18 #20
Grunden til at jeg synes "sletning" kræver opdatering af felter er at det kun er et subsæt af mulige hændelser du tager hånd om. Hvad med opdatering af et eksisterende dokument? oprettelse af nye (i samme kategori). Disse hændelser tager du ikke med i betragtning. Jeg har noget kode som nemt finder dokumenter frem ud fra kriterier og opdaterer alle disse dokumenter med aktuel information. Men jeg skal vide lidt mere om datamodellen først før jeg kan afgøre om det er noget for dig.
//Jörg
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