Excel Add-In for Microsoft Project

Build 24.0.9062

データの変更

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

Insert

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

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

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

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

Dim nameArray
nameArray = Array("Name", "Name")
Dim valueArray
valueArray = Array("Jon Doe", "Tax Checker")
Dim module As New ExcelComModule
module.SetProviderName ("MicrosoftProject")
module.SetConnectionString ("user=myuseraccount;password=mypassword;URL=http://myserver/myOrgRoot;")
Query = "INSERT INTO Projects (Name, Name) VALUES (@Name, @Name)"
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() がMicrosoft Project プロバイダーでサポートされている場合、以下の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("Name", "Name","Id")
Dim valueArray
valueArray = Array("Jon Doe", "Tax Checker","11111111-c6be-e111-1f1e-00155d055681")
Dim module As New ExcelComModule
module.SetProviderName ("MicrosoftProject")
module.SetConnectionString ("user=myuseraccount;password=mypassword;URL=http://myserver/myOrgRoot;")
Query = "UPDATE Projects SET Name=@Name, Name=@Name 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, Name FROM Projects WHERE Name =; 'Tax Checker'
paramNamesクエリで使用される名前付きパラメータを含む配列。パラメータクエリを使用する場合は、必須。
paramValuesパラメータ名に対応する値を含む配列。パラメータクエリを使用する場合は、必須。

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

Dim module As New ExcelComModule
module.SetProviderName ("MicrosoftProject")
module.SetConnectionString("user=myuseraccount;password=mypassword;URL=http://myserver/myOrgRoot;")
Dim nameArray
nameArray = Array("Id")
Dim valueArray
valueArray = Array("11111111-c6be-e111-1f1e-00155d055681")
Query = "DELETE FROM Projects WHERE Id='11111111-c6be-e111-1f1e-00155d055681'"
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