Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AF SDK Reference

PIPoint.SaveAttributes Method (IDictionary(String, Object))

PIPoint.SaveAttributes Method (IDictionary(String, Object))

  • Last UpdatedNov 18, 2025
  • 5 minute read
PIPoint.SaveAttributes Method (IDictionary(String, Object))
Set the PIPoint cached attribute values and save them to the server.

Namespace:  OSIsoft.AF.PI
Assembly:  OSIsoft.AFSDK (in OSIsoft.AFSDK.dll) Version: 3.1.1.1182

Syntax

public AFErrors<string> SaveAttributes(
	IDictionary<string, Object> attributeValues
)
Public Function SaveAttributes ( 
	attributeValues As IDictionary(Of String, Object)
) As AFErrors(Of String)

Dim instance As PIPoint
Dim attributeValues As IDictionary(Of String, Object)
Dim returnValue As AFErrors(Of String)

returnValue = instance.SaveAttributes(attributeValues)
public:
AFErrors<String^>^ SaveAttributes(
	IDictionary<String^, Object^>^ attributeValues
)
member SaveAttributes : 
        attributeValues : IDictionary<string, Object> -> AFErrors<string> 

Parameters

attributeValues
Type: System.Collections.GenericIDictionaryString, Object
A dictionary of new attribute values to be saved on the server for the PIPoint. The dictionary key is the name of the attribute to be modified and the dictionary value is the new value for the attribute. The PICommonPointAttributes class contains some of the common PIPoint attribute names.

Return Value

Type: AFErrorsString
Returns an AFErrorsTKey object which contains any errors that occurred during the save. If the error is related to PIServer connection then PIServerErrors key is the PIServer name, otherwise Errors key is the PIPoint name. If no errors occur, then be returned.

Exceptions

ExceptionCondition
KeyNotFoundException This exception is thrown when an attribute from attributeValues is not found in the cache of loaded PIPoint attributes.

Remarks

The PIPoint attribute values become the new set of cached attribute values and are then saved on the server. Any previously loaded attributes will be overwritten with the passed in attributeValues.

Examples

// This example demonstrates how to create an attribute for an
// element and retrieve and set PIPoint attributes.

// Get the Database
PISystems myPISystems = new PISystems();
PISystem myPISystem = myPISystems.DefaultPISystem;
AFDatabase myDB = myPISystem.Databases.DefaultDatabase;

// Create an Element Template
AFElementTemplate myElemTemplate = myDB.ElementTemplates.Add("MyElementTemplate");
AFAttributeTemplate myAttrTemplate = myElemTemplate.AttributeTemplates.Add("Attr#1");
myAttrTemplate.DataReferencePlugIn = AFDataReference.GetPIPointDataReference(myPISystem);
myAttrTemplate.ConfigString = @"\\%Server%\%Element%;pointtype=Float64";

// Create an Element from the Element Template
AFElement myElement = myDB.Elements.Add("MyElement", myElemTemplate);

// Create the PIPoint for the Attribute
AFAttribute myAttribute = myElement.Attributes["Attr#1"];
myAttribute.DataReference.CreateConfig();

// Find all PIPoint Attributes and Display their values
object drAttrValue;
myAttribute.PIPoint.LoadAttributes();
IEnumerable<string> list = myAttribute.PIPoint.FindAttributeNames(null);
Console.WriteLine("Found PIPoint Attributes: nameFilter='<null>'");
foreach (string item in list)
{
    drAttrValue = myAttribute.PIPoint.GetAttribute(item);
    Console.WriteLine("  {0} = '{1}'", item, drAttrValue);
}
Console.WriteLine();

// Find PIPoint Attributes matching 'Ex*' and display their values
list = myAttribute.PIPoint.FindAttributeNames("Ex*");
Console.WriteLine("Found PIPoint Attributes: nameFilter='Ex*'");
int cnt = 0;
foreach (string item in list)
{
    cnt++;
    drAttrValue = myAttribute.PIPoint.GetAttribute(item);
    Console.WriteLine("  {0} = '{1}'", item, drAttrValue);
}
Console.WriteLine();

// Unload all PIPoint Attributes
myAttribute.PIPoint.UnloadAllAttributes();

// Load specific PIPoint Attributes and display their values
myAttribute.PIPoint.LoadAttributes(PICommonPointAttributes.PointType,
    PICommonPointAttributes.PointID,
    PICommonPointAttributes.Descriptor,
    PICommonPointAttributes.ExtendedDescriptor,
    PICommonPointAttributes.CreationDate);
drAttrValue = myAttribute.PIPoint.GetAttribute(PICommonPointAttributes.PointType);
Console.WriteLine("PIPoint Attribute '{0}' = '{1}'.", PICommonPointAttributes.PointType, drAttrValue);
drAttrValue = myAttribute.PIPoint.GetAttribute(PICommonPointAttributes.PointID);
Console.WriteLine("PIPoint Attribute '{0}' = '{1}'.", PICommonPointAttributes.PointID, drAttrValue);
drAttrValue = myAttribute.PIPoint.GetAttribute(PICommonPointAttributes.Descriptor);
Console.WriteLine("PIPoint Attribute '{0}' = '{1}'.", PICommonPointAttributes.Descriptor, drAttrValue);
drAttrValue = myAttribute.PIPoint.GetAttribute(PICommonPointAttributes.ExtendedDescriptor);
Console.WriteLine("PIPoint Attribute '{0}' = '{1}'.", PICommonPointAttributes.ExtendedDescriptor, drAttrValue);
drAttrValue = myAttribute.PIPoint.GetAttribute(PICommonPointAttributes.CreationDate);
Console.WriteLine("PIPoint Attribute '{0}' = '{1}'.", PICommonPointAttributes.CreationDate, drAttrValue);
Console.WriteLine();

// Set PIPoint Attribute value
string newAttrValue = "New Value: " + DateTime.Now.ToShortTimeString();
myAttribute.PIPoint.SetAttribute(PICommonPointAttributes.Descriptor, newAttrValue);
myAttribute.PIPoint.SetAttribute(PICommonPointAttributes.ExtendedDescriptor, newAttrValue);
AFErrors<string> errors = myAttribute.PIPoint.SaveAttributes(PICommonPointAttributes.Descriptor,
    PICommonPointAttributes.ExtendedDescriptor);
if (errors != null && errors.HasErrors)
{
    Console.WriteLine("Errors calling PIPoint.SaveAttributes:");
    foreach (var item in errors.Errors)
    {
        Console.WriteLine("  {0}: {1}", item.Key, item.Value);
    }
}
' This example demonstrates how to create an attribute for an
' element and retrieve and set PIPoint attributes.

' Get the Database
Dim myPISystems As PISystems = New PISystems
Dim myPISystem As PISystem = myPISystems.DefaultPISystem
Dim myDB As AFDatabase = myPISystem.Databases.DefaultDatabase

' Create an Element Template
Dim myElemTemplate As AFElementTemplate = myDB.ElementTemplates.Add("MyElementTemplate")
Dim myAttrTemplate As AFAttributeTemplate = myElemTemplate.AttributeTemplates.Add("Attr#1")
myAttrTemplate.DataReferencePlugIn = AFDataReference.GetPIPointDataReference(myPISystem)
myAttrTemplate.ConfigString = "\\%Server%\%Element%;pointtype=Float64"

' Create an Element from the Element Template
Dim myElement As AFElement = myDB.Elements.Add("MyElement", myElemTemplate)

' Create the PIPoint for the Attribute
Dim myAttribute As AFAttribute = myElement.Attributes("Attr#1")
myAttribute.DataReference.CreateConfig()

' Find all PIPoint Attributes and Display their values
Dim drAttrValue As Object
myAttribute.PIPoint.LoadAttributes()
Dim list As IEnumerable(Of String) = myAttribute.PIPoint.FindAttributeNames(Nothing)
Console.WriteLine("Found PIPoint Attributes: nameFilter='<null>'")
For Each item As String In list
    drAttrValue = myAttribute.PIPoint.GetAttribute(item)
    Console.WriteLine("  {0} = '{1}'", item, drAttrValue)
Next
Console.WriteLine()

' Find PIPoint Attributes matching 'Ex*' and display their values
list = myAttribute.PIPoint.FindAttributeNames("Ex*")
Console.WriteLine("Found PIPoint Attributes: nameFilter='Ex*'")
Dim cnt As Integer = 0
For Each item As String In list
    cnt = (cnt + 1)
    drAttrValue = myAttribute.PIPoint.GetAttribute(item)
    Console.WriteLine("  {0} = '{1}'", item, drAttrValue)
Next
Console.WriteLine()

' Unload all PIPoint Attributes
myAttribute.PIPoint.UnloadAllAttributes()

' Load specific PIPoint Attributes and display their values
myAttribute.PIPoint.LoadAttributes(PICommonPointAttributes.PointType,
                                   PICommonPointAttributes.PointID,
                                   PICommonPointAttributes.Descriptor,
                                   PICommonPointAttributes.ExtendedDescriptor,
                                   PICommonPointAttributes.CreationDate)
drAttrValue = myAttribute.PIPoint.GetAttribute(PICommonPointAttributes.PointType)
Console.WriteLine("PIPoint Attribute '{0}' = '{1}'.", PICommonPointAttributes.PointType, drAttrValue)
drAttrValue = myAttribute.PIPoint.GetAttribute(PICommonPointAttributes.PointID)
Console.WriteLine("PIPoint Attribute '{0}' = '{1}'.", PICommonPointAttributes.PointID, drAttrValue)
drAttrValue = myAttribute.PIPoint.GetAttribute(PICommonPointAttributes.Descriptor)
Console.WriteLine("PIPoint Attribute '{0}' = '{1}'.", PICommonPointAttributes.Descriptor, drAttrValue)
drAttrValue = myAttribute.PIPoint.GetAttribute(PICommonPointAttributes.ExtendedDescriptor)
Console.WriteLine("PIPoint Attribute '{0}' = '{1}'.", PICommonPointAttributes.ExtendedDescriptor, drAttrValue)
drAttrValue = myAttribute.PIPoint.GetAttribute(PICommonPointAttributes.CreationDate)
Console.WriteLine("PIPoint Attribute '{0}' = '{1}'.", PICommonPointAttributes.CreationDate, drAttrValue)
Console.WriteLine()

' Set PIPoint Attribute value
Dim newAttrValue As String = ("New Value: " + DateTime.Now.ToShortTimeString)
myAttribute.PIPoint.SetAttribute(PICommonPointAttributes.Descriptor, newAttrValue)
myAttribute.PIPoint.SetAttribute(PICommonPointAttributes.ExtendedDescriptor, newAttrValue)
Dim errors As AFErrors(Of String) = myAttribute.PIPoint.SaveAttributes(PICommonPointAttributes.Descriptor,
                                                                       PICommonPointAttributes.ExtendedDescriptor)
If errors IsNot Nothing AndAlso errors.HasErrors Then
    Console.WriteLine("Errors calling PIPoint.SaveAttributes:")
    For Each item As KeyValuePair(Of String, Exception) In errors.Errors
        Console.WriteLine("  {0}: {1}", item.Key, item.Value)
    Next
End If

No code example is currently available or this language may not be supported.

No code example is currently available or this language may not be supported.

Version Information

AFSDK


See Also

In This Topic
TitleResults for “How to create a CRG?”Also Available in