Excel Add-In for Azure Cosmos DB

Build 24.0.9062

データの変更

VBA からの接続 を完了したら、マクロからAzure Cosmos DB を更新できます。次のセクションでは、パラメータ化されたクエリを実行してデータを更新する方法について説明します。完全なマクロについては、パラメータ化されたクエリの実行 を参照してください。

Insert

Insert メソッドを呼び出して、SQL INSERT ステートメントを実行します。
public bool Insert(string queryString, object paramNames, object paramValues)

Insert メソッドはステートメント実行の成功または失敗を示すboolean を返し、 次のパラメータを受け入れます。

queryString実行するクエリ。例:INSERT INTO [CData].[Entities].Customers (CompanyName) VALUES ('Caterpillar')
paramNamesクエリで使用される名前付きパラメータを含む配列。パラメータクエリを使用する場合は、必須。
paramValuesパラメータ名に対応する値を含む配列。パラメータクエリを使用する場合は、必須。

次の例では、パラメータ配列で指定された値を挿入し、INSERT の成功または失敗を示すメッセージボックスを表示します。

Dim nameArray
nameArray = Array("CompanyName", "Country")
Dim valueArray
valueArray = Array("Jon Deere", "US")
Dim module As New ExcelComModule
module.SetProviderName ("CosmosDB")
module.SetConnectionString ("AccountEndpoint=myAccountEndpoint;AccountKey=myAccountKey;")
Query = "INSERT INTO [CData].[Entities].Customers (CompanyName, Country) VALUES (@CompanyName, @Country)"
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 Cosmos DB プロバイダーでサポートされている場合、以下の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("CompanyName", "Country","_id")
Dim valueArray
valueArray = Array("Jon Deere", "US","22")
Dim module As New ExcelComModule
module.SetProviderName ("CosmosDB")
module.SetConnectionString ("AccountEndpoint=myAccountEndpoint;AccountKey=myAccountKey;")
Query = "UPDATE [CData].[Entities].Customers SET CompanyName=@CompanyName, Country=@Country 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 City, CompanyName FROM [CData].[Entities].Customers WHERE Country = 'US'
paramNamesクエリで使用される名前付きパラメータを含む配列。パラメータクエリを使用する場合は、必須。
paramValuesパラメータ名に対応する値を含む配列。パラメータクエリを使用する場合は、必須。

次の例では、キーで指定されたレコードを削除し、削除の成功または失敗を示すメッセージボックスを表示します。

Dim module As New ExcelComModule
module.SetProviderName ("CosmosDB")
module.SetConnectionString("AccountEndpoint=myAccountEndpoint;AccountKey=myAccountKey;")
Dim nameArray
nameArray = Array("_id")
Dim valueArray
valueArray = Array("22")
Query = "DELETE FROM [CData].[Entities].Customers WHERE _id='22'"
If module.Delete(Query,nameArray,valueArray) Then
  MsgBox "The delete was successful."
Else
  MsgBox "The delete failed."
End If 
module.Close

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062