ChadSmiley Blog Things about family, life, coding, and more

Edit Document Fields 3.0.0 Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
REM {Edit Document Fields 3.0.0 by Chad Schelfhout.};
REM {Visit http://www.chadsmiley.com/EditDocumentFields for the latest updates};
 
REM {Get a listing of all the fields on the current document};
List := @Sort( @DocFields );
PromptLimit := 254;
 
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" : "Abbreviate Name" : "Remove Field" : "Text Multi Value" : "Date Multi Value" : "Integer Multi Value" : "Name Multi Value" : "Common Name Multi Value" : "Abbreviate Name Multi Value" : "Upper Case Text" : "Lower Case Text"  : "Proper Case Text" : "Upper Case Text Multi Value" : "Lower Case Text Multi Value"  : "Proper Case Text Multi Value" ;
 
REM {Prompt for which field needs to be updated.};
@DoWhile( 
	EditField := @Prompt( [OkCancelEditCombo] ; @DbTitle + " - " + @ViewTitle ; "Select the field you wish to alter:" ; @SubSet( List ; 1 ) ; List ) ; 
	EditField = "" );
 
REM {Based on the field that was selected determine the current field type using the GetField function.};
DefaultDataType := @If( @IsNumber( @GetField( EditField ) ) ; @If( @Count( @GetField( EditField) ) > 1 ; "Integer Multi Value"; "Integer" ) ; @IsTime( @GetField( EditField ) ) ; @If( @Count( @GetField( EditField) ) > 1 ; "Date Multi Value"; "Date" ) ; @If( @Count( @GetField( EditField) ) > 1 ; "Text Multi Value"; "Text" ) );
REM "If the data type is a type of error then select the data type of text";
DefaultDataType := @IfError( DefaultDataType ; "Text" );
 
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 Picklist or any prompting needs to be used.};
DataType := @Prompt( [OkCancelList] : [NoSort] ; EditField + " - " + @DbTitle + " - " + @ViewTitle; "Please select the correct data type or action for field: " + EditField + "."; DefaultDataType ; DataTypes );
 
REM "Format the original value as text because the @Prompt command requires text.";
OriginalValue := @If( @Contains( DefaultDataType ; "Multi Value" ) ; @Implode( @Text( @GetField( EditField ) ) ; ";" ); @Text( @GetField( EditField ) ) );
 
REM {Based on what type of data is being entered different prompts will happen if any at all.};
REM {Use the GetField function instead of using Abstract which always returned text and did not convert non text data.};
RawValue := @If(
         @Contains( DataType ; "Name Multi Value" ); @PickList( [Name] );
         @Contains( DataType ; "Name" ) ; @PickList( [Name] : [Single] );
         DataType = "Remove Field" ; "" ;
         @Contains( DataType ; "Multi Value" ); @Prompt( [OkCancelEdit] ; EditField + " - " + @DbTitle + " - " + @ViewTitle; "Please enter the new desired value for: " + EditField + "." + @Char(13) + @Char(13) + "Seperated with ; for each value." ; OriginalValue ) ;
         @Prompt( [OkCancelEdit] ; EditField + " - " + @DbTitle + " - " + @ViewTitle ; "Please enter the new desired value for: " + EditField + "." ; OriginalValue ) );
 
REM {If data conversion doesn't work then don't set field.};
@If(
        DataType = "Date" ; @If( @SetField( EditField ; @ToTime( RawValue ) ) );
        DataType = "Integer" ; @If( @IsError( @TextToNumber( RawValue ) ) ; "" ; @SetField( EditField ; @TextToNumber( RawValue ) ) ) ;
        DataType = "Common Name" ; @SetField( EditField ; @Name( [CN]; RawValue ) ) ;
        DataType = "Abbreviate Name" ; @SetField( EditField ; @Name( [Abbreviate]; RawValue ) ) ;
        DataType = "Password" ; @SetField( EditField ; @Password( RawValue ) ) ;
        DataType = "Remove Field" ; @SetField( EditField ; @DeleteField ) ;
        DataType = "Text Multi Value" ; @SetField( EditField ; @Explode( RawValue ; ";" ) ) ;
        DataType = "Date Multi Value" ; @SetField( EditField ; @TextToTime( @Explode( RawValue ; ";" ) ) ) ;
        DataType = "Integer Multi Value" ; @If( @IsError( @TextToNumber( @Explode( RawValue ; ";" ) ) ) ; "" ; @SetField( EditField ; @TextToNumber( @Explode( RawValue ; ";" ) ) ) ) ;
        DataType = "Name Multi Value" ; @SetField( EditField ; @Explode( RawValue ; ":" ) ) ;
        DataType = "Common Name Multi Value" ; @SetField( EditField ; @Name( [CN]; @Explode( RawValue ; ":" ) ) );
        DataType = "Abbreviate Name Multi Value" ; @SetField( EditField ; @Name( [Abbreviate]; @Explode( RawValue ; ":" ) ) );
        DataType = "Upper Case Text" ; @If( @SetField( EditField ; @UpperCase( RawValue ) ) );
        DataType = "Lower Case Text" ; @If( @SetField( EditField ; @LowerCase( RawValue ) ) );
        DataType = "Proper Case Text" ; @If( @SetField( EditField ; @ProperCase( RawValue ) ) );
        DataType = "Upper Case Text Multi Value" ; @If( @SetField( EditField ; @UpperCase( @Explode( RawValue ; ";" ) ) ) );
        DataType = "Lower Case Text Multi Value" ; @If( @SetField( EditField ; @LowerCase( @Explode( RawValue ; ";" ) ) ) );
        DataType = "Proper Case Text Multi Value" ; @If( @SetField( EditField ; @ProperCase( @Explode( RawValue ; ";" ) ) ) );
        @SetField( EditField ; RawValue )
);
"";
Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


No trackbacks yet.