Infopathのビューに、「プロジェクトNo」「プロジェクト名」ドロップダウンボックスを追加し、「プロジェクトNo」のチェンジイベントで、「プロジェクト名」ボックスの値を動的に変更するには、以下プログラムを記述する。
※ドロップダウンボックスに紐付くデータは、SQLServerにあることが前提のコード。
※IntoPath2003互換
// 次の関数ハンドラが Microsoft Office InfoPath によって自動的に作成されます。
// 引数の数または種類を変更しないでください。
[InfoPathEventHandler(MatchPath = "/my:travelRequest/my:dプロジェクトNo", EventType = InfoPathEventType.OnAfterChange)]
public void dプロジェクトNo_OnAfterChange(DataDOMEvent e)
{
// ここにコードを書き込んで、グローバル状態に戻してください。
if (e.IsUndoRedo)
{
// 元に戻すまたはやり直しの操作が発生しましたが、DOM は読み取り専用です。
return;
}
// フィールドが変更されました。DOM は書き込み可能です。
// ここにコードを書き込んでください。
string strPJTNo = thisXDocument.DOM.selectSingleNode("/my:travelRequest/my:dプロジェクトNo").text;
string myConnString = "Provider=SQLOLEDB;Data Source=DINO_DP;Initial Catalog=PurchaseRequest;Persist Security Info=True;User ID=ユーザー名;Password=パスワード";
string mySQL = "SELECT DescriptionOfProject FROM TBL_ProjectMst WHERE ProjectNo = '" + strPJTNo + "'";
OleDbConnection myConn = new OleDbConnection(myConnString);
OleDbCommand myCommand = new OleDbCommand(mySQL, myConn);
myCommand.Connection.Open();
OleDbDataReader myReader = myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
while (myReader.Read())
{
thisXDocument.DOM.selectSingleNode("/my:travelRequest/my:dプロジェクト名").text = myReader.GetString(0);
}
myReader.Close();
myConn.Close();
}
最近のコメント