プロジェクト

全般

プロフィール

統計
| リビジョン:

h-you / branches / src / ProcessManagement / ProcessManagement / Common / CommonMotions.cs @ 334

履歴 | 表示 | アノテート | ダウンロード (123 KB)

1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Diagnostics;
6
using System.Windows.Forms;
7
using System.Drawing;
8
using System.IO;
9
using System.Text.RegularExpressions;
10
using System.Data;
11
using System.Security.Cryptography;
12
using System.Globalization;
13
using System.Runtime.InteropServices;
14
using System.Collections;
15

    
16
using Microsoft.VisualBasic; //for StrConv
17

    
18
using log4net;
19
using log4net.Appender;
20
using log4net.Repository.Hierarchy;
21

    
22
using ProcessManagement.DB.Core;
23
using ProcessManagement.DataModel;
24
using ProcessManagement.DB.IOAccess;
25
using ProcessManagement.Forms.CustomControls;
26
using ProcessManagement.Forms.DataEntry;
27

    
28
namespace ProcessManagement.Common
29
{
30
    /// <summary>
31
    /// 工事管理システム共通クラス
32
    /// </summary>
33
    public static class CommonMotions
34
    {
35
        #region 定義部
36
        /// <summary>
37
        /// log4netログを使用する
38
        /// </summary>
39
        private static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
40
        #endregion
41

    
42
        #region 変数
43
        /// <summary>
44
        /// 定義ファイル読込クラス定義
45
        /// </summary>
46
        private static DefinitionFileRead m_dfr_model = null;
47

    
48
        /// <summary>
49
        /// 管理マスタデータ保持領域
50
        /// </summary>
51
        private static SystemMaster m_systemMaster = new SystemMaster();
52

    
53
        /// <summary>
54
        /// ログインユーザー担当者データ
55
        /// </summary>
56
        private static PersonInChargeMaster m_LoginUserData = new PersonInChargeMaster();
57

    
58
        /// <summary>
59
        /// ログインユーザー参照部署データ
60
        /// </summary>
61
        private static List<PersonDepartmentMaster> m_LoginUserRefDepartment = new List<PersonDepartmentMaster>();
62

    
63
        /// <summary>
64
        /// ログインユーザーセキュリティ区分
65
        /// </summary>
66
        private static SecurityMaster m_LoginUserSecurity = new SecurityMaster();
67

    
68
        /// <summary>
69
        /// ログインユーザー処理起動区分
70
        /// </summary>
71
        private static List<ProcessExcute> m_LoginUserProcExe = new List<ProcessExcute>();
72

    
73
        /// <summary>
74
        /// 製品ファイルバージョン格納エリア
75
        /// </summary>
76
        private static FileVersionInfo m_ProductVersionInfo = FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
77

    
78
        #endregion
79

    
80
        #region コンストラクタ
81
        /// <summary>
82
        /// 何もしない
83
        /// </summary>
84
        #endregion
85

    
86
        #region プロパティ
87
        /// <summary>
88
        /// 本稼働フラグ
89
        /// </summary>
90
        public static bool ProductionExecution
91
        {
92
            get { return CommonDefine.m_ProductionExecution; }
93
        }
94
        /// <summary>
95
        /// 定義ファイル読込クラス
96
        /// </summary>
97
        public static DefinitionFileRead DFRModel
98
        {
99
            get { return m_dfr_model; }
100
        }
101

    
102
        /// <summary>
103
        /// 管理マスタデータ
104
        /// </summary>
105
        public static SystemMaster SystemMasterData
106
        {
107
            get { return m_systemMaster; }
108
            set { m_systemMaster = value; }
109
        }
110

    
111
        /// <summary>
112
        /// ログインユーザー担当者データ
113
        /// </summary>
114
        public static PersonInChargeMaster LoginUserData
115
        {
116
            get { return m_LoginUserData; }
117
            set { m_LoginUserData = value; }
118
        }
119

    
120
        /// <summary>
121
        /// ログインユーザー参照部署データ
122
        /// </summary>
123
        public static List<PersonDepartmentMaster> LoginUserRefDepartment
124
        {
125
            get { return m_LoginUserRefDepartment; }
126
            set { m_LoginUserRefDepartment = value; }
127
        }
128

    
129
        /// <summary>
130
        /// ログインユーザーセキュリティ区分
131
        /// </summary>
132
        public static SecurityMaster LoginUserSecurity
133
        {
134
            get { return m_LoginUserSecurity; }
135
            set { m_LoginUserSecurity = value; }
136
        }
137

    
138
        /// <summary>
139
        /// ログインユーザー処理起動区分
140
        /// </summary>
141
        public static List<ProcessExcute> LoginUserProcExe
142
        {
143
            get { return m_LoginUserProcExe; }
144
            set { m_LoginUserProcExe = value; }
145
        }
146

    
147
        /// <summary>
148
        /// 製品ファイルバージョン格納エリア
149
        /// </summary>
150
        public static FileVersionInfo ProductVersionInfo
151
        {
152
            get { return m_ProductVersionInfo; }
153
        }
154

    
155
        #endregion
156

    
157
        #region 初期化
158
        /// <summary>
159
        /// 初期化
160
        /// </summary>
161
        public static void Initialize()
162
        {
163
            try
164
            {
165
                // 定義ファイル読込
166
                DefinitionFileInit();
167

    
168
                // 他共通クラス初期化
169
                DBCommon.Instance.Initialize();
170

    
171
                // 管理マスタ取得
172
                SetSystemMaster();
173
            }
174
            catch (Exception ex)
175
            {
176
                logger.ErrorFormat("初期化エラー:{0}:{1}", GetMethodName(), ex.Message);
177
            }
178
        }
179
        #endregion
180

    
181
        #region ---------- データ変換メソッド
182
        #region 西暦を和暦に変換する
183
        /// <summary>
184
        /// 西暦を和暦に変換する
185
        /// </summary>
186
        /// <returns></returns>
187
        public static string cnvJapaneseCalendar(DateTime Terget)
188
        {
189
            try
190
            {
191
                CultureInfo culture = new CultureInfo("ja-JP", true);
192
                culture.DateTimeFormat.Calendar = new JapaneseCalendar();
193

    
194
                return Terget.ToString("ggyy年M月d日", culture);
195
            }
196
            catch (Exception ex)
197
            {
198
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
199
                return string.Empty;
200
            }
201
        }
202
        #endregion
203

    
204
        #region 今の年号を取得する
205
        /// <summary>
206
        /// 今の年号を取得する
207
        /// </summary>
208
        /// <returns></returns>
209
        public static string GetNameOfAnEra(DateTime TargetDate)
210
        {
211
            try
212
            {
213
                string strRet = string.Empty;
214

    
215
                CultureInfo culture = new CultureInfo("ja-JP", true);
216
                culture.DateTimeFormat.Calendar = new JapaneseCalendar();
217

    
218
                string result = TargetDate.ToString("ggyy年M月d日", culture);
219

    
220
                int strLength = 0;
221
                foreach (char c in result)
222
                {
223
                    if (char.IsNumber(c)) break;
224

    
225
                    strLength++;
226
                }
227

    
228
                strRet = result.Substring(0, strLength);
229

    
230
                return strRet;
231
            }
232
            catch (Exception ex)
233
            {
234
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
235
                return string.Empty;
236
            }
237
        }
238
        #endregion
239

    
240
        #region Int値より文字列に変化して指定位置に指定文字を入れる。(工事番号編集)
241
        /// <summary>
242
        /// Int値より文字列に変化して指定位置に指定文字を入れる。
243
        /// </summary>
244
        /// <param name="strCode"></param>
245
        /// <returns></returns>
246
        public static string cnvStringCodeFromInt(int IntCode, string strCode, int iPoint)
247
        {
248
            try
249
            {
250
                // 文字列変換
251
                string strWork = IntCode.ToString();
252
                // 指定位置が文字列長を超えている場合はエラー
253
                if (strWork.Length <= iPoint) return string.Empty;
254
                // 文字挿入
255
                strWork = strWork.Substring(0, iPoint) + strCode + strWork.Substring(iPoint);
256
                return strWork;
257
            }
258
            catch (System.Exception ex)
259
            {
260
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
261
                return string.Empty;
262
            }
263
        }
264
        #endregion
265

    
266
        #region 文字列より指定文字を除去してInt値に変換する
267
        /// <summary>
268
        /// 文字列より指定文字を除去してInt値に変換する
269
        /// </summary>
270
        /// <param name="strCode"></param>
271
        /// <returns></returns>
272
        public static int cnvIntFromStringCode(string strCode, string strRemove)
273
        {
274
            try
275
            {
276
                // 文字列除去後変換
277
                return cnvInt(strCode.Replace(strRemove, ""));
278
            }
279
            catch (System.Exception ex)
280
            {
281
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
282
                return 0;
283
            }
284
        }
285
        #endregion
286

    
287
        #region オブジェクトを日付に変換する
288
        /// <summary>
289
        /// 日付返還変換
290
        /// </summary>
291
        /// <param name="sendData"></param>
292
        /// <returns></returns>
293
        public static DateTime cnvDate(object sendData)
294
        {
295
            DateTime dtDateWork = DateTime.MinValue;
296
            try
297
            {
298
                // 空判定
299
                if (sendData == null) return dtDateWork;
300
                if (sendData.ToString().Length == 0) return dtDateWork;
301

    
302
                // 変換
303
                bool bRet = DateTime.TryParse(sendData.ToString(), out dtDateWork);
304

    
305
                return dtDateWork;
306
            }
307
            catch (System.Exception ex)
308
            {
309
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
310
                return dtDateWork;
311
            }
312
        }
313
        #endregion
314

    
315
        #region オブジェクトより数値変換(long)
316
        /// <summary>
317
        /// オブジェクトより数値変換(long)
318
        /// </summary>
319
        /// <param name="sendData"></param>
320
        /// <returns></returns>
321
        public static long cnvLong(object sendData)
322
        {
323
            try
324
            {
325
                long retData = 0;
326

    
327
                // 空判定
328
                if (sendData == null) return retData;
329
                if (sendData.ToString().Trim().Length == 0) return retData;
330

    
331
                // 変換
332
                long.TryParse(sendData.ToString().Replace(",", "").Replace("\\", "").Trim(), out retData);
333

    
334
                return retData;
335
            }
336
            catch (System.Exception ex)
337
            {
338
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
339
                return 0;
340
            }
341
        }
342
        #endregion
343

    
344
        #region オブジェクトより数値変換(int)
345
        /// <summary>
346
        /// オブジェクトより数値変換(int)
347
        /// </summary>
348
        /// <param name="sendData"></param>
349
        /// <returns></returns>
350
        public static int cnvInt(object sendData)
351
        {
352
            try
353
            {
354
                int retData = 0;
355

    
356
                // 空判定
357
                if (sendData == null) return retData;
358
                if (sendData.ToString().Trim().Length == 0) return retData;
359

    
360
                // 変換
361
                int.TryParse(sendData.ToString().Replace(",", "").Replace("\\", "").Trim(), out retData);
362

    
363
                return retData;
364
            }
365
            catch (System.Exception ex)
366
            {
367
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
368
                return 0;
369
            }
370
        }
371
        #endregion
372

    
373
        #region オブジェクトより数値変換(string)
374
        /// <summary>
375
        /// オブジェクトより数値変換(string)
376
        /// </summary>
377
        /// <param name="sendData"></param>
378
        /// <returns></returns>
379
        public static string cnvString(object sendData)
380
        {
381
            try
382
            {
383
                string retData = string.Empty;
384

    
385
                // 空判定
386
                if (sendData == null) return retData;
387
                if (sendData.ToString().Trim().Length == 0) return retData;
388

    
389

    
390
                // 変換
391
                retData = sendData.ToString(); 
392

    
393
                return retData;
394
            }
395
            catch (System.Exception ex)
396
            {
397
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
398
                return "";
399
            }
400
        }
401
        #endregion
402

    
403
        #region オブジェクトより数値変換(double)
404
        /// <summary>
405
        /// オブジェクトより数値変換(double)
406
        /// </summary>
407
        /// <param name="sendData"></param>
408
        /// <returns></returns>
409
        public static double cnvDouble(object sendData)
410
        {
411
            try
412
            {
413
                double retData = 0;
414

    
415
                // 空判定
416
                if (sendData == null) return retData;
417
                if (sendData.ToString().Trim().Length == 0) return retData;
418

    
419

    
420
                // 変換
421
                double.TryParse(sendData.ToString().Replace(",", "").Replace("\\", "").Trim(), out retData);
422

    
423
                return retData;
424
            }
425
            catch (System.Exception ex)
426
            {
427
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
428
                return 0;
429
            }
430
        }
431
        #endregion
432

    
433
        #region オブジェクトより数値変換(float)
434
        /// <summary>
435
        /// オブジェクトより数値変換(float)
436
        /// </summary>
437
        /// <param name="sendData"></param>
438
        /// <returns></returns>
439
        public static float cnvFloat(object sendData)
440
        {
441
            try
442
            {
443
                float retData = 0;
444

    
445
                // 空判定
446
                if (sendData == null) return retData;
447
                if (sendData.ToString().Trim().Length == 0) return retData;
448

    
449

    
450
                // 変換
451
                float.TryParse(sendData.ToString().Replace(",", "").Replace("\\", "").Trim(), out retData);
452

    
453
                return retData;
454
            }
455
            catch (System.Exception ex)
456
            {
457
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
458
                return 0;
459
            }
460
        }
461
        #endregion
462

    
463
        #region オブジェクトより数値変換(decimal)
464
        /// <summary>
465
        /// オブジェクトより数値変換(decimal)
466
        /// </summary>
467
        /// <param name="sendData"></param>
468
        /// <returns></returns>
469
        public static decimal cnvDecimal(object sendData)
470
        {
471
            try
472
            {
473
                decimal retData = 0;
474

    
475
                // 空判定
476
                if (sendData == null) return retData;
477
                if (sendData.ToString().Trim().Length == 0) return retData;
478

    
479

    
480
                // 変換
481
                decimal.TryParse(sendData.ToString().Replace(",", "").Replace("\\", "").Trim(), out retData);
482

    
483
                return retData;
484
            }
485
            catch (System.Exception ex)
486
            {
487
                Console.WriteLine("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
488
                return 0;
489
            }
490
        }
491
        #endregion
492

    
493
        #region オブジェクトよりBool値変換(bool)
494
        /// <summary>
495
        /// オブジェクトよりBool値変換(bool)
496
        /// </summary>
497
        /// <param name="sendData"></param>
498
        /// <returns></returns>
499
        public static bool cnvBool(object sendData)
500
        {
501
            try
502
            {
503
                bool retData = false;
504

    
505
                // 空判定
506
                if (sendData == null) return retData;
507
                if (sendData.ToString().Trim().Length == 0) return retData;
508

    
509
                // 変換
510
                bool.TryParse(sendData.ToString(), out retData);
511

    
512
                return retData;
513
            }
514
            catch (System.Exception ex)
515
            {
516
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
517
                return false;
518
            }
519
        }
520
        #endregion
521

    
522
        #region 四捨五入
523
        /// <summary>
524
        /// 四捨五入
525
        /// </summary>
526
        /// <param name="InputData"></param>
527
        /// <returns></returns>
528
        public static int cnvRound(double InputData)
529
        {
530
            int retRoundData = 0;
531
            try
532
            {
533
                retRoundData = (int)Math.Round(InputData, MidpointRounding.AwayFromZero);
534

    
535
                return retRoundData;
536
            }
537
            catch (System.Exception ex)
538
            {
539
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
540
                return retRoundData;
541
            }
542
        }
543
        #endregion
544

    
545
        #region 切り上げ
546
        /// <summary>
547
        /// 切り上げ
548
        /// </summary>
549
        /// <param name="InputData"></param>
550
        /// <returns></returns>
551
        public static int cnvRoundUp(double InputData)
552
        {
553
            int retRoundData = 0;
554
            try
555
            {
556
                retRoundData = (int)Math.Ceiling(InputData);
557

    
558
                return retRoundData;
559
            }
560
            catch (System.Exception ex)
561
            {
562
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
563
                return retRoundData;
564
            }
565
        }
566
        #endregion
567

    
568
        #region 切り捨て
569
        /// <summary>
570
        /// 切り捨て
571
        /// </summary>
572
        /// <param name="InputData"></param>
573
        /// <returns></returns>
574
        public static int cnvTruncate(double InputData)
575
        {
576
            int retRoundData = 0;
577
            try
578
            {
579
                retRoundData = (int)Math.Truncate(InputData);
580

    
581
                return retRoundData;
582
            }
583
            catch (System.Exception ex)
584
            {
585
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
586
                return retRoundData;
587
            }
588
        }
589
        #endregion
590

    
591
        #region 四捨五入(四捨五入位置指定)
592
        /// <summary>
593
        /// 四捨五入(四捨五入位置指定)
594
        /// </summary>
595
        /// <param name="value"></param>
596
        /// <param name="pos"></param>
597
        /// <returns></returns>
598
        public static int IntRound(double value, int pos)
599
        {
600
            // 何乗かを求める
601
            int posion = (int)Math.Pow(10, (pos + 1));
602

    
603
            int upperval = (int)(value / posion);
604
            upperval *= posion;
605
            int lowerval = (int)(value % posion);
606
            int chkval = (int)(lowerval / Math.Pow(10, pos));
607
            if (chkval > 4) upperval += (1 * posion);
608

    
609
            return upperval;
610
        }
611
        #endregion
612

    
613
        #region 切り捨て(切り捨て位置指定)
614
        /// <summary>
615
        /// 切り捨て(切り捨て位置指定)
616
        /// </summary>
617
        /// <param name="value"></param>
618
        /// <param name="pos"></param>
619
        /// <returns></returns>
620
        public static int IntRoundDown(double value, int pos)
621
        {
622
            // 何乗かを求める
623
            int posion = (int)Math.Pow(10, (pos + 1));
624

    
625
            int upperval = (int)(value / posion);
626
            upperval *= posion;
627

    
628
            return upperval;
629
        }
630
        #endregion
631

    
632
        #region 切り上げ(切り上げ位置指定)
633
        /// <summary>
634
        /// 切り上げ(切り上げ位置指定)
635
        /// </summary>
636
        /// <param name="value"></param>
637
        /// <param name="pos"></param>
638
        /// <returns></returns>
639
        public static int IntRoundUp(double value, int pos)
640
        {
641
            // 何乗かを求める
642
            int posion = (int)Math.Pow(10, (pos + 1));
643

    
644
            int upperval = (int)(value / posion);
645
            upperval *= posion;
646
            int lowerval = (int)(value % posion);
647
            int chkval = (int)(lowerval / Math.Pow(10, pos));
648
            if (chkval > 0) upperval += (1 * posion);
649

    
650
            return upperval;
651
        }
652
        #endregion
653

    
654
        #region 0~26までの数字をA~Zに変換する
655
        /// <summary>
656
        /// 0~26までの数字をA~Zに変換する
657
        /// </summary>
658
        /// <param name="num"></param>
659
        /// <returns></returns>
660
        public static string cnvNumberToAlphaCharacter(int num)
661
        {
662
            try
663
            {
664
                // ----- 16進数文字列 -> 数値
665
                int CnvCode = Convert.ToInt32("0041", 16);      // 'A'
666
                int LastCode = Convert.ToInt32("005A", 16);     // 'Z'
667

    
668
                // 'Z'を超えたら余剰を使って変換する
669
                int work = (CnvCode + num);
670
                if (work <= LastCode)
671
                {
672
                    // 変換値を加算する
673
                    CnvCode += num;
674
                }
675
                else
676
                {
677
                    CnvCode += (work % LastCode);
678
                }
679
                // 'Z'を超えたら採番しない
680
                //if (CnvCode > LastCode) return string.Empty;
681

    
682
                // 数値(文字コード) -> 文字
683
                char c = Convert.ToChar(CnvCode);
684
                // 英字「文字列」
685
                string newChar = c.ToString();
686

    
687
                return newChar;
688
            }
689
            catch (System.Exception ex)
690
            {
691
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
692
                return "";
693
            }
694
        }
695
        #endregion
696

    
697
        #region 日付が最小値ならば"未定"文字を返す
698
        /// <summary>
699
        /// 日付が最小値ならば"未定"文字を返す
700
        /// </summary>
701
        /// <param name="srcDate"></param>
702
        /// <returns></returns>
703
        public static string cnvDateToUndecidedString(DateTime srcDate)
704
        {
705
            try
706
            {
707
                string work = "";
708
                if (srcDate.Equals(DateTime.MinValue))
709
                    work = CommonDefine.s_UndecidedString;
710
                else
711
                    work = srcDate.ToShortDateString();
712

    
713
                return work;
714
            }
715
            catch (System.Exception ex)
716
            {
717
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
718
                return "";
719
            }
720
        }
721
        #endregion
722

    
723
        #region オブジェクトより日付を返す(文字列が"未定"文字ならば日付最小値を返す)
724
        /// <summary>
725
        /// オブジェクトより日付を返す
726
        /// 文字列が"未定"文字ならば日付最小値を返す
727
        /// </summary>
728
        /// <param name="srcDate"></param>
729
        /// <returns></returns>
730
        public static DateTime cnvUndecidedStringToDate(object srcDate)
731
        {
732
            DateTime work = DateTime.MinValue;
733
            try
734
            {
735
                if (!srcDate.Equals(CommonDefine.s_UndecidedString))
736
                    work = cnvDate(srcDate);
737

    
738
                return work;
739
            }
740
            catch (System.Exception ex)
741
            {
742
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
743
                return work;
744
            }
745
        }
746
        #endregion
747

    
748
        #region オブジェクトより数値(文字列が"未定"文字ならば0を返す)
749
        /// <summary>
750
        /// オブジェクトより数値
751
        /// 文字列が"未定"文字ならば0を返す
752
        /// </summary>
753
        /// <param name="srcDate"></param>
754
        /// <returns></returns>
755
        public static double cnvUndecidedStringToDouble(object srcDate)
756
        {
757
            double work = 0;
758
            try
759
            {
760
                if (!srcDate.Equals(CommonDefine.s_UndecidedString))
761
                    work = cnvDouble(srcDate);
762

    
763
                return work;
764
            }
765
            catch (System.Exception ex)
766
            {
767
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
768
                return work;
769
            }
770
        }
771
        #endregion
772

    
773
        #region 色指定文字列より色を返す
774
        /// <summary>
775
        /// 色指定文字列より色を返す
776
        /// </summary>
777
        /// <param name="strColor"></param>
778
        /// <returns></returns>
779
        public static Color cnvStringToColor(string strColor)
780
        {
781
            Color ColorRet = Color.White;
782
            try
783
            {
784
                // 色文字列チェック
785
                if (!CommonMotions.chkObjectIsNull(strColor) && strColor.Length != 0)
786
                {
787
                    ColorRet = ColorTranslator.FromHtml(strColor);
788
                }
789
                return ColorRet;
790
            }
791
            catch (System.Exception ex)
792
            {
793
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
794
                return ColorRet;
795
            }
796
        }
797
        #endregion
798

    
799
        #region 色指定文字列より色を返す・設定無しは指定場所のデフォルトを返す
800
        /// <summary>
801
        /// 色指定文字列より色を返す・設定無しは指定場所のデフォルトを返す
802
        /// </summary>
803
        /// <param name="strColor"></param>
804
        /// <param name="point"></param>
805
        /// <returns></returns>
806
        public static Color getBackForeColor(string strColor, TermMaster.PalceOfColorDef point)
807
        {
808
            Color ColorRet = Color.White;
809
            try
810
            {
811
                // デフォルトセット
812
                if (point == TermMaster.PalceOfColorDef.BackColor)
813
                {   // 背景
814
                    ColorRet = Color.White;
815
                }
816
                else if (point == TermMaster.PalceOfColorDef.ForeColor)
817
                {   // 文字色
818
                    ColorRet = Color.Black;
819
                }
820
                else
821
                {
822
                    ColorRet = Color.Transparent;
823
                }
824

    
825
                if (!chkObjectIsNull(strColor) && strColor.Length != 0)
826
                {
827
                }
828
                else
829
                {
830
                    strColor = String.Format("0x{0:X2}{1:X2}{2:X2}", ColorRet.R, ColorRet.G, ColorRet.B);
831
                }
832

    
833
                ColorRet = cnvStringToColor(strColor);
834

    
835
                return ColorRet;
836
            }
837
            catch (System.Exception ex)
838
            {
839
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
840
                return ColorRet;
841
            }
842
        }
843
        #endregion
844

    
845
        #region 補色を取得する
846
        /// <summary>
847
        /// 補色を取得する
848
        /// </summary>
849
        /// <param name="color"></param>
850
        /// <returns></returns>
851
        public static Color GetComplementaryColor(Color color)
852
        {
853
            try
854
            {
855
                byte r = (byte)~color.R;
856
                byte g = (byte)~color.G;
857
                byte b = (byte)~color.B;
858

    
859
                return Color.FromArgb(r, g, b);
860
            }
861
            catch (System.Exception ex)
862
            {
863
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
864
                return color;
865
            }
866
        }
867
        #endregion
868

    
869
        #region 指定桁数の数値最大値を返す
870
        /// <summary>
871
        /// 指定桁数の数値最大値を返す
872
        /// </summary>
873
        /// <param name="NumLen"></param>
874
        /// <returns></returns>
875
        public static int CreateMaxNumeric(int NumLen)
876
        {
877
            try 
878
            {
879
                string strNum = string.Empty;
880
                for (int i = 0; i < NumLen; i++)
881
                {
882
                    strNum += "9";
883
                }
884

    
885
                return cnvInt(strNum);
886
            }
887
            catch (System.Exception ex)
888
            {
889
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
890
                return 0;
891
            }
892
        }
893
        #endregion
894

    
895
        #endregion
896

    
897
        #region ---------- データチェックメソッド
898
        #region ディレクトリの存在チェック
899
        /// <summary>
900
        /// ディレクトリの存在チェック
901
        /// </summary>
902
        /// <param name="DirectryName">フォルダパス</param>
903
        /// <returns></returns>
904
        public static bool ChkDirPath(string DirectryName, bool CreateFlg = false)
905
        {
906
            try
907
            {
908
                // フォルダ (ディレクトリ) が存在しているかどうか確認する
909
                if (!Directory.Exists(@DirectryName))
910
                {
911
                    // 作成フラグOffならばエラー
912
                    if (!CreateFlg) return false;
913

    
914
                    // ディレクトリを作成する
915
                    Directory.CreateDirectory(@DirectryName);
916
                }
917

    
918
                return true;
919
            }
920
            catch (Exception ex)
921
            {
922
                logger.ErrorFormat(ex.Message);
923
                return false;
924
            }
925
        }
926
        #endregion
927

    
928
        #region オブジェクトのNullチェック
929
        /// <summary>
930
        /// オブジェクトのNullチェック
931
        /// </summary>
932
        /// <param name="sendData">オブジェクト</param>
933
        /// <returns></returns>
934
        public static bool chkObjectIsNull(Object sendData)
935
        {
936
            try
937
            {
938
                if (sendData == null) return true;
939

    
940
                return false;
941
            }
942
            catch (System.Exception ex)
943
            {
944
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
945
                return false;
946
            }
947
        }
948
        #endregion
949

    
950
        #region 数値チェック
951
        /// <summary>
952
        /// 数値チェック
953
        /// </summary>
954
        /// <param name="data">Long文字列</param>
955
        /// <param name="indispensable">入力必須チェック</param>
956
        /// <returns>true:正常 false:異常</returns>
957
        public static bool chkNumeric(object CheckData, bool indispensable = false)
958
        {
959
            try
960
            {
961
                if (chkObjectIsNull(CheckData)) return false;
962

    
963
                string RecvData = cnvString(CheckData);
964
                double revData = 0;
965
                // 必須入力チェック
966
                if (indispensable)
967
                {
968
                    if (RecvData.Replace(",", "").Replace("\\", "").Trim().Length == 0) return false;
969
                }
970
                // Nullが入っていなくてレングスが0は数値として扱う
971
                if (RecvData.Replace(",", "").Replace("\\", "").Trim().Length == 0) return true;
972

    
973
                return double.TryParse(RecvData.Replace(",", "").Replace("\\", "").Trim(), out revData);
974
            }
975
            catch (System.Exception ex)
976
            {
977
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
978
                return false;
979
            }
980
        }
981
        #endregion
982

    
983
        #region 数値チェック(long)
984
        /// <summary>
985
        /// 数値チェック(long)
986
        /// </summary>
987
        /// <param name="data">Long文字列</param>
988
        /// <param name="indispensable">入力必須チェック</param>
989
        /// <returns>true:正常 false:異常</returns>
990
        public static bool chkNumeric(object sendData, ref long retData, bool indispensable = false)
991
        {
992
            try
993
            {
994
                // 必須入力チェック
995
                if (indispensable)
996
                {
997
                    if (cnvString(sendData).Replace(",", "").Replace("\\", "").Trim().Length == 0) return false;
998
                }
999

    
1000
                return long.TryParse(cnvString(sendData).Replace(",", "").Replace("\\", "").Trim(), out retData);
1001
            }
1002
            catch (System.Exception ex)
1003
            {
1004
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
1005
                return false;
1006
            }
1007
        }
1008
        #endregion
1009

    
1010
        #region 数値チェック(int)
1011
        /// <summary>
1012
        /// 数値チェック(int)
1013
        /// </summary>
1014
        /// <param name="data">Long文字列</param>
1015
        /// <param name="indispensable">入力必須チェック</param>
1016
        /// <returns>true:正常 false:異常</returns>
1017
        public static bool chkNumeric(object sendData, ref int retData, bool indispensable = false)
1018
        {
1019
            try
1020
            {
1021
                // 必須入力チェック
1022
                if (indispensable)
1023
                {
1024
                    if (cnvString(sendData).Replace(",", "").Replace("\\", "").Trim().Length == 0) return false;
1025
                }
1026

    
1027
                return int.TryParse(cnvString(sendData).Replace(",", "").Replace("\\", "").Trim(), out retData);
1028
            }
1029
            catch (System.Exception ex)
1030
            {
1031
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
1032
                return false;
1033
            }
1034
        }
1035
        #endregion
1036

    
1037
        #region 数値チェック(double)
1038
        /// <summary>
1039
        /// 数値チェック(double)
1040
        /// </summary>
1041
        /// <param name="data">Long文字列</param>
1042
        /// <param name="indispensable">入力必須チェック</param>
1043
        /// <returns>true:正常 false:異常</returns>
1044
        public static bool chkNumeric(object sendData, ref double retData, bool indispensable = false)
1045
        {
1046
            try
1047
            {
1048
                // 必須入力チェック
1049
                if (indispensable)
1050
                {
1051
                    if (cnvString(sendData).Replace(",", "").Replace("\\", "").Trim().Length == 0) return false;
1052
                }
1053

    
1054
                return double.TryParse(cnvString(sendData).Replace(",", "").Replace("\\", "").Trim(), out retData);
1055
            }
1056
            catch (System.Exception ex)
1057
            {
1058
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
1059
                return false;
1060
            }
1061
        }
1062
        #endregion
1063

    
1064
        #region 文字列長さチェック(UTF-8)
1065
        /// <summary>
1066
        /// 文字列長さチェック(UTF-8)
1067
        /// </summary>
1068
        /// <param name="strData">対象文字列</param>
1069
        /// <param name="lngMaxLen">最大長</param>
1070
        /// <param name="indispensable">入力必須チェック</param>
1071
        /// <returns>true:正常 false:異常</returns>
1072
        public static bool chkStringLength(string strData, int lngMaxLen, bool indispensable = false)
1073
        {
1074
            bool bRet = true;
1075
            //int lngLen = 0;
1076
            try
1077
            {
1078

    
1079
                //Encoding sjis = Encoding.GetEncoding("shift-jis");
1080
                Encoding utf8 = Encoding.GetEncoding("utf-8");
1081

    
1082
                // 必須入力チェック
1083
                if (indispensable)
1084
                {
1085
                    if (strData.Length == 0) bRet = false;
1086
                }
1087
                // S-Jisチェック
1088
                //lngLen = sjis.GetByteCount(strData);
1089
                // UTF-8チェック
1090
                //lngLen = utf8.GetByteCount(strData);
1091
                //if (lngLen > lngMaxLen) bRet = false;
1092
                // C#内はUTFなので文字長だけをチェックする
1093
                if (strData.Length > lngMaxLen) bRet = false;
1094
            }
1095
            catch (System.Exception ex)
1096
            {
1097
                logger.ErrorFormat("システムエラー:{0}:{1}", GetMethodName(), ex.Message);
1098
                bRet = false;
1099
            }
1100

    
1101
            return bRet;
1102
        }
1103
        #endregion
1104

    
1105
        #region 郵便番号チェック
1106
        /// <summary>
1107
        /// 郵便番号チェック
1108
        /// </summary>
1109
        /// <param name="strData">郵便番号文字列</param>
1110
        /// <returns>true:正常 false:異常</returns>
1111
        public static bool chkZipcode(string strdata)
1112
        {
1113
            bool bRet = false;
1114

    
1115
            Regex regex = new Regex("^[0-9]{3}[-][0-9]{4}$");
1116
            if (regex.IsMatch(strdata))
1117
            {
1118
                bRet = true;
1119
            }
1120
            return bRet;
1121
        }
1122
        #endregion
1123

    
1124
        #region 電話番号/FAX番号チェック
1125
        /// <summary>
1126
        /// 電話番号/FAX番号チェック
1127
        /// </summary>
1128
        /// <param name="data">電話番号文字列</param>
1129
        /// <returns>true:正常 false:異常</returns>
1130
        public static bool chkPhoneNumber(string strdata)
1131
        {
1132
            bool bRet = false;
1133

    
1134
            Regex regex = new Regex("^[0-9]{2,5}-[0-9]{1,4}-[0-9]{3,4}$");
1135
            if (regex.IsMatch(strdata))
1136
            {
1137
                bRet = true;
1138
            }
1139
            return bRet;
1140
        }
1141
        #endregion
1142

    
1143
        #region メールアドレスチェック
1144
        /// <summary>
1145
        /// メールアドレスチェック
1146
        /// </summary>
1147
        /// <param name="data">電話番号文字列</param>
1148
        /// <returns>true:正常 false:異常</returns>
1149
        public static bool chkMailAddress(string strdata)
1150
        {
1151
            bool bRet = false;
1152

    
1153
            Regex regex = new Regex(@"\A\P{Cc}+@\P{Cc}+\z");
1154
            if (regex.IsMatch(strdata))
1155
            {
1156
                bRet = true;
1157
            }
1158
            return bRet;
1159
        }
1160
        #endregion
1161

    
1162
        #region 日付チェック
1163
        /// <summary>
1164
        /// 日付チェック
1165
        /// </summary>
1166
        /// <param name="data">日付文字列</param>
1167
        /// <returns>true:正常 false:異常</returns>
1168
        public static bool chkDate(string strdata)
1169
        {
1170
            bool bRet = true;
1171
            try
1172
            {
1173
                DateTime dtwork = DateTime.MinValue;
1174

    
1175
                return DateTime.TryParse(strdata, out dtwork);
1176
            }
1177
            catch (System.Exception ex)
1178
            {
1179
                logger.DebugFormat("chkDate Error message:{0}", ex.Message);
1180
                bRet = false;
1181
            }
1182
            return bRet;
1183
        }
1184
        #endregion
1185

    
1186
        #region 対象が空かどうかをチェックする
1187
        /// <summary>
1188
        /// 対象が空かどうかをチェックする
1189
        /// </summary>
1190
        /// <param name="objCell"></param>
1191
        /// <param name="iColumn"></param>
1192
        /// <returns>true:空 flase:有効</returns>
1193
        public static bool chkCellBlank(object objCell)
1194
        {
1195
            try
1196
            {
1197
                if (chkObjectIsNull(objCell)) return true;
1198
                if (objCell.ToString().Length == 0) return true;
1199
            
1200
                return false;
1201
            }
1202
            catch (System.Exception ex)
1203
            {
1204
                logger.DebugFormat("chkDate Error message:{0}", ex.Message);
1205
                return true;
1206
            }
1207
        }
1208
        #endregion
1209

    
1210
        #region 画面フィールド入力必須チェック
1211
        /// <summary>
1212
        /// 画面フィールド入力必須チェック
1213
        /// </summary>
1214
        /// <param name="dispControl">コントロールオブジェクト</param>
1215
        /// <returns>false:エラー true:エラーなし</returns>
1216
        public static bool DispFieldIndispensable(Control dispControl)
1217
        {
1218
            bool bAns = true;
1219
            try
1220
            {
1221
                // 必須入力チェック
1222
                if (chkObjectIsNull(dispControl))
1223
                {
1224
                    bAns = false;
1225
                }
1226
                else
1227
                {
1228
                    if (dispControl.Text.ToString().Length == 0)
1229
                    {
1230
                        bAns = false;
1231
                    }
1232
                }
1233
            }
1234
            catch (Exception ex)
1235
            {
1236
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1237
                bAns = false;
1238
            }
1239
            finally
1240
            {
1241
                // 背景色変更
1242
                chgBackColor(dispControl, bAns);
1243
            }
1244
            return bAns;
1245
        }
1246
        #endregion
1247

    
1248
        #region 画面フィールド入力文字数チェック
1249
        /// <summary>
1250
        /// 画面フィールド入力文字数チェック
1251
        /// </summary>
1252
        /// <param name="dispControl">コントロールオブジェクト</param>
1253
        /// <param name="sLength">文字列長</param>
1254
        /// <param name="indispensable">true:必須入力チェック</param>
1255
        /// <returns>false:エラー true:エラーなし</returns>
1256
        public static bool DispFieldLengthCheck(Control dispControl, int sLength, bool indispensable = false)
1257
        {
1258
            bool bAns = true;
1259
            try
1260
            {
1261
                // 必須入力チェック
1262
                if (indispensable)
1263
                {
1264
                    bAns = DispFieldIndispensable(dispControl);
1265
                }
1266

    
1267
                if (dispControl.Text.ToString().Length != 0)
1268
                {
1269
                    // レングスチェック
1270
                    bAns = chkStringLength(dispControl.Text.ToString(), sLength);
1271
                }
1272
            }
1273
            catch (Exception ex)
1274
            {
1275
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1276
                bAns = false;
1277
            }
1278
            finally
1279
            {
1280
                // 背景色変更
1281
                chgBackColor(dispControl, bAns);
1282
            }
1283
            return bAns;
1284
        }
1285
        #endregion
1286

    
1287
        #region 画面フィールド入力日付チェック
1288
        /// <summary>
1289
        /// 画面フィールド入力日付チェック
1290
        /// </summary>
1291
        /// <param name="dispControl">コントロールオブジェクト</param>
1292
        /// <param name="indispensable">true:必須入力チェック</param>
1293
        /// <returns>false:エラー true:エラーなし</returns>
1294
        public static bool DispFieldDateCheck(Control dispControl, bool indispensable = false)
1295
        {
1296
            bool bAns = true;
1297
            try
1298
            {
1299
                // 必須入力チェック
1300
                if (indispensable)
1301
                {
1302
                    bAns = DispFieldIndispensable(dispControl);
1303
                }
1304

    
1305
                if (dispControl.Text.ToString().Length != 0)
1306
                {
1307
                    // 未定はエラーにしない
1308
                    if (!indispensable && dispControl.Text.Equals(CommonDefine.s_UndecidedString)) { }
1309
                    else
1310
                        // 日付チェック
1311
                        bAns = chkDate(dispControl.Text.ToString());
1312
                }
1313
            }
1314
            catch (Exception ex)
1315
            {
1316
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1317
                bAns = false;
1318
            }
1319
            finally
1320
            {
1321
                // 背景色変更
1322
                chgBackColor(dispControl, bAns);
1323
            }
1324
            return bAns;
1325
        }
1326
        #endregion
1327

    
1328
        #region 画面フィールド入力郵便番号チェック
1329
        /// <summary>
1330
        /// 画面フィールド入力郵便番号チェック
1331
        /// </summary>
1332
        /// <param name="dispControl">コントロールオブジェクト</param>
1333
        /// <param name="indispensable">true:必須入力チェック</param>
1334
        /// <returns>false:エラー true:エラーなし</returns>
1335
        public static bool DispFieldZipCodeCheck(Control dispControl, bool indispensable = false)
1336
        {
1337
            bool bAns = true;
1338
            try
1339
            {
1340
                // 必須入力チェック
1341
                if (indispensable)
1342
                {
1343
                    bAns = DispFieldIndispensable(dispControl);
1344
                }
1345

    
1346
                if (dispControl.Text.ToString().Length != 0)
1347
                {
1348
                    // 郵便番号チェック
1349
                    bAns = chkZipcode(dispControl.Text.ToString());
1350
                }
1351
            }
1352
            catch (Exception ex)
1353
            {
1354
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1355
                bAns = false;
1356
            }
1357
            finally
1358
            {
1359
                // 背景色変更
1360
                chgBackColor(dispControl, bAns);
1361
            }
1362
            return bAns;
1363
        }
1364
        #endregion
1365

    
1366
        #region 画面フィールド入力Intチェック
1367
        /// <summary>
1368
        /// 画面フィールド入力Intチェック
1369
        /// </summary>
1370
        /// <param name="dispControl">コントロールオブジェクト</param>
1371
        /// <param name="indispensable">true:必須入力チェック</param>
1372
        /// <returns>false:エラー true:エラーなし</returns>
1373
        public static bool DispFieldIntCheck(Control dispControl, bool indispensable = false)
1374
        {
1375
            bool bAns = true;
1376
            try
1377
            {
1378
                // 必須入力チェック
1379
                if (indispensable)
1380
                {
1381
                    bAns = DispFieldIndispensable(dispControl);
1382
                }
1383

    
1384
                if (dispControl.Text.ToString().Length != 0)
1385
                {
1386
                    int work = 0;
1387
                    // 数値チェック
1388
                    //bAns = chkNumeric(dispControl.Text.ToString(), ref work);
1389
                    bAns = int.TryParse(dispControl.Text.ToString(), out work);
1390
                }
1391
            }
1392
            catch (Exception ex)
1393
            {
1394
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1395
                bAns = false;
1396
            }
1397
            finally
1398
            {
1399
                // 背景色変更
1400
                chgBackColor(dispControl, bAns);
1401
            }
1402
            return bAns;
1403
        }
1404
        #endregion
1405

    
1406
        #region 画面フィールド入力Doubleチェック
1407
        /// <summary>
1408
        /// 画面フィールド入力Doubleチェック
1409
        /// </summary>
1410
        /// <param name="dispControl">コントロールオブジェクト</param>
1411
        /// <param name="indispensable">true:必須入力チェック</param>
1412
        /// <returns>false:エラー true:エラーなし</returns>
1413
        public static bool DispFieldDoubleCheck(Control dispControl, bool indispensable = false)
1414
        {
1415
            bool bAns = true;
1416
            try
1417
            {
1418
                // 必須入力チェック
1419
                if (indispensable)
1420
                {
1421
                    bAns = DispFieldIndispensable(dispControl);
1422
                }
1423

    
1424
                if (dispControl.Text.ToString().Length != 0)
1425
                {
1426
                    double work = 0;
1427
                    // 数値チェック
1428
                    bAns = chkNumeric(dispControl.Text.ToString(), ref work);
1429
                }
1430
            }
1431
            catch (Exception ex)
1432
            {
1433
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1434
                bAns = false;
1435
            }
1436
            finally
1437
            {
1438
                // 背景色変更
1439
                chgBackColor(dispControl, bAns);
1440
            }
1441
            return bAns;
1442
        }
1443
        #endregion
1444

    
1445
        #region 画面フィールド入力電話番号チェック
1446
        /// <summary>
1447
        /// 画面フィールド入力電話番号チェック
1448
        /// </summary>
1449
        /// <param name="dispControl">コントロールオブジェクト</param>
1450
        /// <param name="indispensable">true:必須入力チェック</param>
1451
        /// <returns>false:エラー true:エラーなし</returns>
1452
        public static bool DispFieldPhoneNumberCheck(Control dispControl, bool indispensable = false)
1453
        {
1454
            bool bAns = true;
1455
            try
1456
            {
1457
                // 必須入力チェック
1458
                if (indispensable)
1459
                {
1460
                    bAns = DispFieldIndispensable(dispControl);
1461
                }
1462

    
1463
                if (dispControl.Text.ToString().Length != 0)
1464
                {
1465
                    // 電話番号チェック
1466
                    bAns = chkPhoneNumber(dispControl.Text.ToString());
1467
                }
1468
            }
1469
            catch (Exception ex)
1470
            {
1471
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1472
                bAns = false;
1473
            }
1474
            finally
1475
            {
1476
                // 背景色変更
1477
                chgBackColor(dispControl, bAns);
1478
            }
1479
            return bAns;
1480
        }
1481
        #endregion
1482

    
1483
        #region 画面フィールド入力メールアドレスチェック
1484
        /// <summary>
1485
        /// 画面フィールド入力メールアドレスチェック
1486
        /// </summary>
1487
        /// <param name="dispControl">コントロールオブジェクト</param>
1488
        /// <param name="indispensable">true:必須入力チェック</param>
1489
        /// <returns>false:エラー true:エラーなし</returns>
1490
        public static bool DispFieldMailAddressCheck(Control dispControl, bool indispensable = false)
1491
        {
1492
            bool bAns = true;
1493
            try
1494
            {
1495
                // 必須入力チェック
1496
                if (indispensable)
1497
                {
1498
                    bAns = DispFieldIndispensable(dispControl);
1499
                }
1500

    
1501
                if (dispControl.Text.ToString().Length != 0)
1502
                {
1503
                    // メールアドレスチェック
1504
                    bAns = chkMailAddress(dispControl.Text.ToString());
1505
                }
1506
            }
1507
            catch (Exception ex)
1508
            {
1509
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1510
                bAns = false;
1511
            }
1512
            finally
1513
            {
1514
                // 背景色変更
1515
                chgBackColor(dispControl, bAns);
1516
            }
1517
            return bAns;
1518
        }
1519
        #endregion
1520

    
1521
        #region 指定した日が第何週かを求める
1522
        /// <summary>
1523
        /// 指定した日が第何週かを求める
1524
        /// </summary>
1525
        /// <param name="date"></param>
1526
        /// <returns></returns>
1527
        public static int NthWeek(DateTime date)
1528
        {
1529
            int w = (int)(new DateTime(date.Year, date.Month, 1).DayOfWeek);
1530
            return (date.Day + w - 1) / 7 + 1;
1531

    
1532
        }
1533
        #endregion
1534
        #endregion
1535

    
1536
        #region ---------- 工事管理システム専用
1537

    
1538
        #region 定義ファイル読込
1539
        /// <summary>
1540
        /// 定義ファイル読込
1541
        /// </summary>
1542
        private static void DefinitionFileInit()
1543
        {
1544
            try
1545
            {
1546
                //定義ファイル読込
1547
                System.IO.FileStream fs = new System.IO.FileStream(CommonDefine.s_DefinitionFileName, System.IO.FileMode.Open);
1548
                System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(DefinitionFileRead));
1549
                m_dfr_model = (DefinitionFileRead)serializer.Deserialize(fs);
1550
            }
1551
            catch (Exception ex)
1552
            {
1553
                logger.ErrorFormat("定義ファイル読込エラー:{0}:{1}", GetMethodName(), ex.Message);
1554
            }
1555
        }
1556

    
1557
        #endregion
1558

    
1559
        #region 管理マスタ取得
1560
        /// <summary>
1561
        /// 管理マスタ取得
1562
        /// </summary>
1563
        public static bool SetSystemMaster()
1564
        {
1565
            // 管理マスタクラス
1566
            IOMSystem ocDB = new IOMSystem();
1567
            try
1568
            {
1569
                // 管理マスタ取得
1570
                // 1レコードだけなので取り出す
1571
                string strSQL = " Where SystemCode = 1";
1572
                if (!ocDB.SelectAction(strSQL, ref m_systemMaster)) return false;
1573

    
1574
                return true;
1575
            }
1576
            catch (Exception ex)
1577
            {
1578
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1579
                return false;
1580
            }
1581
            finally
1582
            {
1583
                ocDB.close(); ocDB = null;
1584
            }
1585
        }
1586
        #endregion
1587

    
1588
        #region メソッド名を取得する
1589
        /// <summary>
1590
        /// メソッド名を取得する
1591
        /// </summary>
1592
        /// <param name="StackCnt"></param>
1593
        /// <returns></returns>
1594
        public static string GetMethodName(int stackCnt = 1)
1595
        {
1596
            try
1597
            {
1598
                StringBuilder sb = new StringBuilder();
1599

    
1600
                // 一つ前のスタック情報
1601
                StackFrame stackFrame = new StackFrame(stackCnt);
1602

    
1603
                // 呼び出し元メソッドの情報出力
1604
                System.Reflection.MethodBase method = stackFrame.GetMethod();
1605

    
1606
                // Method取得失敗は戻る
1607
                if (method == null) return string.Empty;
1608

    
1609
                // 正しく取得できているかの判定
1610
                if (method.DeclaringType != null && !string.IsNullOrEmpty(method.DeclaringType.Name))
1611
                {
1612
                    // 型名
1613
                    sb.AppendFormat("[TYPE]{0}", method.DeclaringType.Name);
1614
                }
1615

    
1616
                if (!string.IsNullOrEmpty(method.Name))
1617
                {
1618
                    // 編集済みの場合は区切りを入れる
1619
                    if (0 < sb.Length) sb.Append('/');
1620

    
1621
                    // メソッド名
1622
                    sb.AppendFormat("[METHOD]{0}", method.Name);
1623
                }
1624
                return sb.ToString();
1625
            }
1626
            catch (Exception ex)
1627
            {
1628
                logger.ErrorFormat(ex.Message);
1629
            }
1630
            return string.Empty;
1631
        }
1632
        #endregion
1633

    
1634
        #region 期数から期の年を取得する
1635
        /// <summary>
1636
        /// 期数から期の年を取得する
1637
        /// </summary>
1638
        /// <param name="PeriodCount"></param>
1639
        /// <returns></returns>
1640
        public static int PeriodCountToYear(int PeriodCount)
1641
        {
1642
            IOMBizPeriodHistory BizHisDB = new IOMBizPeriodHistory();
1643
            try
1644
            {
1645
                // 今の年を取得する
1646
                int iYear = DateTime.Now.Year;
1647

    
1648
                StringBuilder strSQL = new StringBuilder();
1649
                BizPeriodHistory BizHisRec = new BizPeriodHistory();
1650

    
1651
                // 営業期
1652
                strSQL.Append(BizHisDB.CreatePrimarykeyString(PeriodCount, (int)BizPeriodHistory.PeriodFlagDef.BizPeriod));
1653

    
1654
                // 運営期履歴情報読込
1655
                if (!BizHisDB.SelectAction(strSQL.ToString(), ref BizHisRec)) return iYear;
1656

    
1657
                iYear = BizHisRec.BeginDate.Year;
1658

    
1659
                return iYear;
1660
            }
1661
            catch (Exception ex)
1662
            {
1663
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1664
                return 0;
1665
            }
1666
            finally
1667
            {
1668
                BizHisDB.close(); BizHisDB = null;
1669
            }
1670
        }
1671
        #endregion
1672

    
1673
        #region 期の最大・最少を取得する
1674
        /// <summary>
1675
        /// 期の最大・最少を取得する
1676
        /// </summary>
1677
        /// <param name="StartDate"></param>
1678
        /// <returns></returns>
1679
        public static void GetPeriodYear(ref int min, ref int max)
1680
        {
1681
            IOConstructionBaseInfo cbiDB = new IOConstructionBaseInfo();
1682
            try
1683
            {
1684
                string strSQL = "SELECT MIN(CONSTRUCTIONPERIOD), MAX(CONSTRUCTIONPERIOD) FROM CONSTRUCTIONBASEINFO";
1685
                ArrayList arList = new ArrayList();
1686
                if (!cbiDB.ExecuteReader(strSQL, ref arList)) return;
1687
                object[] wrkobj = (object[])arList[0];
1688
                min = cnvInt(wrkobj[0]);
1689
                max = cnvInt(wrkobj[1]);
1690

    
1691
            }
1692
            catch (Exception ex)
1693
            {
1694
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1695
            }
1696
            finally
1697
            {
1698
                cbiDB.close(); cbiDB = null;
1699
            }
1700
        }
1701
        #endregion
1702

    
1703
        #region 対象日より営業期・工事年度を取得する
1704
        /// <summary>
1705
        /// 対象日より営業期・工事年度を取得する
1706
        /// </summary>
1707
        /// <param name="NowDay"></param>
1708
        /// <returns></returns>
1709
        public static int ConvDate2YearOrPeriod(DateTime NowDay)
1710
        {
1711
            IOMBizPeriodHistory BizHisDB = new IOMBizPeriodHistory();
1712
            try
1713
            {
1714
                int nRetVal = 0;
1715

    
1716
                // 範囲に入るデータを取得する
1717
                StringBuilder strSQL = new StringBuilder();
1718

    
1719
                strSQL.AppendFormat(" WHERE (DATE(BeginDate) <= DATE('{0}'))", NowDay.ToShortDateString());
1720
                strSQL.AppendFormat(" AND (DATE('{0}') <= DATE(CompleteDate))", NowDay.ToShortDateString());
1721
                strSQL.AppendFormat(" And PeriodFlag = {0}", CommonMotions.SystemMasterData.ConstructionNoBase);
1722
                strSQL.Append(" Order By PeriodFlag Asc, PeriodYear Asc");
1723

    
1724
                List<BizPeriodHistory> BizList = new List<BizPeriodHistory>();
1725
                if (!BizHisDB.SelectAction(strSQL.ToString(), ref BizList)) return 0;
1726

    
1727
                nRetVal = BizList[0].PeriodYear;
1728

    
1729
                return nRetVal;
1730
            }
1731
            catch (Exception ex)
1732
            {
1733
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1734
                return 0;
1735
            }
1736
            finally
1737
            {
1738
                BizHisDB.close(); BizHisDB = null;
1739
            }
1740
        }
1741
        #endregion
1742

    
1743
        #region ポイントに規定値を加算して戻す
1744
        /// <summary>
1745
        /// ポイントに規定値を加算して戻す
1746
        /// </summary>
1747
        /// <param name="PosPoint"></param>
1748
        public static Point SetFormPosion(Point PosPoint)
1749
        {
1750
            Point po = PosPoint;
1751
            try
1752
            {
1753
                po.X += CommonDefine.s_DefalutShiftValue;
1754
                po.Y += CommonDefine.s_DefalutShiftValue;
1755

    
1756
                return po;
1757
            }
1758
            catch (Exception ex)
1759
            {
1760
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1761
                return po;
1762
            }
1763
        }
1764
        #endregion
1765

    
1766
        #region フィールドバックカラー変更処理
1767
        /// <summary>
1768
        /// フィールドバックカラー変更処理(あまりカッコ良くない^^;)
1769
        /// </summary>
1770
        /// <param name="objCtrl"></param>
1771
        /// <param name="chgColor"></param>
1772
        public static void chgBackColor(object objCtrl, bool bPara)
1773
        {
1774
            try
1775
            {
1776
                if (objCtrl.GetType().Equals(typeof(TextBox)) || objCtrl.GetType().Equals(typeof(TextBoxEX)))
1777
                {
1778
                    TextBox wrk = (TextBox)objCtrl;
1779
                    if (bPara)
1780
                    {
1781
                        wrk.BackColor = CommonDefine.s_clrNormal;
1782
                    }
1783
                    else
1784
                    {
1785
                        wrk.BackColor = CommonDefine.s_clrError;
1786
                        wrk.Focus();
1787
                    }
1788
                }
1789
                else if (objCtrl.GetType().Equals(typeof(DataGridViewTextBoxCell)))
1790
                {
1791
                    DataGridViewTextBoxCell wrk = (DataGridViewTextBoxCell)objCtrl;
1792
                    if (bPara)
1793
                    {
1794
                        wrk.Style.BackColor = CommonDefine.s_clrNormal;
1795
                    }
1796
                    else
1797
                    {
1798
                        wrk.Style.BackColor = CommonDefine.s_clrError;
1799
                        wrk.Selected = true;
1800
                    }
1801
                }
1802
                else if (objCtrl.GetType().Equals(typeof(ComboBoxEX)))
1803
                {
1804
                    ComboBox wrk = (ComboBox)objCtrl;
1805
                    if (bPara)
1806
                    {
1807
                        wrk.BackColor = CommonDefine.s_clrNormal;
1808
                    }
1809
                    else
1810
                    {
1811
                        wrk.BackColor = CommonDefine.s_clrError;
1812
                        wrk.Focus();
1813
                    }
1814
                }
1815
                else if (objCtrl.GetType().Equals(typeof(ComboBox)))
1816
                {
1817
                    ComboBox wrk = (ComboBox)objCtrl;
1818
                    if (bPara)
1819
                    {
1820
                        wrk.BackColor = CommonDefine.s_clrNormal;
1821
                    }
1822
                    else
1823
                    {
1824
                        wrk.BackColor = CommonDefine.s_clrError;
1825
                        wrk.Focus();
1826
                    }
1827
                }
1828
                else if (objCtrl.GetType().Equals(typeof(ListBox)))
1829
                {
1830
                    ListBox wrk = (ListBox)objCtrl;
1831
                    if (bPara)
1832
                    {
1833
                        wrk.BackColor = CommonDefine.s_clrNormal;
1834
                    }
1835
                    else
1836
                    {
1837
                        wrk.BackColor = CommonDefine.s_clrError;
1838
                        wrk.Focus();
1839
                    }
1840
                }
1841
                else if (objCtrl.GetType().Equals(typeof(Label)))
1842
                {
1843
                    Label wrk = (Label)objCtrl;
1844
                    if (bPara)
1845
                    {
1846
                        wrk.BackColor = CommonDefine.s_clrNormal;
1847
                    }
1848
                    else
1849
                    {
1850
                        wrk.BackColor = CommonDefine.s_clrError;
1851
                    }
1852
                }
1853
                else if (objCtrl.GetType().Equals(typeof(NumericUpDown)))
1854
                {
1855
                    NumericUpDown wrk = (NumericUpDown)objCtrl;
1856
                    if (bPara)
1857
                    {
1858
                        wrk.BackColor = CommonDefine.s_clrNormal;
1859
                    }
1860
                    else
1861
                    {
1862
                        wrk.BackColor = CommonDefine.s_clrError;
1863
                    }
1864
                }
1865
            }
1866
            catch (Exception ex)
1867
            {
1868
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
1869
            }
1870
        }
1871
        #endregion
1872

    
1873
        #region 営業期数より工事年を取得する
1874
        /// <summary>
1875
        /// 営業期数より工事年を取得する
1876
        /// </summary>
1877
        /// <param name="Period"></param>
1878
        /// <returns></returns>
1879
        public static int BusinessPeriodToConstructionYears(int Period)
1880
        {
1881
            try
1882
            {
1883
                int Beginning = 0;
1884
                int diffwork = 0;
1885
                int RetYears = 0;
1886
                string strwork = string.Empty;
1887

    
1888
                // 現在期との差分を求める
1889
                diffwork = Period - CommonMotions.SystemMasterData.BusinessPeriod;
1890

    
1891
                // 期首月を取得する
1892
                Beginning = CommonMotions.SystemMasterData.BusinessBeginDate.Month;
1893

    
1894
                // 年数を求める
1895
                DateTime dateWork = DateTime.Now;
1896
                int nowMounth = DateTime.Now.Month;
1897
                // 期首月を境に年度を計算する
1898
                int iYear = 0;
1899
                if (nowMounth < Beginning)
1900
                    iYear = dateWork.AddYears(-1).Year;
1901
                else
1902
                    iYear = dateWork.Year;
1903

    
1904
                // ベース年を求める
1905
                RetYears = iYear + diffwork;
1906

    
1907
                return RetYears;
1908
            }
1909
            catch (Exception ex)
1910
            {
1911
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1912
                return 0;
1913
            }
1914
        }
1915
        #endregion
1916

    
1917
        #region 発注者名を法人格を含んだ形で連結する
1918
        /// <summary>
1919
        /// 発注者名を法人格を含んだ形で連結する
1920
        /// </summary>
1921
        /// <param name="master"></param>
1922
        /// <returns></returns>
1923
        public static string OrderersNameUnion(OrderersMaster master)
1924
        {
1925
            try
1926
            {
1927
                string strRet = string.Empty;
1928

    
1929
                if (master.CorporateStatusPoint == (int)BusinessTypeMaster.StatusNamePointDef.Forword)
1930
                    strRet = master.CorporateStatusName + " " + master.OrderersName1 + " " + master.OrderersName2;
1931
                else if (master.CorporateStatusPoint == (int)BusinessTypeMaster.StatusNamePointDef.Back)
1932
                    strRet = master.OrderersName1 + " " + master.CorporateStatusName + " " + master.OrderersName2;
1933
                else
1934
                    strRet = master.OrderersName1 + " " + master.OrderersName2;
1935

    
1936
                return strRet;
1937
            }
1938
            catch (Exception ex)
1939
            {
1940
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1941
                return string.Empty;
1942
            }
1943
        }
1944
        #endregion
1945

    
1946
        #region メッセージ送信メソッド(テキストボックス背景文字表示用)
1947
        /// <summary>
1948
        /// メッセージ送信メソッド
1949
        /// </summary>
1950
        /// <param name="hWnd"></param>
1951
        /// <param name="Msg"></param>
1952
        /// <param name="wParam"></param>
1953
        /// <param name="lParam"></param>
1954
        /// <returns></returns>
1955
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
1956
        public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);
1957
        #endregion
1958

    
1959
        #region ファイルの時間を取得する
1960
        /// <summary>
1961
        /// ファイルの時間を取得する
1962
        /// </summary>
1963
        /// <param name="FilePath">ファイルパス</param>
1964
        /// <param name="flg">取得日付フラグ</param>
1965
        /// <returns></returns>
1966
        public static DateTime GetFileTimeStamp(string FilePath, char flg)
1967
        {
1968
            try
1969
            {
1970
                DateTime dtDateTime = DateTime.MinValue;
1971

    
1972
                if (flg == 'C')
1973
                {
1974
                    // 作成日時を取得する
1975
                    dtDateTime = File.GetCreationTime(@FilePath);
1976
                }
1977
                else if (flg == 'U')
1978
                {
1979
                    // 更新日時を取得する
1980
                    dtDateTime = File.GetLastWriteTime(@FilePath);
1981
                }
1982
                else if (flg == 'A')
1983
                {
1984
                    // アクセス日時を取得する
1985
                    dtDateTime = File.GetLastAccessTime(@FilePath);
1986
                }
1987

    
1988
                return dtDateTime;
1989
            }
1990
            catch (Exception ex)
1991
            {
1992
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
1993
                return DateTime.Now;
1994
            }
1995
        }
1996
        #endregion
1997

    
1998
        #region ファイルパスよりmd5のハッシュ値を返す
1999
        /// <summary>
2000
        /// ファイルパスよりmd5のハッシュ値を返す
2001
        /// </summary>
2002
        /// <param name="FilePath"></param>
2003
        /// <returns></returns>
2004
        public static string GetFileHashData(string FilePath)
2005
        {
2006
            try
2007
            {
2008
                //ファイルを開く
2009
                FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
2010

    
2011
                //MD5CryptoServiceProviderオブジェクトを作成
2012
                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
2013

    
2014
                //ハッシュ値を計算する
2015
                byte[] bs = md5.ComputeHash(fs);
2016

    
2017
                //リソースを解放する
2018
                md5.Clear();
2019
                //ファイルを閉じる
2020
                fs.Close();
2021

    
2022
                return BitConverter.ToString(bs).ToLower().Replace("-", "");
2023

    
2024
            }
2025
            catch (Exception ex)
2026
            {
2027
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2028
                return string.Empty;
2029
            }
2030
        }
2031
        #endregion
2032

    
2033
        #region 郵便番号より住所を検索する
2034
        /// <summary>
2035
        /// 郵便番号より住所を検索する
2036
        /// </summary>
2037
        /// <param name="ZipCode">郵便番号</param>
2038
        public static void SearchZipCode2Address(string ZipCode, ref string Address1, ref string Address2)
2039
        {
2040
            Address1 = "";                //住所
2041
            Address2 = "";                //住所
2042

    
2043
            //処理時間を計測
2044
            Stopwatch sw = new Stopwatch();
2045
            //処理時間計測開始
2046
            sw.Start();
2047

    
2048
            // 郵便番号セット
2049
            string sKey = ZipCode;
2050

    
2051
            //文字列の前後のスペースをとる
2052
            sKey = sKey.Trim(' ');
2053
            //Microsoft.VisualBasic名前空間のStrConv関数を使って、全角文字を半角文字に変換
2054
            sKey = Strings.StrConv(sKey, VbStrConv.Narrow, 0);
2055

    
2056
            // 文字列の長さを取得する
2057
            int iLength = sKey.Length;
2058
            // '-'がある場合は先頭文字目の後から '-' を検索し、見つかった位置を取得する
2059
            int iFind = 0;
2060
            if ((iFind = sKey.IndexOf('-', 0)) != 0)
2061
            {
2062
                //左から3文字+"-"文字以降をtmpZip変数に代入
2063
                sKey = sKey.Substring(0, 3) + sKey.Substring(iFind + 1);
2064
            }
2065
            try
2066
            {
2067
                //StreamReaderオブジェクトの作成
2068
                StreamReader sr = new StreamReader(@CommonDefine.s_AddressFilePath, Encoding.Default);
2069

    
2070
                //1行ずつ読み込み
2071
                string dat = "";
2072
                while ((dat = sr.ReadLine()) != null)
2073
                {
2074
                    string tmpZip = "";
2075

    
2076
                    //カンマで区切られた文字列を取得
2077
                    string[] sbuf = dat.Split(',');
2078
                    //配列の3番目が郵便番号
2079
                    tmpZip = sbuf[2].Trim('"');
2080

    
2081
                    //入力された郵便番号と比較
2082
                    if (sKey == tmpZip)
2083
                    {
2084
                        //住所を作成
2085
                        //都道府県名+市区町村名+町域名
2086
                        Address1 = sbuf[6].Trim('"') + sbuf[7].Trim('"');
2087
                        Address2 = sbuf[8].Trim('"');
2088

    
2089
                        sw.Stop();  //処理時間計測終了
2090

    
2091
                        // 処理時間をTimeSpan構造体で書式付き表示
2092
                        TimeSpan ts = sw.Elapsed;
2093
                        // 出力例:00:00:00.9984668
2094
                        logger.DebugFormat("処理時間:{0}", ts.ToString());
2095

    
2096
                        break;          //ループを抜ける
2097
                    }
2098
                    Application.DoEvents();
2099
                }
2100
                //ファイルを閉じる
2101
                sr.Close();
2102
            }
2103
            catch (Exception ex)
2104
            {
2105
                //ファイルエラーが発生した場合
2106
                MessageBox.Show(ex.Message, "ファイルエラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
2107
                //処理を抜ける
2108
                return;
2109
            }
2110
        }
2111
        #endregion
2112

    
2113
        #region 文字列より指定文字から後ろを省いて戻す
2114
        /// <summary>
2115
        /// 文字列より指定文字から後ろを省いて戻す
2116
        /// </summary>
2117
        /// <param name="Mijiretu"></param>
2118
        /// <param name="Delimiter"></param>
2119
        /// <returns></returns>
2120
        public static string ComentSucstring(string Mijiretu, string Delimiter)
2121
        {
2122
            string strRet = Mijiretu;
2123
            try
2124
            {
2125

    
2126
                if (Mijiretu.IndexOf(Delimiter) < 0) return strRet;
2127
                int TargetCnt = Mijiretu.IndexOf(Delimiter) - 1;
2128

    
2129
                if (TargetCnt>0)
2130
                    strRet = Mijiretu.Substring(0, TargetCnt);
2131
                
2132
                return strRet;
2133
            }
2134
            catch (Exception ex)
2135
            {
2136
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2137
                return string.Empty;
2138
            }
2139
        }
2140
        #endregion
2141

    
2142
        #region 今の時間をセパレータを除いた文字列で戻す
2143
        /// <summary>
2144
        /// 今の時間をセパレータを除いた文字列で戻す
2145
        /// </summary>
2146
        /// <returns></returns>
2147
        public static string stringNowJikan()
2148
        {
2149
            string[] wrk = DateTime.Now.ToShortDateString().Split('/');
2150

    
2151
            string[] wrk2 = DateTime.Now.ToShortTimeString().Split(':');
2152

    
2153
            return string.Format("{0}{1}{2}{3}{4}{5}"
2154
                                            , wrk[0], wrk[1], wrk[2]
2155
                                            , wrk2[0], wrk2[1], wrk2[2]);
2156
        }
2157
        #endregion
2158

    
2159
        #region 経過日数を工数で返す
2160
        /// <summary>
2161
        /// 経過日数を工数で返す
2162
        /// </summary>
2163
        /// <param name="StartDate"></param>
2164
        /// <param name="CompDate"></param>
2165
        /// <returns></returns>
2166
        public static double DiffMounthTimes(DateTime StartDate, DateTime CompDate)
2167
        {
2168
            // 差分計算
2169
            TimeSpan DiffDate = CompDate - StartDate;
2170
            
2171
            // 当日までなので+1日する
2172
            TimeSpan wrkts = new TimeSpan(1, 0, 0, 0);
2173
            DiffDate = DiffDate + wrkts;
2174

    
2175
            // 工数の最小単位で割って10分の1にする
2176
            //return (((double)DiffDate.Days) / CommonDefine.s_ManHourUnitDays) / 10;
2177
            // 日数から月数へ変換する
2178
            return ClsCalendar.cnvMonthFromDays(DiffDate.Days);
2179
        }
2180
        #endregion
2181

    
2182
        #region 文字列を指定文字で指定レングス分埋める
2183
        /// <summary>
2184
        /// 文字列を指定文字で指定レングス分埋める
2185
        /// </summary>
2186
        /// <param name="OrgString"></param>
2187
        /// <param name="SetLength"></param>
2188
        /// <param name="Before"></param>
2189
        /// <returns></returns>
2190
        public static string SetBlankString(string OrgString, string SetString, int SetLength, bool Before)
2191
        {
2192
            try
2193
            {
2194
                string strRet = string.Empty;
2195
                int stringLength = OrgString.Length;
2196

    
2197
                // 文字列を埋める
2198
                for (int i = 0; i < (SetLength - stringLength); i++) strRet += SetString;
2199

    
2200
                // 前か後か
2201
                if (Before)
2202
                {
2203
                    strRet = strRet + OrgString;
2204
                }
2205
                else
2206
                {
2207
                    strRet = OrgString + strRet;
2208
                }
2209

    
2210
                return strRet;
2211
            }
2212
            catch (Exception ex)
2213
            {
2214
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2215
                return string.Empty;
2216
            }
2217
        }
2218
        #endregion
2219

    
2220
        #region 現在年取得
2221
        /// <summary>
2222
        /// 現在年を求める
2223
        /// </summary>
2224
        /// <param name="bPeriod"></param>
2225
        /// <param name="MinCode"></param>
2226
        /// <param name="MaxCode"></param>
2227
        public static int GetBaseCounstructionYear(bool bPeriod, int years)
2228
        {
2229
            try
2230
            {
2231
                int Beginning = 0;
2232
                int diffwork = 0;
2233
                string strwork = string.Empty;
2234
                if (bPeriod)
2235
                {   // ----- 営業期ベースの時
2236

    
2237
                    // 現在期との差分を求める
2238
                    diffwork = years - CommonMotions.SystemMasterData.BusinessPeriod;
2239

    
2240
                    // 期首月を取得する
2241
                    Beginning = CommonMotions.SystemMasterData.BusinessBeginDate.Month;
2242
                }
2243
                else
2244
                {   // ----- 営業年度ベースの時
2245

    
2246
                    // 現在期との差分を求める
2247
                    diffwork = years - CommonMotions.SystemMasterData.ConstrYear;
2248

    
2249
                    // 期首月を取得する
2250
                    Beginning = CommonMotions.SystemMasterData.ConstrBeginDate.Month;
2251
                }
2252

    
2253
                // 年数を求める
2254
                DateTime dateWork = DateTime.Now;
2255
                int nowMounth = DateTime.Now.Month;
2256
                // 期首月を境に年度を計算する
2257
                int iYear = 0;
2258
                if (nowMounth < Beginning)
2259
                    iYear = dateWork.AddYears(-1).Year;
2260
                else
2261
                    iYear = dateWork.Year;
2262

    
2263
                // ベース年を求める
2264
                return (iYear + diffwork);
2265
            }
2266
            catch (System.Exception ex)
2267
            {
2268
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2269
                return 0;
2270
            }
2271
        }
2272
        #endregion
2273

    
2274
        #region 期首の月日を取得する
2275
        /// <summary>
2276
        /// 期首の月日を取得する
2277
        /// </summary>
2278
        /// <param name="bPeriod"></param>
2279
        /// <param name="Mounth"></param>
2280
        /// <param name="Days"></param>
2281
        public static void GetNowBeginMonthDay(bool bPeriod, ref int Mounth, ref int Days)
2282
        {
2283
            try
2284
            {
2285
                if (bPeriod)
2286
                {   // 営業期
2287
                    Mounth = CommonMotions.SystemMasterData.BusinessBeginDate.Month;
2288
                    Days = CommonMotions.SystemMasterData.BusinessBeginDate.Day;
2289
                }
2290
                else
2291
                {   // 工事年度
2292
                    Mounth = CommonMotions.SystemMasterData.ConstrBeginDate.Month;
2293
                    Days = CommonMotions.SystemMasterData.ConstrBeginDate.Day;
2294
                }
2295
            }
2296
            catch (System.Exception ex)
2297
            {
2298
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2299
            }
2300
        }
2301
        #endregion
2302

    
2303
        #region 指定期・指定年度の期首日・期末日を取得する
2304
        /// <summary>
2305
        /// 指定期・指定年度の期首日・期末日を取得する
2306
        /// </summary>
2307
        /// <param name="nYear"></param>
2308
        /// <param name="bOpen"></param>
2309
        /// <param name="bPeriod"></param>
2310
        /// <returns></returns>
2311
        public static DateTime GetOpeningEndDate(int nYear, bool bOpen = true, bool bPeriod = true)
2312
        {
2313
            IOMBizPeriodHistory BizHisDB = new IOMBizPeriodHistory();
2314
            try
2315
            {
2316
                DateTime dtRet = DateTime.Now.Date;
2317

    
2318
                StringBuilder strSQL = new StringBuilder();
2319
                BizPeriodHistory BizHisRec = new BizPeriodHistory();
2320

    
2321
                if (bPeriod)
2322
                {   // 営業期
2323
                    strSQL.Append(BizHisDB.CreatePrimarykeyString(nYear, (int)BizPeriodHistory.PeriodFlagDef.BizPeriod));
2324
                }
2325
                else
2326
                {   // 工事年度
2327
                    strSQL.Append(BizHisDB.CreatePrimarykeyString(nYear, (int)BizPeriodHistory.PeriodFlagDef.ConstrYear));
2328
                }
2329

    
2330
                // 運営期履歴情報読込
2331
                if (!BizHisDB.SelectAction(strSQL.ToString(), ref BizHisRec)) return dtRet;
2332

    
2333
                if (bOpen)
2334
                {
2335
                    // 期首取得時
2336
                    dtRet = BizHisRec.BeginDate;
2337
                }
2338
                else
2339
                {
2340
                    // 期末取得時
2341
                    dtRet = BizHisRec.CompleteDate;
2342
                }
2343

    
2344
                return dtRet;
2345
            }
2346
            catch (System.Exception ex)
2347
            {
2348
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2349
                return DateTime.Today;
2350
            }
2351
            finally
2352
            {
2353
                BizHisDB.close(); BizHisDB = null;
2354
            }
2355
        }
2356
        #endregion
2357

    
2358
        #region TimeSpanから年数を取得する
2359
        /// <summary>
2360
        /// TimeSpanから年数を取得する
2361
        /// </summary>
2362
        /// <param name="timespan"></param>
2363
        /// <returns></returns>
2364
        public static int GetTimeSpanYears(this TimeSpan timespan)
2365
        {
2366
            return (int)((double)timespan.Days / 365.2425);
2367
        }
2368
        #endregion
2369

    
2370
        #region TimeSpanから月数を取得する
2371
        /// <summary>
2372
        /// TimeSpanから月数を取得する
2373
        /// </summary>
2374
        /// <param name="timespan"></param>
2375
        /// <returns></returns>
2376
        public static int GetTimeSpanMonths(this TimeSpan timespan)
2377
        {
2378
            return (int)((double)timespan.Days / 30.436875);
2379
        }
2380
        #endregion
2381

    
2382
        #region 工事種別より工事詳細台帳が作成OKかどうかをチェックする
2383
        /// <summary>
2384
        /// 工事種別より工事詳細台帳が作成OKかどうかをチェックする
2385
        /// </summary>
2386
        /// <param name="ConstructionType"></param>
2387
        /// <returns></returns>
2388
        public static bool CheckCreateLedgerData(int ConstructionStatusFlg, int ConstructionType)
2389
        {
2390
            try
2391
            {
2392
                bool ExcuteFlg = false;
2393
                int[] Status = new int[] { CommonDefine.ProjectsStatus.First(x => x.Value.Equals("一般補修工事")).Key,
2394
                                            CommonDefine.ProjectsStatus.First(x => x.Value.Equals("空家補修工事")).Key,
2395
                                            CommonDefine.ProjectsStatus.First(x => x.Value.Equals("Hit'sV工事")).Key,
2396
                                            };
2397
                for (int i = 0; i < Status.Length; i++)
2398
                {
2399
                    //if (ConstructionStatusFlg == Status[i] && ConstructionType == CommonDefine.s_CreateLedgerData[i])
2400
                    if (ConstructionStatusFlg == Status[i])
2401
                    {
2402
                        ExcuteFlg = true;
2403
                        break;
2404
                    }
2405
                }
2406
                return ExcuteFlg;
2407
            }
2408
            catch (Exception ex)
2409
            {
2410
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2411
                return false;
2412
            }
2413
        }
2414
        #endregion
2415

    
2416
        #region 予算書・台帳給与金額計算処理
2417
        /// <summary>
2418
        /// 予算書・台帳給与金額計算処理
2419
        /// </summary>
2420
        public static void CalcPayValueData(double MonthryCost, double OrdersPrice, int workingCount,
2421
                                            ref double ExecutionAmount, ref double AmountConfigRate,
2422
                                            bool bSalaryCorrection = true)
2423
        {
2424
            try
2425
            {
2426
                // 受注金額が0の場合は1として計算する
2427
                if (OrdersPrice == 0) OrdersPrice = 1;
2428

    
2429
                // 日当計算
2430
                double DairySalary =0;
2431
                if (bSalaryCorrection)
2432
                    DairySalary = (MonthryCost * CommonDefine.s_SalaryCorrection) / CommonDefine.s_ManHourUnitMonth;
2433
                else
2434
                    DairySalary = MonthryCost / CommonDefine.s_ManHourUnitMonth;
2435

    
2436
                // 給与支払総額
2437
                int iInput = CommonMotions.cnvRound(DairySalary * workingCount);
2438
                
2439
                // 実行金額に給与支払総額をセットする
2440
                ExecutionAmount = iInput;
2441
                
2442
                // 金額構成率計算
2443
                AmountConfigRate = (iInput / OrdersPrice) * 100.0;
2444
                
2445
                // 構成率が範囲外の場合は0にする
2446
                if (AmountConfigRate < -999.00 || 999.00 < AmountConfigRate) AmountConfigRate = 0;
2447
            }
2448
            catch (Exception ex)
2449
            {
2450
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2451
            }
2452
        }
2453
        #endregion
2454

    
2455
        #region 給与取得SQL作成処理
2456
        /// <summary>
2457
        /// 給与取得SQL作成処理
2458
        /// </summary>
2459
        private static string GetSalaryValue(int PersonCode, DateTime GetData)
2460
        {
2461
            try
2462
            {
2463
                // SQL作成
2464
                string strSQL = "SELECT A.MONTHLYSALARY, A.YEARSALARY, A.PERSONCODE, A.STARTDATE FROM PERSONSALARYMASTER A,";
2465
                strSQL += " (SELECT PERSONCODE, MAX(STARTDATE) sDate FROM PERSONSALARYMASTER";
2466
                strSQL += string.Format(" WHERE PERSONCODE = {0}", PersonCode);
2467
                strSQL += string.Format(" AND DATE(NOW()) <= '{0}'", GetData.ToShortDateString());
2468
                strSQL += " GROUP BY PERSONCODE) B";
2469
                strSQL += " WHERE A.PERSONCODE = B.PERSONCODE AND A.STARTDATE = B.sDate";
2470

    
2471
                return strSQL;
2472
            }
2473
            catch (Exception ex)
2474
            {
2475
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2476
                return string.Empty;
2477
            }
2478
        }
2479
        #endregion
2480

    
2481
        #region 担当者給与金額取得処理(単独処理)
2482
        /// <summary>
2483
        /// 担当者給与金額取得処理(単独処理)
2484
        /// </summary>
2485
        public static bool GetSalaryValue(int PersonCode, ref double MonthryCost, ref double YearsCost, DateTime GetData)
2486
        {
2487
            IOMPersonInCharge PersonDB = new IOMPersonInCharge();
2488
            try
2489
            {
2490
                // 初期値セット
2491
                MonthryCost = 0;
2492
                YearsCost = 0;
2493

    
2494
                // データ取得
2495
                string strSQL = GetSalaryValue(PersonCode, GetData);
2496
                ArrayList arList = new ArrayList();
2497
                if (!PersonDB.ExecuteReader(strSQL, ref arList)) return false;
2498
                object[] objGetData = (object[])arList[0];
2499

    
2500
                // 取得値セット
2501
                MonthryCost = CommonMotions.cnvDouble(objGetData[0]);
2502
                YearsCost = CommonMotions.cnvDouble(objGetData[1]);
2503

    
2504
                return true;
2505
            }
2506
            catch (Exception ex)
2507
            {
2508
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2509
                return false;
2510
            }
2511
            finally
2512
            {
2513
                PersonDB.close(); PersonDB = null;
2514
            }
2515
        }
2516
        #endregion
2517

    
2518
        #region 担当者給与金額取得処理(セッションコネクト別)
2519
        /// <summary>
2520
        /// 担当者給与金額取得処理(セッションコネクト別)
2521
        /// </summary>
2522
        public static bool GetSalaryValue(IOMPersonInCharge PersonDB, int PersonCode,
2523
                                            ref double MonthryCost, ref double YearsCost, DateTime GetData)
2524
        {
2525
            try
2526
            {
2527
                // 初期値セット
2528
                MonthryCost = 0;
2529
                YearsCost = 0;
2530

    
2531
                // データ取得
2532
                string strSQL = GetSalaryValue(PersonCode, GetData);
2533
                ArrayList arList = new ArrayList();
2534
                if (!PersonDB.ExecuteReader(strSQL, ref arList, false)) return false;
2535
                object[] objGetData = (object[])arList[0];
2536

    
2537
                // 取得値セット
2538
                MonthryCost = CommonMotions.cnvDouble(objGetData[0]);
2539
                YearsCost = CommonMotions.cnvDouble(objGetData[1]);
2540

    
2541
                return true;
2542
            }
2543
            catch (Exception ex)
2544
            {
2545
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2546
                return false;
2547
            }
2548
        }
2549
        #endregion
2550

    
2551
        #region 与えられたキー値より機密管理区分データを取得する
2552
        /// <summary>
2553
        /// 与えられたキー値より機密管理区分データを取得する
2554
        /// </summary>
2555
        /// <param name="KeyValue"></param>
2556
        /// <returns></returns>
2557
        public static KeyValuePair<int, string> SearchSecurityRankList(int KeyValue)
2558
        {
2559
            KeyValuePair<int, string> RetPairvalue = new KeyValuePair<int, string>(0, string.Empty);
2560
            try
2561
            {
2562
                for (int i = 0; i < CommonDefine.SecurityRankList.Count; i++)
2563
                {
2564
                    if (CommonDefine.SecurityRankList[i].Key == KeyValue)
2565
                    {
2566
                        RetPairvalue = CommonDefine.SecurityRankList[i];
2567
                    }
2568
                }
2569

    
2570
                return RetPairvalue;
2571
            }
2572
            catch (Exception ex)
2573
            {
2574
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2575
                return RetPairvalue;
2576
            }
2577
        }
2578
        #endregion
2579

    
2580
        #region 与えられたキー値より機密区分範囲データを取得する
2581
        /// <summary>
2582
        /// 与えられたキー値より機密区分範囲データを取得する
2583
        /// </summary>
2584
        /// <param name="KeyValue"></param>
2585
        /// <returns></returns>
2586
        public static KeyValuePair<int, string> SearchSecurityRangeList(int KeyValue)
2587
        {
2588
            KeyValuePair<int, string> RetPairvalue = new KeyValuePair<int, string>(0, string.Empty);
2589
            try
2590
            {
2591
                for (int i = 0; i < CommonDefine.SecurityRangeList.Count; i++)
2592
                {
2593
                    if (CommonDefine.SecurityRangeList[i].Key == KeyValue)
2594
                    {
2595
                        RetPairvalue = CommonDefine.SecurityRangeList[i];
2596
                    }
2597
                }
2598

    
2599
                return RetPairvalue;
2600
            }
2601
            catch (Exception ex)
2602
            {
2603
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2604
                return RetPairvalue;
2605
            }
2606
        }
2607
        #endregion
2608

    
2609
        #region 登録完了メッセージ表示
2610
        /// <summary>
2611
        /// 登録完了メッセージ表示
2612
        /// </summary>
2613
        /// <param name="strTitle"></param>
2614
        public static void EntryEndMessage(string strTitle)
2615
        {
2616
            try
2617
            {
2618
                string strMes = string.Format("{0} 登録完了しました。", strTitle);
2619

    
2620
                MessageBox.Show(strMes, "登録完了メッセージ", MessageBoxButtons.OK, MessageBoxIcon.Information);
2621
            }
2622
            catch (Exception ex)
2623
            {
2624
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2625
            }
2626
        }
2627
        public static void EntryEndMessage(string strTitle, string strTitle2)
2628
        {
2629
            try
2630
            {
2631
                string strMes = string.Format("{0} {1}完了しました。", strTitle, strTitle2);
2632
                string strGuidance = string.Format("{0}完了メッセージ", strTitle2);
2633

    
2634
                MessageBox.Show(strMes, strGuidance, MessageBoxButtons.OK, MessageBoxIcon.Information);
2635
            }
2636
            catch (Exception ex)
2637
            {
2638
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2639
            }
2640
        }
2641
        #endregion
2642

    
2643
        #region 削除完了メッセージ表示
2644
        /// <summary>
2645
        /// 削除完了メッセージ表示
2646
        /// </summary>
2647
        /// <param name="strTitle"></param>
2648
        public static void RemoveEndMessage(string strTitle)
2649
        {
2650
            try
2651
            {
2652
                string strMes = string.Format("{0} 削除完了しました。", strTitle);
2653

    
2654
                MessageBox.Show(strMes, "削除完了メッセージ", MessageBoxButtons.OK, MessageBoxIcon.Information);
2655
            }
2656
            catch (Exception ex)
2657
            {
2658
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2659
            }
2660
        }
2661
        #endregion
2662

    
2663
        #region 経過給与を計算する
2664
        /// <summary>
2665
        /// 経過給与を計算する
2666
        /// </summary>
2667
        /// <param name="dtStart"></param>
2668
        /// <param name="PersonCode"></param>
2669
        /// <returns></returns>
2670
        public static int CalcElapsedSalary(IOMPersonInCharge SalDB, DateTime dtStart, DateTime dtLast, int PersonCode)
2671
        {
2672
            try
2673
            {
2674
                int RetSalary = 0;
2675

    
2676
                StringBuilder strSQL = new StringBuilder();
2677
                strSQL.Append("SELECT SUM(SAL.SALARY) FROM");
2678
                strSQL.Append(" (SELECT AX.hiduke,");
2679
                //strSQL.AppendFormat(" ROUND((AX.salary * {0}) / DATE_FORMAT(LAST_DAY(AX.hiduke), '%d')) AS SALARY,", CommonDefine.s_SalaryCorrection);
2680
                strSQL.AppendFormat(" ROUND((AX.salary * {0}) / 30) AS SALARY,", CommonDefine.s_SalaryCorrection);
2681
                strSQL.Append(" MAX(AX.StartD) FROM");
2682
                strSQL.Append(" (SELECT A.d hiduke, B.MonthlySalary salary, B.STARTDATE StartD FROM");
2683

    
2684
                strSQL.Append(" (SELECT A1.years, A2.month, A3.days, DATE(CONCAT(A1.years, '/', A2.month, '/', A3.days)) AS d");
2685
                strSQL.Append(" FROM yearmaster AS A1, monthmaster AS A2, daymaster AS A3");
2686

    
2687
                strSQL.Append(" WHERE");
2688
                if (dtStart.Year == dtLast.Year)
2689
                {
2690
                    strSQL.AppendFormat(" (A1.years = {0} AND A2.month IN(", dtStart.Year.ToString("0000"));
2691
                    for (int i = dtStart.Month; i <= dtLast.Month; i++)
2692
                    {
2693
                        if (i != dtStart.Month) strSQL.Append(", ");
2694
                        strSQL.AppendFormat("{0} ", i);
2695
                    }
2696
                    strSQL.Append("))");
2697
                }
2698
                else
2699
                {
2700
                    strSQL.Append(" (");
2701

    
2702
                    for (int iYear = dtStart.Year; iYear <= dtLast.Year; iYear++)
2703
                    {
2704
                        // 先頭以外はORを追加する
2705
                        if (iYear != dtStart.Year) strSQL.AppendFormat(" OR");
2706

    
2707
                        strSQL.AppendFormat(" (A1.years = {0}", iYear.ToString("0000"));
2708
                        strSQL.Append(" AND A2.month IN (");
2709

    
2710
                        if (iYear == dtStart.Year)
2711
                        {   // 先頭年
2712
                            for (int i = dtStart.Month; i <= 12; i++)
2713
                            {
2714
                                if (i != dtStart.Month) strSQL.Append(", ");
2715
                                strSQL.AppendFormat("{0} ", i);
2716
                            }
2717
                        }
2718
                        else if (iYear == dtLast.Year)
2719
                        {   // 最終年
2720
                            for (int i = 1; i <= dtLast.Month; i++)
2721
                            {
2722
                                if (i != 1) strSQL.Append(", ");
2723
                                strSQL.AppendFormat("{0} ", i);
2724
                            }
2725
                        }
2726
                        else 
2727
                        {   // 以外の年
2728
                            for (int i = 1; i <= 12; i++)
2729
                            {
2730
                                if (i != 1) strSQL.Append(", ");
2731
                                strSQL.AppendFormat("{0} ", i);
2732
                            }
2733
                        }
2734
                        strSQL.Append("))");
2735
                    }
2736
                    strSQL.Append(")");
2737
                }
2738

    
2739
                strSQL.Append(" AND DATE(CONCAT(A1.years, '/', A2.month, '/', A3.days)) IS NOT NULL");
2740
                strSQL.AppendFormat(" AND (DATE('{0}') <= DATE(CONCAT(A1.years, '/', A2.month, '/', A3.days))", dtStart.ToShortDateString());
2741
                strSQL.AppendFormat(" AND DATE(CONCAT(A1.years, '/', A2.month, '/', A3.days)) <= DATE('{0}'))", dtLast.ToShortDateString());
2742
                strSQL.Append(" ORDER BY d) A");
2743
                strSQL.Append(", PERSONSALARYMASTER AS B");
2744
                strSQL.AppendFormat(" WHERE B.PERSONCODE = {0}", PersonCode);
2745
                strSQL.Append("       AND B.STARTDATE <= A.d");
2746
                strSQL.Append(" ORDER BY A.d, B.STARTDATE DESC) AS AX");
2747
                strSQL.Append(" GROUP BY AX.hiduke");
2748
                strSQL.Append(" ORDER BY AX.hiduke");
2749
                strSQL.Append(" ) AS SAL");
2750

    
2751
                ArrayList ArData = new ArrayList();
2752
                if(!SalDB.ExecuteReader(strSQL.ToString(), ref ArData)) return 0;
2753

    
2754
                foreach (object[] objRec in ArData)
2755
                {
2756
                    RetSalary += CommonMotions.cnvInt(objRec[0]);
2757
                }
2758

    
2759
                return RetSalary;
2760
            }
2761
            catch (Exception ex)
2762
            {
2763
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2764
                return 0;
2765
            }
2766
        }
2767
        #endregion
2768

    
2769
        #region 期間より零れた経過給与を取得する
2770
        /// <summary>
2771
        /// 期間より零れた経過給与を取得する
2772
        /// </summary>
2773
        /// <returns></returns>
2774
        public static void CalcSpilledSalary(IOMPersonInCharge SalDB
2775
                                            , int TargetYear, DateTime dtStart, DateTime dtLast
2776
                                            , int PersonCode
2777
                                            , ref int NextDiffDay
2778
                                            , ref int PrevDiffDay)
2779
        {
2780
            try
2781
            {
2782

    
2783
                DateTime dtDefaultEnd = CommonMotions.GetOpeningEndDate(TargetYear, false);
2784

    
2785
                StringBuilder strSQL = new StringBuilder();
2786
                strSQL.Append("Select");
2787
                strSQL.Append(" Base.ConstructionCode");
2788
                strSQL.Append(", Ledger.ConstructionStart");
2789
                strSQL.Append(", Ledger.ConstructionEnd");
2790
                strSQL.Append(", LDetail.GroupCount");
2791
                strSQL.Append(", LDetail.SalaryFlg");
2792
                strSQL.Append(", LDetail.SalaryDays");
2793
                strSQL.Append(" From");
2794
                strSQL.Append(" constructionbaseinfo As Base");
2795
                strSQL.Append(" Inner Join constructionledger As Ledger");
2796
                strSQL.Append("       On Ledger.ConstructionCode = Base.ConstructionCode");
2797
                strSQL.Append(" Inner Join constructionledgerdetail As LDetail");
2798
                strSQL.Append("       On LDetail.ConstructionCode = Base.ConstructionCode");
2799
                strSQL.AppendFormat(" And LDetail.GroupCount = {0}", (int)FrmConstructionLedger.DataGroup.Payroll);
2800
                strSQL.AppendFormat(" And LDetail.CompanyCode = {0}", PersonCode);
2801
                strSQL.AppendFormat(" And LDetail.SalaryFlg = {0}", (int)CommonDefine.SalaryDevision.DaysInput);
2802
                strSQL.Append(" Where");
2803
                strSQL.AppendFormat(" Base.ConstructionPeriod = {0}", TargetYear);
2804
                strSQL.AppendFormat(" And Base.ConstructionPersonCode = {0}", PersonCode);
2805
                strSQL.Append(" And(");
2806
                strSQL.AppendFormat("DATE('{0}') <= DATE(Ledger.ConstructionStart)", dtLast.ToShortDateString());
2807
                strSQL.AppendFormat(" And DATE(Ledger.ConstructionEnd) <= DATE('{0}')", dtDefaultEnd.ToShortDateString());
2808
                strSQL.Append(")");
2809

    
2810
                ArrayList ArData = new ArrayList();
2811
                if (!SalDB.ExecuteReader(strSQL.ToString(), ref ArData)) return;
2812

    
2813
                // 半端分の日数を取得する
2814
                NextDiffDay = ArData.Cast<object[]>().Sum(x => CommonMotions.cnvInt(x[5]));
2815

    
2816
                // 先期の半端分の日数を取得する
2817
                PrevDiffDay = CalcSpilledPreviusDay(SalDB, TargetYear, dtStart, PersonCode);
2818

    
2819
            }
2820
            catch (Exception ex)
2821
            {
2822
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2823
            }
2824
        }
2825
        #endregion
2826

    
2827
        #region 先期の終了後零れた日数を取得する
2828
        /// <summary>
2829
        /// 先期の終了後零れた日数を取得する
2830
        /// </summary>
2831
        /// <returns></returns>
2832
        private static int CalcSpilledPreviusDay(IOMPersonInCharge SalDB
2833
                                            , int TargetYear, DateTime dtStart, int PersonCode)
2834
        {
2835
            try
2836
            {
2837
                int RetDay = 0;
2838

    
2839
                // 先期の期末を取得する
2840
                int PrevTargetYear = (TargetYear - 1);
2841
                if (PrevTargetYear < 1) return 0;
2842
                DateTime dtPrevEnd = CommonMotions.GetOpeningEndDate((TargetYear - 1), false);
2843

    
2844
                // 今期の最初が先期の最後より大きい場合は処理しない
2845
                if (dtPrevEnd< dtStart) return 0;
2846

    
2847
                StringBuilder strSQL = new StringBuilder();
2848
                strSQL.Append("Select");
2849
                strSQL.Append(" Base.ConstructionCode");
2850
                strSQL.Append(", Ledger.ConstructionStart");
2851
                strSQL.Append(", Ledger.ConstructionEnd");
2852
                strSQL.Append(", LDetail.GroupCount");
2853
                strSQL.Append(", LDetail.SalaryFlg");
2854
                strSQL.Append(", LDetail.SalaryDays");
2855
                strSQL.Append(" From");
2856
                strSQL.Append(" constructionbaseinfo As Base");
2857
                strSQL.Append(" Inner Join constructionledger As Ledger");
2858
                strSQL.Append("       On Ledger.ConstructionCode = Base.ConstructionCode");
2859
                strSQL.Append(" Inner Join constructionledgerdetail As LDetail");
2860
                strSQL.Append("       On LDetail.ConstructionCode = Base.ConstructionCode");
2861
                strSQL.AppendFormat(" And LDetail.GroupCount = {0}", (int)FrmConstructionLedger.DataGroup.Payroll);
2862
                strSQL.AppendFormat(" And LDetail.CompanyCode = {0}", PersonCode);
2863
                strSQL.AppendFormat(" And LDetail.SalaryFlg = {0}", (int)CommonDefine.SalaryDevision.DaysInput);
2864
                strSQL.Append(" Where");
2865
                strSQL.AppendFormat(" Base.ConstructionPeriod = {0}", PrevTargetYear);
2866
                strSQL.AppendFormat(" And Base.ConstructionPersonCode = {0}", PersonCode);
2867
                strSQL.Append(" And(");
2868
                strSQL.AppendFormat("DATE('{0}') <= DATE(Ledger.ConstructionStart)", (dtStart.AddDays(-1)).ToShortDateString());
2869
                strSQL.AppendFormat(" And DATE(Ledger.ConstructionEnd) <= DATE('{0}')", dtPrevEnd.ToShortDateString());
2870
                strSQL.Append(")");
2871

    
2872
                ArrayList ArData = new ArrayList();
2873
                if (!SalDB.ExecuteReader(strSQL.ToString(), ref ArData)) return 0;
2874

    
2875
                // 半端分の日数を取得する
2876
                RetDay = ArData.Cast<object[]>().Sum(x => CommonMotions.cnvInt(x[5]));
2877

    
2878
                return RetDay;
2879
            }
2880
            catch (Exception ex)
2881
            {
2882
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2883
                return 0;
2884
            }
2885
        }
2886
        #endregion
2887

    
2888
        #region グリッド行退避エリア初期化処理
2889
        /// <summary>
2890
        /// グリッド行退避エリア初期化処理
2891
        /// </summary>
2892
        public static void InitSavrGridRow(ref GridCellStyleMember[] BackUpStyle)
2893
        {
2894
            try
2895
            {
2896
                for (int i = 0; i < BackUpStyle.Length; i++)
2897
                {
2898
                    BackUpStyle[i] = new GridCellStyleMember();
2899
                }
2900
            }
2901
            catch (Exception ex)
2902
            {
2903
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2904
            }
2905
        }
2906
        #endregion
2907

    
2908
        #region 選択行の色を変更する
2909
        /// <summary>
2910
        /// 選択行の色を変更する
2911
        /// </summary>
2912
        public static void ChangeGridRow(DataGridView dgv
2913
                                        , DataGridViewRow CurRow
2914
                                        , ref GridCellStyleMember[] BackUpStyle
2915
                                        , bool bSelect = true)
2916
        {
2917
            try
2918
            {
2919
                // カレント行バックアップ&対象色セット
2920
                for (int i = 0; i < dgv.ColumnCount; i++)
2921
                {
2922
                    if (bSelect)
2923
                    {
2924
                        BackUpStyle[i].DrowBackColor = CurRow.Cells[i].Style.BackColor;
2925
                        BackUpStyle[i].DrowFont = CurRow.Cells[i].Style.Font;
2926
                        BackUpStyle[i].DrowForeColor = CurRow.Cells[i].Style.ForeColor;
2927
                        CurRow.Cells[i].Style.BackColor = Color.Red;
2928
                        CurRow.Cells[i].Style.ForeColor = Color.White;
2929
                    }
2930
                    else
2931
                    {
2932
                        CurRow.Cells[i].Style.BackColor = BackUpStyle[i].DrowBackColor;
2933
                        CurRow.Cells[i].Style.Font = BackUpStyle[i].DrowFont;
2934
                        CurRow.Cells[i].Style.ForeColor = BackUpStyle[i].DrowForeColor;
2935
                    }
2936
                }
2937
            }
2938
            catch (Exception ex)
2939
            {
2940
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
2941
            }
2942
        }
2943
        #endregion
2944

    
2945
        #region フォームのコントロールを列挙する
2946
        /// <summary>
2947
        /// フォームのコントロールを列挙する
2948
        /// </summary>
2949
        /// <returns></returns>
2950
        public static Control[] GetAllControls(Control top)
2951
        {
2952
            ArrayList buf = new ArrayList();
2953
            foreach (Control c in top.Controls)
2954
            {
2955
                buf.Add(c);
2956
                buf.AddRange(GetAllControls(c));
2957
            }
2958
            return (Control[])buf.ToArray(typeof(Control));
2959
        }
2960
        #endregion
2961

    
2962
        #region 部署コンボボックスデータ取得SQL作成
2963
        /// <summary>
2964
        /// 部署コンボボックスデータ取得SQL作成
2965
        /// </summary>
2966
        /// <param name="strSQL"></param>
2967
        public static void CreateDepCombBoxSQL(ref StringBuilder strSQL, int nTargetCount)
2968
        {
2969
            try
2970
            {
2971
                // 今期のデータかどうかを判定する
2972
                bool bNowSeason = true;
2973
                if (nTargetCount != CommonMotions.SystemMasterData.BusinessPeriod) bNowSeason = false;
2974

    
2975
                strSQL.Append("SELECT");
2976
                strSQL.Append(" A.DEPARTMENTCODE");
2977
                strSQL.Append(", A.DEPARTMENTSTRING");
2978
                strSQL.Append(", A.DISPLAYORDER");
2979
                strSQL.Append(", COUNT(*)");
2980
                strSQL.Append(" FROM");
2981
                if (bNowSeason)
2982
                {
2983
                    // 今期のプライマリテーブルは部署マスタ
2984
                    strSQL.Append(" DEPARTMENTMASTER A");
2985
                }
2986
                else
2987
                {   // 過去のデータは工事情報より取得する
2988
                    strSQL.Append(" (");
2989
                    strSQL.Append("Select");
2990
                    strSQL.Append(" A1.SalesDepCode As DEPARTMENTCODE");
2991
                    strSQL.Append(", B1.DetailString As DEPARTMENTSTRING");
2992
                    strSQL.Append(", ifnull(C1.DisplayOrder, 10) As DISPLAYORDER");
2993
                    strSQL.Append(" From Constructionbaseinfo As A1");
2994
                    strSQL.Append("  Inner Join constructionbaseinfodetail As B1");
2995
                    strSQL.Append("        On B1.ConstructionCode = A1.ConstructionCode");
2996
                    strSQL.AppendFormat("  And B1.DetailNo = {0}", (int)ConstructionBaseInfoDetail.DataNoDef.SalesDepartmentName);
2997
                    strSQL.Append("  Left Join departmentmaster As C1");
2998
                    strSQL.Append("       On C1.DepartmentCode = A1.SalesDepCode");
2999
                    strSQL.AppendFormat(" Where A1.ConstructionPeriod = {0}", nTargetCount);
3000
                    strSQL.Append("       And A1.SalesDepCode != 0");
3001

    
3002
                    strSQL.Append(" Union Select");
3003
                    strSQL.Append(" A2.ConstrDepCode As DEPARTMENTCODE");
3004
                    strSQL.Append(" , B2.DetailString As DEPARTMENTSTRING");
3005
                    strSQL.Append(" , ifnull(C2.DisplayOrder, 10) As DISPLAYORDER");
3006
                    strSQL.Append(" From Constructionbaseinfo As A2");
3007
                    strSQL.Append(" Inner Join constructionbaseinfodetail As B2");
3008
                    strSQL.Append("       On B2.ConstructionCode = A2.ConstructionCode");
3009
                    strSQL.AppendFormat(" And B2.DetailNo = {0}", (int)ConstructionBaseInfoDetail.DataNoDef.ConstrDepartmentName);
3010
                    strSQL.Append(" Left Join departmentmaster As C2");
3011
                    strSQL.Append("      On C2.DepartmentCode = A2.ConstrDepCode");
3012
                    strSQL.AppendFormat(" Where A2.ConstructionPeriod = {0}", nTargetCount);
3013
                    strSQL.Append("       And A2.ConstrDepCode != 0");
3014

    
3015
                    strSQL.Append(" Union Select");
3016
                    strSQL.Append(" A3.ConstrSubDepCode As DEPARTMENTCODE");
3017
                    strSQL.Append(", B3.DetailString As DEPARTMENTSTRING");
3018
                    strSQL.Append(", ifnull(C3.DisplayOrder, 10) As DISPLAYORDER");
3019
                    strSQL.Append(" From Constructionbaseinfo As A3");
3020
                    strSQL.Append(" Inner Join constructionbaseinfodetail As B3");
3021
                    strSQL.Append("       On B3.ConstructionCode = A3.ConstructionCode");
3022
                    strSQL.AppendFormat(" And B3.DetailNo = {0}", (int)ConstructionBaseInfoDetail.DataNoDef.ConstrSubDepartmentName);
3023
                    strSQL.Append(" Left Join departmentmaster As C3");
3024
                    strSQL.Append("      On C3.DepartmentCode = A3.ConstrSubDepCode");
3025
                    strSQL.AppendFormat(" Where A3.ConstructionPeriod = {0}", nTargetCount);
3026
                    strSQL.Append("       And A3.ConstrSubDepCode != 0");
3027

    
3028
                    strSQL.Append(" Union Select");
3029
                    strSQL.Append(" A4.ConstrInstrDepCode As DEPARTMENTCODE");
3030
                    strSQL.Append(", B4.DetailString As DEPARTMENTSTRING");
3031
                    strSQL.Append(", ifnull(C4.DisplayOrder, 10) As DISPLAYORDER");
3032
                    strSQL.Append(" From Constructionbaseinfo As A4");
3033
                    strSQL.Append(" Inner Join constructionbaseinfodetail As B4");
3034
                    strSQL.Append("       On B4.ConstructionCode = A4.ConstructionCode");
3035
                    strSQL.AppendFormat(" And B4.DetailNo = {0}", (int)ConstructionBaseInfoDetail.DataNoDef.InstrDepartmentName);
3036
                    strSQL.Append(" Left Join departmentmaster As C4");
3037
                    strSQL.Append("      On C4.DepartmentCode = A4.ConstrInstrDepCode");
3038
                    strSQL.AppendFormat(" Where A4.ConstructionPeriod = {0}", nTargetCount);
3039
                    strSQL.Append("       And A4.ConstrInstrDepCode != 0");
3040
                    strSQL.Append(") As A");
3041
                }
3042

    
3043
                //strSQL.Append(", PERSONINCHARGEMASTER B");
3044
                strSQL.Append(", CONSTRUCTIONBASEINFO C");
3045
                strSQL.Append(" WHERE");
3046

    
3047
                if (bNowSeason)
3048
                {   // 今期は削除されていないもの
3049
                    //strSQL.Append(" A.DELETEFLG = 0");
3050
                    DateTime dtDefaultEnd = CommonMotions.GetOpeningEndDate(nTargetCount, false);
3051

    
3052
                    strSQL.AppendFormat(" C.ConstructionPeriod = {0}", nTargetCount);
3053
                    strSQL.AppendFormat(" And DATE(A.StartDate) <= DATE('{0}')", dtDefaultEnd.ToShortDateString());
3054
                    // システム管理者以外は部署参照マスタよりデータ取得
3055
                    if (CommonMotions.LoginUserData.PersonCode != CommonDefine.AdminCode)
3056
                    {
3057
                        // 参照部署マスタより取得する
3058
                        strSQL.Append(" And A.DEPARTMENTCODE");
3059
                        strSQL.Append(" IN (SELECT A1.DEPARTMENTCODE FROM PERSONDEPARTMENTMASTER A1");
3060
                        strSQL.AppendFormat(" WHERE A1.PERSONCODE = {0})", CommonMotions.LoginUserData.PersonCode);
3061
                    }
3062
                    strSQL.Append(" AND");
3063
                }
3064
                strSQL.Append(" A.DepartmentCode IN(C.SalesDepCode, C.ConstrDepCode, C.ConstrSubDepCode, C.ConstrInstrDepCode)");
3065
                //strSQL.Append(" A.DEPARTMENTCODE = B.DEPARTMENTCODE");
3066
                //strSQL.Append(" AND B.PERSONCODE = C.CONSTRUCTIONPERSONCODE");
3067
                strSQL.Append(" GROUP BY A.DEPARTMENTCODE, A.DEPARTMENTSTRING, A.DISPLAYORDER");
3068
                strSQL.Append(" ORDER BY A.DISPLAYORDER ASC");
3069
            }
3070
            catch (Exception ex)
3071
            {
3072
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3073
            }
3074
        }
3075
        #endregion
3076

    
3077
        #region 担当者コンボボックスデータ取得SQL作成
3078
        /// <summary>
3079
        /// 担当者コンボボックスデータ取得SQL作成
3080
        /// </summary>
3081
        /// <param name="strSQL"></param>
3082
        /// <param name="nTargetYear"></param>
3083
        public static void CreateManCombBoxSQL(ref StringBuilder strSQL, int nTargetYear, int nDepCode = 0, int nLEDGERFLG = -1)
3084
        {
3085
            try
3086
            {
3087
                DateTime dtDefaultStart = CommonMotions.GetOpeningEndDate(nTargetYear, true);
3088
                DateTime dtDefaultEnd = CommonMotions.GetOpeningEndDate(nTargetYear, false);
3089

    
3090
                strSQL.Append("Select A.* From");
3091
                strSQL.Append(" personinchargemaster As A");
3092
                strSQL.Append(" Left Join chgchargedep As B");
3093
                strSQL.Append("       On B.PersonCode = A.PersonCode");
3094

    
3095
                strSQL.AppendFormat(" WHERE ((DATE(A.STARTDATE) <= DATE('{0}'))", dtDefaultEnd.ToShortDateString());
3096
                strSQL.AppendFormat(" AND (DATE('{0}') <= DATE(A.ENDDATE)", dtDefaultStart.ToShortDateString());
3097
                strSQL.AppendFormat(" OR DATE('{0}') = DATE(A.ENDDATE)))", DateTime.MinValue.ToShortDateString());
3098
                strSQL.AppendFormat(" AND ((DATE(B.STARTDATE) <= DATE('{0}'))", dtDefaultEnd.ToShortDateString());
3099
                strSQL.AppendFormat(" AND(DATE('{0}') <= DATE(B.CompDate)", dtDefaultStart.ToShortDateString());
3100
                strSQL.AppendFormat(" OR DATE('{0}') = DATE(B.CompDate)))", DateTime.MinValue.ToShortDateString());
3101

    
3102
                if (nDepCode != 0) strSQL.AppendFormat(" AND (B.DEPARTMENTCODE = {0})", nDepCode);
3103

    
3104
                if (nLEDGERFLG == -1) strSQL.AppendFormat(" AND A.LEDGERFLG = {0}", (int)PersonInChargeMaster.LedgerDivNoDef.CalcTarget);
3105
                else if (nLEDGERFLG > -1) strSQL.AppendFormat(" AND A.LEDGERFLG = {0}", nLEDGERFLG);
3106

    
3107
                // 今期のデータかどうかを判定する
3108
                bool bNowSeason = true;
3109
                string FieldName = string.Empty;
3110
                if (CommonMotions.SystemMasterData.ConstructionNoBase == (int)SystemMaster.ConstrNoBaseDef.BusinessPeriod)
3111
                {
3112
                    FieldName = "ConstructionPeriod";
3113
                    if (nTargetYear != CommonMotions.SystemMasterData.BusinessPeriod) bNowSeason = false;
3114
                }
3115
                else
3116
                {
3117
                    FieldName = "ConstructionYear";
3118
                    if (nTargetYear != CommonMotions.SystemMasterData.ConstrYear) bNowSeason = false;
3119
                }
3120
                if (!bNowSeason)
3121
                {
3122
                    strSQL.Append(" AND B.DepartmentCode IN(SELECT InDep.DEPARTMENTCODE FROM (");
3123
                    strSQL.Append(" Select A1.SalesDepCode As DEPARTMENTCODE From Constructionbaseinfo As A1");
3124
                    strSQL.AppendFormat(" Where A1.{0} = {1}", FieldName, nTargetYear);
3125
                    strSQL.Append(" Union Select A2.ConstrDepCode As DEPARTMENTCODE From Constructionbaseinfo As A2");
3126
                    strSQL.AppendFormat(" Where A2.{0} = {1}", FieldName, nTargetYear);
3127
                    strSQL.Append(" Union Select A3.ConstrSubDepCode As DEPARTMENTCODE From Constructionbaseinfo As A3");
3128
                    strSQL.AppendFormat(" Where A3.{0} = {1}", FieldName, nTargetYear);
3129
                    strSQL.Append(" Union Select A4.ConstrInstrDepCode As DEPARTMENTCODE From Constructionbaseinfo As A4");
3130
                    strSQL.AppendFormat(" Where A4.{0} = {1}", FieldName, nTargetYear);
3131
                    strSQL.Append(" ) As InDep");
3132
                    strSQL.Append(" GROUP BY InDep.DEPARTMENTCODE) ");
3133
                }
3134

    
3135
                strSQL.Append(" Order By A.DeleteFlg ASC, A.EmployeeClassFlg ASC, A.DisplayOrder ASC");
3136
            }
3137
            catch (Exception ex)
3138
            {
3139
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3140
            }
3141
        }
3142
        #endregion
3143

    
3144
        #region 担当者より指定年度の部署を取得するSQL作成
3145
        /// <summary>
3146
        /// 担当者より指定年度の部署を取得するSQL作成
3147
        /// </summary>
3148
        public static void CreateMan2DepSQL(ref StringBuilder strSQL, int nTargetYear, int nPersonCode)
3149
        {
3150
            try
3151
            {
3152
                DateTime dtDefaultStart = CommonMotions.GetOpeningEndDate(nTargetYear, true);
3153
                DateTime dtDefaultEnd = CommonMotions.GetOpeningEndDate(nTargetYear, false);
3154

    
3155
                strSQL.Append("Select");
3156
                strSQL.Append(" A.PersonCode");
3157
                strSQL.Append(", A.PersonName");
3158
                strSQL.Append(", B.DepartmentCode");
3159
                strSQL.Append(", B.DepartmentName");
3160
                strSQL.Append(" From");
3161
                strSQL.Append(" personinchargemaster As A");
3162
                strSQL.Append(" Left Join chgchargedep As B");
3163
                strSQL.Append("       On B.PersonCode = A.PersonCode");
3164

    
3165
                strSQL.AppendFormat(" WHERE ((DATE(A.STARTDATE) <= DATE('{0}'))", dtDefaultEnd.ToShortDateString());
3166
                strSQL.AppendFormat(" AND (DATE('{0}') <= DATE(A.ENDDATE)", dtDefaultStart.ToShortDateString());
3167
                strSQL.AppendFormat(" OR DATE('{0}') = DATE(A.ENDDATE)))", DateTime.MinValue.ToShortDateString());
3168
                strSQL.AppendFormat(" AND ((DATE(B.STARTDATE) <= DATE('{0}'))", dtDefaultEnd.ToShortDateString());
3169
                strSQL.AppendFormat(" AND(DATE('{0}') <= DATE(B.CompDate)", dtDefaultStart.ToShortDateString());
3170
                strSQL.AppendFormat(" OR DATE('{0}') = DATE(B.CompDate)))", DateTime.MinValue.ToShortDateString());
3171

    
3172
                strSQL.AppendFormat(" AND A.PersonCode = {0}", nPersonCode);
3173
            }
3174
            catch (Exception ex)
3175
            {
3176
                logger.ErrorFormat("システムエラー:{0}:{1}", CommonMotions.GetMethodName(), ex.Message);
3177
            }
3178
        }
3179
        #endregion
3180

    
3181
        #endregion
3182

    
3183
        #region ---------- Excel向け操作メソッド
3184
        #region オブジェクト開放
3185
        /// <summary>
3186
        /// Com解放
3187
        /// </summary>
3188
        /// <param name="o"></param>
3189
        public static void ReleaseCom(ref Object objCom)
3190
        {
3191
            try
3192
            {
3193
                int i = 1;
3194
                if (objCom != null && System.Runtime.InteropServices.Marshal.IsComObject(objCom))
3195
                {
3196
                    //参照カウントが0より大きい間・・・
3197
                    do
3198
                    {
3199
                        //ランタイム呼び出し可能ラッパーの参照カウントをデクリメント
3200
                        i = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom);
3201
                    } while (i > 0);
3202
                }
3203
            }
3204
            catch (Exception ex)
3205
            {
3206
                logger.ErrorFormat("システムエラー:{0}:{1}:{2}", GetMethodName(), GetMethodName(2), ex.Message);
3207
            }
3208
            finally
3209
            {
3210
                objCom = null;
3211
            }
3212
        }
3213

    
3214
        #endregion
3215
        #endregion
3216

    
3217
        #region デバッグ用メソッド
3218
        /// <summary>
3219
        /// デバッグ用メソッド
3220
        /// </summary>
3221
        /// <param name="DebugPrint">表示文字列</param>
3222
        public static void DebugWriteLine_TimeNow(string DebugPrint)
3223
        {
3224
            string wrkPrint = DateTime.Now.ToLongTimeString() +
3225
                                ((double)DateTime.Now.Millisecond / 1000.0000).ToString("#.0000");
3226

    
3227
            Debug.WriteLine(DebugPrint + ":" + wrkPrint);
3228
        }
3229

    
3230
        public static void DebugWriteLine_DateTimeNow(string DebugPrint)
3231
        {
3232
            string wrkPrint = DateTime.Now.ToLongDateString() + " " +
3233
                                DateTime.Now.ToLongTimeString() + "." +
3234
                                DateTime.Now.Millisecond.ToString();
3235

    
3236
            Debug.WriteLine(DebugPrint + ":" + wrkPrint);
3237
        }
3238
        #endregion
3239
    }
3240
}