【问题标题】:Lotus Notes - Change Value in Document from ViewLotus Notes - 从视图更改文档中的值
【发布时间】:2019-09-24 04:37:42
【问题描述】:

是否有人有代码使用工具栏上的自定义图标替换视图的选定文档中的值。我记得这是使用公式完成的,但在网上找不到了。

谢谢, 蒂姆

【问题讨论】:

    标签: replace view lotus-notes toolbar


    【解决方案1】:

    在工具栏首选项中创建一个自定义图标并将此代码放在公式窗口中。在所有视图中显示图标。在视图中,它会提示您输入字段、其类型和值。然后它将替换该字段中的值,而无需打开文档。

    很久以前在一个公共 Lotus Notes 论坛上发现了这个。如果有人认识原始创作者,请在此处为他们命名,以获得他们应得的荣誉。

    REM {Get a listing of all the fields on the current document};
    List := @DocFields;
    REM {Possible data types to choose from.};
    REM {I called Number Integer because use keyboard to select what you want with keyboard quicker.};
    DataTypes := "Text" : "Date" : "Integer" : "Password" : "Name" : "Common Name" : "**** Remove Field ****" : "Text Multi Value" : "Date Multi Value" : "Integer Multi Value" : "Name Multi Value";
    REM {Prompt for which field needs to be updated.};
    EditField := @Prompt([OkCancelList]; "Select Field To Update"; "Select the field you wish to update:"; ""; List : "**** ADD A NEW FIELD ****");
    REM {If adding a new field, prompt for the field name};
    NewFieldName := @If(EditField = "**** ADD A NEW FIELD ****"; @Prompt([OkCancelEdit]; "Enter Field Name"; "Enter the name of the new field:"; ""); "");
    CheckFieldName := @If(@IsMember(NewFieldName; List) & NewFieldName != ""; @Return(@Prompt([Ok]; "Already In List"; "The field " + NewFieldName + " already exists on the document.")); "");
    UpdateVariable := @If(NewFieldName = ""; ""; EditField := NewFieldName);
    REM {Prompt for which data type you would like the data to be};
    REM {This needs to be done before value prompt to determine if the};
    REM { Picklist or any prompting needs to be used.};
    DataType := @Prompt([OkCancelList] : [NoSort]; "Choose Data Type"; "Please Select the correct data type or action for field: " + EditField; "Text"; DataTypes);
    REM {For multi-valued fields, let the user choose the separator to use};
    Separator := @If(@Contains(DataType; "Multi Value"); @Prompt([OkCancelList] : [NoSort]; "Choose Separator"; "Choose the separator to split out your multiple values"; ":"; (":" : ";" : "+" : "-" : "*")); "");
    REM {Pull out the current value of the field};
    CurrValue1 := @Eval(@Text(EditField));
    CurrValue2 := @Abstract([TextOnly]; 254; ""; @Text(EditField));
    CurrValue := @If(@IsNumber(CurrValue1) | @IsTime(CurrValue1); @Implode(@Text(CurrValue1); Separator); CurrValue2 != ""; CurrValue2; @Implode(@Text(CurrValue1); Separator));
    REM {Based on what type of data is being entered different prompts will happen if any at all.};
    RawValue := @If(
    @Contains(DataType; "Name Multi Value"); @PickList([Name]);
    @Contains(DataType; "Name"); @PickList([Name] : [Single]);
    DataType = "**** Remove Field ****"; "";
    @Contains(DataType; "Multi Value"); @Prompt([OkCancelEdit]; "New Value"; "Please enter the new desired value for: " + EditField + " seperated with " + Separator + " for each value."; CurrValue);
    @Prompt([OkCancelEdit]; "New Value"; "Please enter the new desired value for: " + EditField + "."; CurrValue)
    );
    REM {If data conversion doesn't work then don't set field.};
    @If(
    DataType = "Date"; @If(@SetField(EditField; @TextToTime(RawValue)));
    DataType = "Integer"; @If(@IsError(@TextToNumber(RawValue)); ""; @SetField(EditField; @TextToNumber(RawValue)));
    DataType = "Password"; @SetField(EditField; @Password(RawValue));
    DataType = "**** Remove Field ****"; @SetField(EditField; @DeleteField);
    DataType = "Text Multi Value"; @SetField(EditField; @Explode(RawValue; Separator));
    DataType = "Date Multi Value"; @SetField(EditField; @TextToTime(@Explode(RawValue; Separator)));
    DataType = "Integer Multi Value"; @If(@IsError(@TextToNumber(@Explode(RawValue; Separator))); ""; @SetField(EditField; @TextToNumber(@Explode(RawValue; Separator))));
    DataType = "Name Multi Value"; @SetField(EditField; @Explode(@Name([Canonicalize]; RawValue); Separator));
    @SetField(EditField; RawValue)
    );
    ""
    

    【讨论】:

    • 我相信作者是Chad Schelfhout,他可能也被称为Chad Smiley。代码仍在domquery.info
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多