/// <summary> /// グリッドビューへ会社情報を表示する /// </summary> /// <param name="dg">DataGridViewオブジェクト名</param> private void GridViewShowData(string sConnect, DataGridView dg) { string sqlSTRING = string.Empty; sqlControl.DataControl sdCon = new common.sqlControl.DataControl(sConnect); SqlDataReader dR; //人事就業の会社領域のみを対象とする 2011/03/04 sqlSTRING += "select * from "; sqlSTRING += "(select tbCorpDatabaseContext.EntityCode,tbCorpDatabaseContext.EntityName,"; sqlSTRING += "tbCorpDatabaseContext.DatabaseName,tbCorpDatabaseContext.CreateDate,"; sqlSTRING += "CorpData.value('(/ObcCorpData/Node[@key=\"InitializeHR\"])[1]','varchar') as type, "; sqlSTRING += "CorpData.value('(/ObcCorpData/Node[@key=\"EraIndicate\"])[1]','varchar') as EraIn, "; sqlSTRING += "CorpData.value('(/ObcCorpData/Node[@key=\"HRFiscalMonth\"])[1]','varchar(7)') as FisMonth, "; sqlSTRING += "CorpData.value('(/ObcCorpData/Node[@key=\"HRFiscalYear\"])[1]','varchar(4)') as FisYear "; sqlSTRING += "from tbCorpDatabaseContext) as Corp "; sqlSTRING += "where (type is not null) "; sqlSTRING += "order by EntityCode"; dR = sdCon.free_dsReader(sqlSTRING); try { //グリッドビューに表示する int iX = 0; dg.RowCount = 0; while (dR.Read()) { //データグリッドにデータを表示する dg.Rows.Add(); GridViewCellData(dg, iX, dR); iX++; } dg.CurrentCell = null; } catch (Exception e) { MessageBox.Show(e.Message, "エラー", MessageBoxButtons.OK); } finally { dR.Close(); sdCon.Close(); } //会社情報がないとき if (dg.RowCount == 0) { MessageBox.Show("会社情報が存在しません", "会社選択", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); Environment.Exit(0); } }
///---------------------------------------------------------------- /// <summary> /// CSVデータから部門コンボボックスに課名をロードする </summary> /// <param name="tempObj"> /// コンボボックスオブジェクト</param> /// <param name="fName"> /// CSVデータファイルパス</param> ///---------------------------------------------------------------- public static void loadKa(ComboBox tempObj, string dbName) { try { ComboBumon cmb1; tempObj.Items.Clear(); tempObj.DisplayMember = "DisplayName"; tempObj.ValueMember = "code"; // 奉行SQLServer接続文字列取得 string sc = sqlControl.obcConnectSting.get(dbName); sqlControl.DataControl sdCon = new sqlControl.DataControl(sc); StringBuilder sb = new StringBuilder(); sb.Clear(); sb.Append("select DepartmentCode,DepartmentName from tbDepartment "); sb.Append("where Right(DepartmentCode, 2) = '00'"); sb.Append("order by DepartmentCode"); SqlDataReader dR = sdCon.free_dsReader(sb.ToString()); while (dR.Read()) { string dCode = string.Empty; // コンボボックスにセット cmb1 = new ComboBumon(); cmb1.ID = string.Empty; if (Utility.NumericCheck(dR["DepartmentCode"].ToString())) { dCode = Utility.StrtoInt(dR["DepartmentCode"].ToString()).ToString().PadLeft(5, '0'); } else { dCode = dR["DepartmentCode"].ToString().Trim(); } cmb1.DisplayName = dCode + " " + dR["DepartmentName"].ToString(); cmb1.Name = dR["DepartmentName"].ToString(); cmb1.code = dCode; tempObj.Items.Add(cmb1); } dR.Close(); sdCon.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "部門コンボボックスロード"); } }
///---------------------------------------------------------------- /// <summary> /// CSVデータから部門コンボボックスにロードする </summary> /// <param name="tempObj"> /// コンボボックスオブジェクト</param> /// <param name="fName"> /// CSVデータファイルパス</param> ///---------------------------------------------------------------- public static void load(ComboBox tempObj, string dbName) { try { ComboProject cmb1; tempObj.Items.Clear(); tempObj.DisplayMember = "DisplayName"; tempObj.ValueMember = "code"; // 奉行SQLServer接続文字列取得 string sc_ac = sqlControl.obcConnectSting.get(dbName); // 奉行SQLServer接続 sqlControl.DataControl sdCon_ac = new sqlControl.DataControl(sc_ac); // プロジェクトデータリーダーを取得する string sqlSTRING = string.Empty; sqlSTRING += "SELECT ProjectCode,ProjectName,ValidDate,InValidDate "; sqlSTRING += "from tbProject "; sqlSTRING += "Order by ProjectCode"; SqlDataReader dR = sdCon_ac.free_dsReader(sqlSTRING); while (dR.Read()) { string dCode = string.Empty; // コンボボックスにセット cmb1 = new ComboProject(); cmb1.ID = string.Empty; dCode = dR["ProjectCode"].ToString().PadLeft(20, '0').Substring(12, 8); cmb1.DisplayName = dCode + " " + dR["ProjectName"].ToString(); cmb1.Name = dR["ProjectName"].ToString(); cmb1.code = dCode; tempObj.Items.Add(cmb1); } dR.Close(); sdCon_ac.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "現場コンボボックスロード"); } }
///-------------------------------------------------------------------------------------- /// <summary> /// 就業奉行用受入データ作成</summary> ///-------------------------------------------------------------------------------------- public void SaveData(string dbName) { #region 出力配列 string[] arrayCsv = null; // 出力配列 #endregion #region 出力件数変数 int sCnt = 0; // 社員出力件数 #endregion StringBuilder sb = new StringBuilder(); Boolean pblFirstGyouFlg = true; string wID = string.Empty; string hKinmutaikei = string.Empty; global gl = new global(); // 奉行SQLServer接続文字列取得 string sc = sqlControl.obcConnectSting.get(dbName); sqlControl.DataControl sdCon = new sqlControl.DataControl(sc); // 出力先フォルダがあるか?なければ作成する //string cPath = Properties.Settings.Default.okPath; string cPath = global.cnfPath; if (!System.IO.Directory.Exists(cPath)) { System.IO.Directory.CreateDirectory(cPath); } try { //オーナーフォームを無効にする _preForm.Enabled = false; //プログレスバーを表示する frmPrg frmP = new frmPrg(); frmP.Owner = _preForm; frmP.Show(); int rCnt = 1; int saSum = 0; DateTime saDay = global.NODATE; int kaisu = 1; DateTime chkDt = DateTime.Today; // 伝票最初行フラグ pblFirstGyouFlg = true; // 勤務票データ取得 CONYX_CLIDataSetTableAdapters.汎用データ作成元TableAdapter adp = new CONYX_CLIDataSetTableAdapters.汎用データ作成元TableAdapter(); adp.Fill(_cTbl); foreach (var r in _cTbl) { // 存在しない日付は対象外 if (r.歴日付 == global.NODATE) { continue; } // 勤務実績のないデータは対象外 if (r.勤務体系コード == string.Empty && r.開始時 == string.Empty && r.開始分 == string.Empty && r.退勤時 == string.Empty && r.退勤分 == string.Empty && r.休憩時 == string.Empty && r.休憩分 == string.Empty && r.実労時 == string.Empty && r.実労分 == string.Empty && r.事由1 == string.Empty && r.事由2 == string.Empty) { continue; } // プログレスバー表示 frmP.Text = "就業奉行用受入データ作成中です・・・" + rCnt.ToString() + "/" + _cTbl.Count().ToString(); frmP.progressValue = rCnt * 100 / _cTbl.Count(); frmP.ProgressStep(); // ヘッダファイル出力 if (pblFirstGyouFlg == true) { sb.Clear(); sb.Append(H1).Append(","); // 社員番号 sb.Append(H2).Append(","); // 日付 sb.Append(H3).Append(","); // 勤務回 sb.Append(H4).Append(","); // 勤務体系コード sb.Append(H5).Append(","); // 事由1 sb.Append(H6).Append(","); // 事由2 //sb.Append(H7).Append(","); // 事由3 sb.Append(H8).Append(","); // 出勤時刻 sb.Append(H9).Append(","); // 退勤時刻 sb.Append(H10).Append(","); // 休憩時間項目コード sb.Append(H11); // 休憩時間 // 配列にデータを出力 sCnt++; Array.Resize(ref arrayCsv, sCnt); arrayCsv[sCnt - 1] = sb.ToString(); } sb.Clear(); // 社員番号 sb.Append(r.社員番号).Append(","); // 日付 sb.Append(r.歴日付.ToShortDateString()).Append(","); // 勤務回 if (saSum == r.社員番号 && saDay == r.歴日付) { kaisu++; } else { kaisu = 1; } sb.Append(kaisu).Append(","); // 勤務体系(シフト)コード hKinmutaikei = r.勤務体系コード.ToString(); sb.Append(hKinmutaikei).Append(","); // 事由 sb.Append(r.事由1).Append(","); sb.Append(r.事由2).Append(","); // 開始時刻 if (r.開始時 == string.Empty && r.開始分 == string.Empty) { sb.Append(","); } else { sb.Append(r.開始時 + ":" + r.開始分.PadLeft(2, '0')).Append(","); } //退出時刻 int taikinH = Utility.StrtoInt(r.退勤時); // 就業奉行が24時間制のとき if (_dtIndi == 0) { if (taikinH >= 24) { // 先頭に「翌日」を付加 sb.Append("翌日"); taikinH -= 24; } } if (r.退勤時 == string.Empty && r.退勤分 == string.Empty) { sb.Append(","); } else { sb.Append(taikinH + ":" + r.退勤分.PadLeft(2, '0')).Append(","); } // 休憩時間 sb.Append("012,"); if (r.休憩時 == string.Empty && r.休憩分 == string.Empty) { //sb.Append(","); sb.Append("0:00"); } else { //sb.Append(r.休憩時 + ":" + r.休憩分.PadLeft(2, '0')).Append(","); sb.Append(r.休憩時 + ":" + r.休憩分.PadLeft(2, '0')); } string uCSV = sb.ToString(); // 配列にデータを格納します sCnt++; Array.Resize(ref arrayCsv, sCnt); arrayCsv[sCnt - 1] = uCSV; // データ件数加算 rCnt++; pblFirstGyouFlg = false; saSum = r.社員番号; saDay = r.歴日付; } // 勤怠CSVファイル出力 if (arrayCsv != null) { txtFileWrite(cPath, arrayCsv); } // いったんオーナーをアクティブにする _preForm.Activate(); // 進行状況ダイアログを閉じる frmP.Close(); // オーナーのフォームを有効に戻す _preForm.Enabled = true; } catch (Exception e) { MessageBox.Show("就業奉行受入データ作成中" + Environment.NewLine + e.Message, "エラー", MessageBoxButtons.OK); } finally { //if (OutData.sCom.Connection.State == ConnectionState.Open) OutData.sCom.Connection.Close(); if (sdCon.Cn.State == System.Data.ConnectionState.Open) { sdCon.Close(); } } }
///---------------------------------------------------------------------------------- /// <summary> /// 対象シフトコードの開始時刻と終了時刻を取得する /// : 日替わり時刻を取得 2018/02/06 </summary> /// <param name="_dbName"> /// データベース名</param> /// <param name="sftCode"> /// シフトコード </param> /// <param name="sTime"> /// 開始時刻</param> /// <param name="eTime"> /// 終了時刻</param> /// <param name="changeTime"> /// 日替わり時刻</param> ///---------------------------------------------------------------------------------- private void GetSftTime(string sftCode, out string sTime, out string eTime, out DateTime changeTime, sqlControl.DataControl sdCon) { // 対象のシフトコード取得する DateTime sDt = DateTime.Now; DateTime eDt = DateTime.Now; DateTime cDt = DateTime.Now; // 2018/02/06 // 勤務体系(シフト)コード情報取得 StringBuilder sb = new StringBuilder(); sb.Clear(); sb.Append("SELECT tbLaborSystem.LaborSystemID,tbLaborSystem.LaborSystemCode,"); sb.Append("tbLaborSystem.LaborSystemName,tbLaborTimeSpanRule.StartTime,"); sb.Append("tbLaborTimeSpanRule.EndTime,tbLaborSystem.DayChangeTime "); sb.Append("FROM tbLaborSystem inner join tbLaborTimeSpanRule "); sb.Append("on tbLaborSystem.LaborSystemID = tbLaborTimeSpanRule.LaborSystemID "); sb.Append("where tbLaborTimeSpanRule.LaborTimeSpanRuleType = 1 "); sb.Append("and tbLaborSystem.LaborSystemCode = '").Append(sftCode).Append("'"); SqlDataReader dR = sdCon.free_dsReader(sb.ToString()); while (dR.Read()) { sDt = DateTime.Parse(dR["StartTime"].ToString()); eDt = DateTime.Parse(dR["EndTime"].ToString()); cDt = DateTime.Parse(dR["DayChangeTime"].ToString()); // 2018/02/06 break; } dR.Close(); // 開始時刻 sTime = sDt.Hour.ToString() + ":" + sDt.Minute.ToString().PadLeft(2, '0'); // 終了時刻 eTime = string.Empty; if (sDt.Day < eDt.Day) { // 翌日のとき eTime = "翌日"; } eTime += eDt.Hour.ToString() + ":" + eDt.Minute.ToString().PadLeft(2, '0'); // 2018/02/06 changeTime = cDt; }