Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
The following C# example shows the Creating event handler method used to save the contact history information for a customer object. The event handler examines the Extension objects passed along with the customer. If one of the Extension objects has the ExtensionId value "ContactHistory", the event handler will process it. The code extracts the contact history information from XML element of the Extension object. After retrieving a connection to the current company's database and storing in the connection private variable, the event handler executes a SQL statement to save the contact history information for the customer into the IG003 table.
// Declare private variable of type Microsoft.Dynamics.Common.Connection
private static Connection connection;
public static void CreateContactHistory(object sender, BusinessObjectEventArgs e)
{
bool found;
int rowsAffected;
string contact;
string firstContactDate;
string firstContactSalesperson;
string lastContactDate;
string lastContactSalesperson;
string updateStatement;
string insertStatement;
Customer customer;
Extension ContactHistoryExtension = new Extension();
if (e.BusinessObject.GetType() == typeof(Customer))
{
customer = (Customer)e.BusinessObject;
// Look at the Extension list passed along
found = false;
foreach (Extension ext in customer.Extensions)
{
if (ext.ExtensionId == "ContactHistory")
{
ContactHistoryExtension = ext;
found = true;
break;
}
}
if (found == true)
{
// Found an extension, so it should be processed
XmlElement contactHistory;
contactHistory = ContactHistoryExtension.DocExtension;
XmlNodeList nodeList;
nodeList = contactHistory.ChildNodes;
//First contact date
firstContactDate = nodeList[0].InnerText.ToString();
//First contact salesperson
firstContactSalesperson = nodeList[1].InnerText.ToString();
//Last contact date
lastContactDate = nodeList[2].InnerText.ToString();
//Last contact salesperson
lastContactSalesperson = nodeList[3].InnerText.ToString();
// Get the connection to the database for the current company
connection = Connection.GetInstance();
// The SQL statement to update contact history information
updateStatement = "UPDATE IG003 SET ContactSalespersonID1='" +
firstContactSalesperson
+ "', FirstContactDate='" + firstContactDate
+ "', ContactSalespersonID2='" + lastContactSalesperson
+ "', LastContactDate='" + lastContactDate
+ "' WHERE CUSTNMBR = '" + customer.Key.Id + "'";
// Create the SQL connection
SqlCommand command = new SqlCommand(updateStatement);
SqlConnection sqlConnection = new SqlConnection
(connection.GetConnectionString(e.Context.OrganizationKey));
command.Connection = sqlConnection;
// Open the SQL connection
sqlConnection.Open();
// Execute the SQL statement
rowsAffected = command.ExecuteNonQuery();
if (rowsAffected == 0)
{
// The row did not exist, so try creating it.
// Is the ContactPerson specified? If not, set it to empty.
if (customer.Addresses.Count == 0)
contact = "";
else
contact = customer.Addresses[0].ContactPerson;
insertStatement = "INSERT IG003 VALUES ('"
+ firstContactSalesperson + "', '"
+ lastContactSalesperson + "', '"
+ contact
+ "', '" + lastContactDate + "', '"
+ firstContactDate + "', '" + customer.Name
+ "', '" + customer.Key.Id + "')";
command.CommandText = insertStatement;
rowsAffected = command.ExecuteNonQuery();
}
// Close the SQL connection
sqlConnection.Close();
}
}
}