示例#1
0
        private void SearchButton_Click(object sender, EventArgs e)
        {
            string errMes = "";
            //検索条件の取得
            DateTime searchFormDate   = Common.FormatDatetimeStart(FromDateTimePicker.Value);
            DateTime searchToDate     = Common.FormatDatetimeEnd(ToDateTimePicker.Value);
            int      searchStatusCode = Common.GetStatusCodeFromText(this.StatusComboBox.SelectedItem.ToString()); //ステータスのコード変換

            //FromToの整合性チェック

            //検索処理
            List <DaoAttendance> daoAttendanceList = new List <DaoAttendance>();

            if (errMes == "")
            {
                errMes = DaoAttendance.SelectFromTo(ref daoAttendanceList, searchFormDate, searchToDate, searchStatusCode);
            }
            //検索結果処理
            if (errMes == "")
            {
                //検索結果を使ってDataGridに値を反映させる
                SetDataTable(daoAttendanceList);
            }
            //エラーメッセージ
            if (errMes != "")
            {
                MessageBox.Show(errMes, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
示例#2
0
        /// <summary>
        /// 最終更新ラベルを更新する
        /// </summary>
        /// <param name="daoAttendance">記載したい情報の入ったDaoAttendanceオブジェクト</param>
        private void SetLastActionLabel(DaoAttendance daoAttendance)
        {
            string txt = "最終更新:";

            txt += daoAttendance.recordDate.ToString();
            txt += " | ";
            txt += GetRecordStatus(daoAttendance.toWork);
            LastActionLabel.Text = txt;
        }
示例#3
0
        /// <summary>
        /// DBの初期セットアップを行う
        /// </summary>
        private void DBSetup()
        {
            string errMes = "";

            errMes = DaoAttendance.Setup();
            if (errMes != "")
            {
                MessageBox.Show(errMes);
            }
        }
示例#4
0
        /// <summary>
        /// 日付範囲による検索
        /// </summary>
        /// <param name="daoAttendanceList">検索結果格納用変数</param>
        /// <param name="fromDate">検索開始範囲</param>
        /// <param name="toDate">検索終了範囲</param>
        /// <param name="statusCode">ステータスコード</param>
        /// <returns>エラーメッセージ 正常終了の場合空文字</returns>
        public static string SelectFromTo(ref List <DaoAttendance> daoAttendanceList, DateTime fromDate, DateTime toDate, int statusCode)
        {
            string errMes = "";

            try
            {
                using (SQLiteConnection con = new SQLiteConnection("Data Source=" + DB_FILE_NAME))
                {
                    con.Open();
                    using (SQLiteCommand cmd = con.CreateCommand())
                    {
                        StringBuilder sql = new StringBuilder();
                        sql.AppendLine("SELECT");
                        sql.AppendLine(" *");
                        sql.AppendLine("FROM " + TABLE_NAME);
                        sql.AppendLine("WHERE 1=1");
                        sql.AppendLine(" AND REPLACE([record_date],'/','-') >= @startDate");
                        sql.AppendLine(" AND REPLACE([record_date],'/','-') <= @endDate");
                        //MEMO:データの投入形式がyyyy/MM/ddとなっているため、REPLACEしないとWHERE文にマッチしない

                        cmd.Parameters.Add(new SQLiteParameter("startDate", fromDate));
                        cmd.Parameters.Add(new SQLiteParameter("endDate", toDate));

                        //ステータス指定時のみ追加
                        if (statusCode == 1 || statusCode == 2)
                        {
                            sql.AppendLine(" AND [to_work] = @status");
                            cmd.Parameters.Add(new SQLiteParameter("status", statusCode));
                        }

                        cmd.CommandText = sql.ToString();
                        SQLiteDataReader reader = cmd.ExecuteReader();

                        while (reader.Read())
                        {
                            DaoAttendance attendance = new DaoAttendance();
                            attendance.recordDate = reader.GetFieldValue <string>(reader.GetOrdinal("record_date"));
                            attendance.toWork     = reader.GetFieldValue <long>  (reader.GetOrdinal("to_work"));

                            daoAttendanceList.Add(attendance);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                errMes = e.ToString();
            }

            return(errMes);
        }
示例#5
0
        /// <summary>
        /// 勤怠記録テーブルへの書き込み処理を呼び出す
        /// </summary>
        /// <param name="recordDateTime">記録対象日時</param>
        /// <param name="status">出勤(1)/退勤(2)</param>
        private void RecordWorkTime(DateTime recordDateTime, int status)
        {
            string        errMes        = "";
            DaoAttendance daoAttendance = new DaoAttendance();

            daoAttendance.recordDate = recordDateTime.ToString("yyyy/MM/dd HH:mm:ss");
            daoAttendance.toWork     = status;
            errMes = daoAttendance.Insert();
            if (errMes != "")
            {
                MessageBox.Show(errMes);
            }
            else
            {
                MessageLabel.Text = "登録を完了しました。 ( " + recordDateTime.ToLongTimeString() + " )";
                GetLastedRecord();
            }
        }
示例#6
0
        /// <summary>
        /// 記録日付の新しいデータを上限付きで取得
        /// </summary>
        /// <param name="daoAttendanceList">結果受け取りリスト</param>
        /// <param name="limit">LIMIT句で指定する行数</param>
        /// <returns>エラーメッセージ 正常終了の場合空文字</returns>
        public static string SelectAll(ref List <DaoAttendance> daoAttendanceList, int limit)
        {
            string errMes = "";

            try
            {
                using (SQLiteConnection con = new SQLiteConnection("Data Source=" + DB_FILE_NAME))
                {
                    con.Open();
                    using (SQLiteCommand cmd = con.CreateCommand())
                    {
                        StringBuilder sql = new StringBuilder();
                        sql.AppendLine("SELECT");
                        sql.AppendLine(" *");
                        sql.AppendLine("FROM " + TABLE_NAME);
                        sql.AppendLine("ORDER BY");
                        sql.AppendLine(" DATE(REPLACE(record_date,'/','-')) DESC,");
                        sql.AppendLine(" TIME(REPLACE(record_date,'/','-')) DESC");
                        //MEMO:データの投入形式がyyyy/MM/ddとなっているため、REPLACEしないとORDER BY文にマッチしない
                        sql.AppendLine("LIMIT " + limit);

                        cmd.CommandText = sql.ToString();
                        SQLiteDataReader reader = cmd.ExecuteReader();

                        while (reader.Read())
                        {
                            DaoAttendance attendance = new DaoAttendance();
                            attendance.recordDate = reader.GetFieldValue <string>(reader.GetOrdinal("record_date"));
                            attendance.toWork     = reader.GetFieldValue <long>  (reader.GetOrdinal("to_work"));

                            daoAttendanceList.Add(attendance);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                errMes = e.ToString();
            }

            return(errMes);
        }
示例#7
0
        /// <summary>
        /// 勤怠テーブルデータの最新20件を取得する
        /// </summary>
        private void GetLastedRecord()
        {
            string errMes = "";
            List <DaoAttendance> daoAttendanceList = new List <DaoAttendance>();

            errMes = DaoAttendance.SelectAll(ref daoAttendanceList, 20);
            if (errMes == "")
            {
                SetDataTable(daoAttendanceList);
                if (daoAttendanceList.Count > 0)
                {
                    SetLastActionLabel(daoAttendanceList[0]);
                }
                else
                {
                    LastActionLabel.Text = "";
                }
            }
            else
            {
                MessageBox.Show(errMes);
            }
        }