Excel Add-In for Dynamics 365

Build 21.0.8137

Updating Data

After Connecting from VBA, you are ready to update Dynamics 365 from macros. The following sections show how to execute parameterized queries to update data. See Executing Parameterized Queries for a complete macro.

Insert

Call the Insert method to execute SQL INSERT statements.
public bool Insert(string queryString, object paramNames, object paramValues)

The Insert method returns a boolean indicating the success or failure of the statement execution and accepts the following parameters:

queryStringThe query to execute; for example, INSERT INTO GoalHeadings (GoalHeadingId) VALUES ('John')
paramNamesAn array with the named parameters used in the query. Required if using a parameterized query.
paramValuesAn array with the values that correspond to the parameter names. Required if using a parameterized query.

The following example inserts the values specified in the parameter arrays and displays a message box indicating the success or failure of the insert.

Dim nameArray
nameArray = Array("GoalHeadingId", "Name")
Dim valueArray
valueArray = Array("Jon Doe", "MyAccount")
Dim module As New ExcelComModule
module.SetProviderName ("Dynamics365")
module.SetConnectionString ("OrganizationUrl=https://myaccount.operations.dynamics.com/;Edition=Sales;")
Query = "INSERT INTO GoalHeadings (GoalHeadingId, Name) VALUES (@GoalHeadingId, @Name)"
If module.Insert(Query, nameArray, valueArray) Then
  MsgBox "The insert was successful."
  'lastInsertedRowIdentity = GetLastInsertedRowIdentity(module)
  'MsgBox lastInsertedRowIdentity
Else
  MsgBox "The insert failed."
End If
module.Close

For a successful insert, and if SCOPE_IDENTITY() is supported by the Dynamics 365 provider, then the following VBA function example can be called to retrieve the last inserted row identity.

Function GetLastInsertedRowIdentity(module) As String
  Dim lastInsertedRowIdentity As String
  lastInsertedRowIdentity = ""
  If module.Select("SELECT SCOPE_IDENTITY()", prmNames, prmValues) Then
    lastInsertedRowIdentity = module.GetColumnValue(0)
  End If
  GetLastInsertedRowIdentity = lastInsertedRowIdentity
End Function

Update

Call the Update method to execute SQL UPDATE statements.

public bool Update(string queryString, object paramNames, object paramValues)

The Update method returns a boolean indicating the success or failure of the statement execution and accepts the following parameters:

queryStringThe statement to execute.
paramNamesAn array with the named parameters used in the query. Required if using a parameterized query.
paramValuesAn array with the corresponding parameter values. Required if using a parameterized query.

The following example updates the values specified in the parameter arrays and displays a message box indicating the success or failure of the update.

Dim nameArray
nameArray = Array("GoalHeadingId", "Name","GoalHeadingId")
Dim valueArray
valueArray = Array("Jon Doe", "MyAccount","'test'")
Dim module As New ExcelComModule
module.SetProviderName ("Dynamics365")
module.SetConnectionString ("OrganizationUrl=https://myaccount.operations.dynamics.com/;Edition=Sales;")
Query = "UPDATE GoalHeadings SET GoalHeadingId=@GoalHeadingId, Name=@Name WHERE GoalHeadingId=@GoalHeadingId
If module.Update(Query, nameArray, valueArray) Then
  MsgBox "The update was successful."
Else
  MsgBox "The update failed."
End If
module.Close

Delete

Call the Delete method to execute SQL DELETE statements.
public bool Delete(string queryString, object paramNames, object paramValues)

The Delete method returns a boolean indicating the query's success or failure and accepts the following parameters:

queryStringThe query to execute; for example, SELECT GoalHeadingId, GoalHeadingId FROM GoalHeadings WHERE Name <> 'MyAccount'
paramNamesAn array with the named parameters used in the query. Required if using a parameterized query.
paramValuesAn array with the values that correspond to the parameter names. Required if using a parameterized query.

The following example deletes a record, specified by its key, and displays a message box indicating the success or failure of the delete.

Dim module As New ExcelComModule
module.SetProviderName ("Dynamics365")
module.SetConnectionString("OrganizationUrl=https://myaccount.operations.dynamics.com/;Edition=Sales;")
Dim nameArray
nameArray = Array("GoalHeadingId")
Dim valueArray
valueArray = Array("'test'")
Query = "DELETE FROM GoalHeadings WHERE GoalHeadingId=''test''"
If module.Delete(Query,nameArray,valueArray) Then
  MsgBox "The delete was successful."
Else
  MsgBox "The delete failed."
End If 
module.Close

Copyright (c) 2022 CData Software, Inc. - All rights reserved.
Build 21.0.8137