データの変更
VBA からの接続 を完了したら、マクロからAzure Active Directory を更新できます。次のセクションでは、パラメータ化されたクエリを実行してデータを更新する方法について説明します。完全なマクロについては、パラメータ化されたクエリの実行 を参照してください。
Insert
Insert メソッドを呼び出して、SQL INSERT ステートメントを実行します。public bool Insert(string queryString, object paramNames, object paramValues)
Insert メソッドはステートメント実行の成功または失敗を示すboolean を返し、 次のパラメータを受け入れます。
queryString | 実行するクエリ。例:INSERT INTO DirectoryRoles (displayName) VALUES ('Global Reader') |
paramNames | クエリで使用される名前付きパラメータを含む配列。パラメータクエリを使用する場合は、必須。 |
paramValues | パラメータ名に対応する値を含む配列。パラメータクエリを使用する場合は、必須。 |
次の例では、パラメータ配列で指定された値を挿入し、INSERT の成功または失敗を示すメッセージボックスを表示します。
Dim nameArray
nameArray = Array("displayName", "Id")
Dim valueArray
valueArray = Array("Billing Administrator", "Jq74mCczmFXk1tC10GBs")
Dim module As New ExcelComModule
module.SetProviderName ("AzureAD")
module.SetConnectionString ("OAuthClientId=MyApplicationId;OAuthClientSecret=MySecretKey;CallbackURL=http://localhost:33333;")
Query = "INSERT INTO DirectoryRoles (displayName, Id) VALUES (@displayName, @Id)"
If module.Insert(Query, nameArray, valueArray) Then
MsgBox "The insertion was successful."
'lastInsertedRowIdentity = GetLastInsertedRowIdentity(module)
'MsgBox lastInsertedRowIdentity
Else
MsgBox "The insertion failed."
End If
module.Close
挿入に成功し、SCOPE_IDENTITY() がAzure Active Directory プロバイダーでサポートされている場合、以下のVBA 関数例を呼び出して、最後に挿入された行のId を取得することができます。
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
Update メソッドを呼び出して、SQL UPDATE ステートメントを実行します。
public bool Update(string queryString, object paramNames, object paramValues)
Update メソッドはステートメント実行の成功または失敗を示すboolean を返し、次のパラメータを受け入れます。
queryString | 実行するステートメント。 |
paramNames | クエリで使用される名前付きパラメータを含む配列。パラメータクエリを使用する場合は、必須。 |
paramValues | 対応するパラメータ値を持つ配列。パラメータクエリを使用する場合は、必須。 |
次の例では、パラメータ配列で指定された値を更新し、更新の成功または失敗を示すメッセージボックスを表示します。
Dim nameArray
nameArray = Array("displayName", "Id","Id")
Dim valueArray
valueArray = Array("Billing Administrator", "Jq74mCczmFXk1tC10GBs","Jq74mCczmFXk1tC10GB")
Dim module As New ExcelComModule
module.SetProviderName ("AzureAD")
module.SetConnectionString ("OAuthClientId=MyApplicationId;OAuthClientSecret=MySecretKey;CallbackURL=http://localhost:33333;")
Query = "UPDATE DirectoryRoles SET displayName=@displayName, Id=@Id WHERE Id=@Id
If module.Update(Query, nameArray, valueArray) Then
MsgBox "The update was successful."
Else
MsgBox "The update failed."
End If
module.Close
Delete
Delete メソッドを呼び出して、SQL DELETE ステートメントを実行します。public bool Delete(string queryString, object paramNames, object paramValues)
Delete メソッドはクエリの成功または失敗を示すboolean を返し、次のパラメータを受け入れます。
queryString | 実行するクエリ。例:SELECT Id, displayName FROM DirectoryRoles WHERE Id = 'Jq74mCczmFXk1tC10GBs' |
paramNames | クエリで使用される名前付きパラメータを含む配列。パラメータクエリを使用する場合は、必須。 |
paramValues | パラメータ名に対応する値を含む配列。パラメータクエリを使用する場合は、必須。 |
次の例では、キーで指定されたレコードを削除し、削除の成功または失敗を示すメッセージボックスを表示します。
Dim module As New ExcelComModule
module.SetProviderName ("AzureAD")
module.SetConnectionString("OAuthClientId=MyApplicationId;OAuthClientSecret=MySecretKey;CallbackURL=http://localhost:33333;")
Dim nameArray
nameArray = Array("Id")
Dim valueArray
valueArray = Array("Jq74mCczmFXk1tC10GB")
Query = "DELETE FROM DirectoryRoles WHERE Id='Jq74mCczmFXk1tC10GB'"
If module.Delete(Query,nameArray,valueArray) Then
MsgBox "The delete was successful."
Else
MsgBox "The delete failed."
End If
module.Close