Infopathのビューに、「プロジェクトNo」「プロジェクト名」ドロップダウンボックスを追加し、「プロジェクトNo」のチェンジイベントで、「プロジェクト名」ボックスの値を動的に変更するには、以下プログラムを記述する。
※ドロップダウンボックスに紐付くデータは、SQLServerにあることが前提のコード。
※IntoPath2003互換
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// 次の関数ハンドラが 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(); } |
コメント