Exemple #1
0
        private int RunJvReadMasterFunc(JVData_Struct.JV_UM_UMA UmaMaster)
        {
            JvRaceDataMasterStructures tmp = new JvRaceDataMasterStructures();

            if (tmpRaceData.id.Bamei == null || UmaMaster.head.RecordSpec == null)
            {
                return(RESULT_NG);
            }
            else if (tmpRaceData.id.Bamei.Equals(UmaMaster.Bamei))
            {
                tmpRaceData.Blood.fHorse = UmaMaster.Ketto3Info[0].Bamei;
                tmpRaceData.Blood.mHours = UmaMaster.Ketto3Info[1].Bamei;
                tmpRaceData.Blood.BMS    = UmaMaster.Ketto3Info[4].Bamei;
                tmpRaceData.Blood.BMS1   = UmaMaster.Ketto3Info[12].Bamei;
                return(RESULT_OK);
            }

            return(RESULT_NG);
        }
Exemple #2
0
        /* JvReadのラッパー関数 */
        private int RunJvReadFunc(out String buff, out int buffSize, out String fName, int funcNumber)
        {
            int     ret;
            int     boolStatus = 0;
            Boolean eof        = false;
            int     racecnt    = 0;
            int     skipCount  = 0;


            do
            {
                ret = JvMain.ReadJv(out buff, out buffSize, out fName);

                if (ret == -1)
                {
                    /* ファイルの切り替え */
                    if (eof == true)
                    {
                        skipCount++;
                        break;
                    } //2日分の開催データ取得完了

                    eof = true;
                    JvMain.SkipJv();
                }
                else if (buff == null)
                {
                    break;  //エラー
                }
                else if (ret == 0)
                {
                    if (eof == true)
                    {
                        /* ファイル読み込みの終了 */
                        break;
                    }
                    else
                    {
                        skipCount++;        //3回以上スキップしたら終了する。
                        JvMain.SkipJv();
                    }
                }
                else if (ret < 0)
                {
                    /* -2以下の場合はエラー*/
                    boolStatus = -1;
                }
                else
                {
                    /* 正常のデータ */
                    eof = false;
                    JVData_Struct.RECORD_ID rec = new JVData_Struct.RECORD_ID();
                    String RecordSpec           = buff.Substring(0, 2);


                    switch (RecordSpec)
                    {
                    case "RA":

                        /* レース情報詳細 */
                        /*JVData_Struct.JV_RA_RACE RaceData = new JVData_Struct.JV_RA_RACE();*/
                        RaceData.SetDataB(ref buff);

                        RunJvReadFuncToRAData(RaceData, funcNumber);
                        //  MessageBox.Show(RaceData.RaceInfo.Hondai);

                        break;

                    case "SE":
                        /* 馬毎レース情報 */
                        RaceUmaData.SetDataB(ref buff);

                        tmpRaceData.id.Waku    = Int32.Parse(RaceUmaData.Wakuban);
                        tmpRaceData.id.Umaban  = Int32.Parse(RaceUmaData.Umaban);
                        tmpRaceData.id.Bamei   = RaceUmaData.Bamei;
                        tmpRaceData.id.Jokkey  = RaceUmaData.KisyuRyakusyo;
                        tmpRaceData.id.Omosa   = Double.Parse(RaceUmaData.Futan);
                        tmpRaceData.Kyakushitu = RaceUmaData.KyakusituKubun;
                        tmpRaceData.sex        = Func.ChgSexCdToString(RaceUmaData.SexCD);
                        tmpRaceData.Year       = Int32.Parse(RaceUmaData.Barei);

                        ArrayRaceData.Add(tmpRaceData);

                        break;

                    /* 競走馬マスタ取得 → dataspecをRCOVで指定するときに処理される */
                    case "UM":
                        JVData_Struct.JV_UM_UMA UmaMaster = new JVData_Struct.JV_UM_UMA();
                        UmaMaster.SetDataB(ref buff);

                        RunJvReadMasterFunc(UmaMaster);

                        break;

                    default:
                        JvMain.SkipJv();
                        break;
                    }
                }
            } while (boolStatus == 0 && skipCount < 3);

            if (boolStatus == -1)
            {
                CheckErrorCode(ret);
            }

            return(ret);
        }
Exemple #3
0
        private int JvReadFuncToRCOVData()
        {
            String  buff       = null;
            int     buffsize   = 2000;
            String  fName      = null;
            int     skipCount  = 0;
            int     boolStatus = 0;
            Boolean eof        = false;

            do
            {
                int ret = JvMain.ReadJv(out buff, out buffsize, out fName);

                if (ret == -1)
                {
                    /* ファイルの切り替え */
                    if (eof == true)
                    {
                        break;
                    } //2日分の開催データ取得完了

                    JvMain.SkipJv();
                }
                else if (buff == null)
                {
                    break;  //エラー
                }
                else if (ret == 0)
                {
                    if (eof == true)
                    {
                        /* ファイル読み込みの終了 */
                        break;
                    }
                    else
                    {
                        skipCount++;        //3回以上スキップしたら終了する。
                        JvMain.SkipJv();
                        continue;
                    }
                }
                if (buff == null)
                {
                    JvMain.SkipJv();
                    continue;
                }

                JvRaceDataMasterStructures MasterDataSe = new JvRaceDataMasterStructures();
                switch (buff.Substring(0, 2))
                {
                case "SE":
                    /* 相手馬 */
                    JVData_Struct.JV_SE_RACE_UMA Se = new JVData_Struct.JV_SE_RACE_UMA();

                    Se.SetDataB(ref buff);
                    MasterDataSe.Common.Waku   = Int32.Parse(Se.Wakuban);
                    MasterDataSe.Common.Umaban = Int32.Parse(Se.Umaban);
                    MasterDataSe.Common.Bamei  = Se.Bamei;
                    MasterDataSe.Common.Jokkey = Se.KisyuRyakusyo;
                    MasterDataSe.Common.Omosa  = Int32.Parse(Se.Futan);
                    MasterDataSe.Rank          = Se.KakuteiJyuni;
                    if (Se.KakuteiJyuni.Equals("01"))
                    {
                        MasterDataSe.AiteUma = "(" + Se.ChakuUmaInfo[0].Bamei + ")";
                    }
                    else
                    {
                        MasterDataSe.AiteUma = Se.ChakuUmaInfo[0].Bamei;
                    }
                    MasterDataSe.Bataiju     = Se.BaTaijyu;
                    MasterDataSe.Zougen      = Se.ZogenFugo;            /* + - */
                    MasterDataSe.BataijuDiff = Se.ZogenSa;

                    MasterDataSe.final3F        = Se.HaronTimeL3;
                    MasterDataSe.DiffTime       = Se.TimeDiff;
                    MasterDataSe.Conner.conner1 = Int32.Parse(Se.Jyuni1c);
                    MasterDataSe.Conner.conner2 = Int32.Parse(Se.Jyuni2c);
                    MasterDataSe.Conner.conner3 = Int32.Parse(Se.Jyuni3c);
                    MasterDataSe.Conner.conner4 = Int32.Parse(Se.Jyuni4c);
                    MasterDataSe.Time           = Se.Time;


                    tmpFormPerfomanceSE.Add(MasterDataSe);
                    break;

                case "RA":
                    /* 頭数・馬場状態 */
                    JVData_Struct.JV_RA_RACE Race = new JVData_Struct.JV_RA_RACE();
                    Race.SetDataB(ref buff);
                    String TrackCD = Race.TenkoBaba.SibaBabaCD + Race.TenkoBaba.DirtBabaCD;
                    MasterDataSe.SyusouTosu = Int32.Parse(Race.SyussoTosu);
                    MasterDataSe.BabaJotai  = TrackCD;

                    tmpFormPerfomanceRA.Add(MasterDataSe);
                    break;

                case "UM":
                    JVData_Struct.JV_UM_UMA    Uma        = new JVData_Struct.JV_UM_UMA();
                    JvRaceDataMasterStructures MasterData = new JvRaceDataMasterStructures();
                    Uma.SetDataB(ref buff);
                    MasterDataSe.Common.Bamei = Uma.Bamei;
                    MasterDataSe.Blood.fHorse = Uma.Ketto3Info[0].Bamei;
                    MasterDataSe.Blood.mHours = Uma.Ketto3Info[1].Bamei;
                    MasterDataSe.Blood.BMS    = Uma.Ketto3Info[4].Bamei;
                    MasterDataSe.Blood.BMS1   = Uma.Ketto3Info[12].Bamei;
                    tmpFormPerfomance.Add(MasterDataSe);
                    break;
                }
            }while (boolStatus == 0 && skipCount < 10);

            /* 結合処理を加える */
            //  JointmpFormPerfomanceData();
            return(0);
        }
Exemple #4
-1
        /// <summary>
        /// JVUmaReadWriting処理
        /// </summary>
        public static void JVUmaReadWriting()
        {
            bool reading = true;
            int nCount = 0;
            object buffObj = new byte[0];
            int buffsize = 110000;
            string timeStamp;
            string buffname;
            DataTable umaDataTable = new DataTable();
            DataTable raceDataTable = new DataTable();
            DataTable raceUmaDataTable = new DataTable();

            // 初期化時
            if (JVRelayClass.Option == (int)JVRelayClass.eJVOpenFlag.SetupSkipDialog)
            {
                using (SQLiteCommand command = DbConn.CreateCommand())
                {
                    command.CommandText = "DELETE FROM uma";
                    command.ExecuteNonQuery();
                }
            }

            using (SQLiteCommand command = DbConn.CreateCommand())
            {
                command.CommandText = "SELECT * FROM uma";
                using (SQLiteDataAdapter da = new SQLiteDataAdapter(command))
                {
                    da.Fill(umaDataTable);
                }
            }
            raceDataTable.Columns.Add("RaceKey", typeof(string));
            raceDataTable.Columns.Add("RaceDate", typeof(string));
            raceDataTable.Columns.Add("DataKubun", typeof(string));
            raceDataTable.Columns.Add("GradeCD", typeof(string));
            raceDataTable.Columns.Add("SyubetuCD", typeof(string));
            raceUmaDataTable.Columns.Add("RaceKey", typeof(string));
            raceUmaDataTable.Columns.Add("RaceDate", typeof(string));
            raceUmaDataTable.Columns.Add("KettoNum", typeof(string));
            raceUmaDataTable.Columns.Add("KakuteiJyuni", typeof(string));

            if (umaDataTable.PrimaryKey.Length == 0)
            {
                umaDataTable.PrimaryKey = new[] { umaDataTable.Columns["KettoNum"] };
            }
            if (raceDataTable.PrimaryKey.Length == 0)
            {
                raceDataTable.PrimaryKey = new[] { raceDataTable.Columns["RaceKey"] };
            }
            if (raceUmaDataTable.PrimaryKey.Length == 0)
            {
                raceUmaDataTable.PrimaryKey = new[] { raceUmaDataTable.Columns["RaceKey"], raceUmaDataTable.Columns["KettoNum"] };
            }

            ProgressUserState.Maxinum = ReadCount;
            ProgressUserState.Value = 0;
            ProgressUserState.Text = "データ読み込み中...";
            MainBackgroundWorker.ReportProgress(0, ProgressUserState);

            do
            {
                //---------------------
                // JVLink読込み処理
                //---------------------
                buffObj = new byte[0];
                int nRet = AxJVLink.JVGets(ref buffObj, buffsize, out buffname);
                timeStamp = AxJVLink.m_CurrentFileTimeStamp;
                byte[] buff = (byte[])buffObj;
                string buffStr = System.Text.Encoding.GetEncoding(932).GetString(buff);

                // 正常
                if (0 < nRet)
                {
                    string recordSpec = JVData_Struct.MidB2S(ref buff, 1, 2);
                    buffObj = new byte[0];
                    buff = new byte[0];

                    switch (recordSpec)
                    {
                        case "UM":
                            {
                                JVData_Struct.JV_UM_UMA uma = new JVData_Struct.JV_UM_UMA();
                                uma.SetDataB(ref buffStr);
                                WriteDbUmaData(eOutput.Umanushi, uma, umaDataTable);
                            }
                            break;
                        case "RA":
                            {
                                JVData_Struct.JV_RA_RACE race = new JVData_Struct.JV_RA_RACE();
                                race.SetDataB(ref buffStr);
                                WriteDbRaceData(eOutput.Umanushi, race, raceDataTable);
                            }
                            break;
                        case "SE":
                            {
                                JVData_Struct.JV_SE_RACE_UMA raceUma = new JVData_Struct.JV_SE_RACE_UMA();
                                raceUma.SetDataB(ref buffStr);
                                WriteDbRaceUmaData(eOutput.Umanushi, raceUma, raceUmaDataTable);
                            }
                            break;
                        default:
                            // 対象外recspecのファイルをスキップする。
                            AxJVLink.JVSkip();
                            nCount++;
                            ProgressUserState.Value = nCount;
                            ProgressUserState.Text = "データ読み込み中...";
                            MainBackgroundWorker.ReportProgress(0, ProgressUserState);
                            break;
                    }
                }
                // ファイルの切れ目
                else if (-1 == nRet)
                {
                    nCount++;
                    ProgressUserState.Value = nCount;
                    ProgressUserState.Text = "データ読み込み中...";
                    MainBackgroundWorker.ReportProgress(0, ProgressUserState);
                }
                // 全レコード読込み終了(EOF)
                else if (0 == nRet)
                {
                    ProgressUserState.Value = ProgressUserState.Maxinum;
                    ProgressUserState.Text = "データ読み込み完了";
                    MainBackgroundWorker.ReportProgress(0, ProgressUserState);

                    reading = false;
                }
                // エラー
                else if (-1 > nRet)
                {
                    // エラーファイルをスキップする。
                    AxJVLink.JVSkip();
                    nCount++;
                    ProgressUserState.Value = nCount;
                    ProgressUserState.Text = "データ読み込み中...";
                    MainBackgroundWorker.ReportProgress(0, ProgressUserState);
                }

                System.Threading.Thread.Sleep(10);
            }
            while (true == reading);

            // データ整備
            if (raceUmaDataTable.Rows.Count > 0)
            {
                foreach (DataRow raceUmaDataRow in raceUmaDataTable.Select("", "RaceDate"))
                {
                    DataRow raceDataRow = raceDataTable.Rows.Find(raceUmaDataRow["RaceKey"]);
                    DataRow umaDataRow = umaDataTable.Rows.Find(raceUmaDataRow["KettoNum"]);
                    if (raceDataRow != null && umaDataRow != null)
                    {
                        string raceDate = umaDataRow["RaceDate"].ToString();
                        if ("" == raceDate || 0 > raceDate.CompareTo(raceUmaDataRow["RaceDate"].ToString()))
                        {
                            if (raceDataRow["DataKubun"].ToString() != "9" && raceDataRow["DataKubun"].ToString() != "0")
                            {
                                // レースを追加
                                umaDataRow["BeforeUmaClass"] = umaDataRow["UmaClass"];
                                umaDataRow["BeforeRaceDate"] = umaDataRow["RaceDate"];
                                umaDataRow["BeforeRaceDataKubun"] = umaDataRow["RaceDataKubun"];
                                umaDataRow["BeforeRaceGradeCD"] = umaDataRow["RaceGradeCD"];
                                umaDataRow["BeforeRaceSyubetuCD"] = umaDataRow["RaceSyubetuCD"];
                                umaDataRow["BeforeRaceKakuteiJyuni"] = umaDataRow["RaceKakuteiJyuni"];

                                umaDataRow["RaceDate"] = raceUmaDataRow["RaceDate"];
                                umaDataRow["RaceDataKubun"] = raceDataRow["DataKubun"];
                                umaDataRow["RaceGradeCD"] = raceDataRow["GradeCD"];
                                umaDataRow["RaceSyubetuCD"] = raceDataRow["SyubetuCD"];
                                umaDataRow["RaceKakuteiJyuni"] = raceUmaDataRow["KakuteiJyuni"];
                                umaDataRow["UmaClass"] = GetUmaClass(umaDataRow);
                            }
                        }
                        else if (0 == raceDate.CompareTo(raceUmaDataRow["RaceDate"].ToString()))
                        {
                            if (raceDataRow["DataKubun"].ToString() == "9" || raceDataRow["DataKubun"].ToString() == "0")
                            {
                                // レース中止、データ削除のため戻す
                                umaDataRow["UmaClass"] = umaDataRow["BeforeUmaClass"];
                                umaDataRow["RaceDate"] = umaDataRow["BeforeRaceDate"];
                                umaDataRow["RaceDataKubun"] = umaDataRow["BeforeRaceDataKubun"];
                                umaDataRow["RaceGradeCD"] = umaDataRow["BeforeRaceGradeCD"];
                                umaDataRow["RaceSyubetuCD"] = umaDataRow["BeforeRaceSyubetuCD"];
                                umaDataRow["RaceKakuteiJyuni"] = umaDataRow["BeforeRaceKakuteiJyuni"];

                                umaDataRow["BeforeUmaClass"] = null;
                                umaDataRow["BeforeRaceDate"] = null;
                                umaDataRow["BeforeRaceDataKubun"] = null;
                                umaDataRow["BeforeRaceGradeCD"] = null;
                                umaDataRow["BeforeRaceSyubetuCD"] = null;
                                umaDataRow["BeforeRaceKakuteiJyuni"] = null;
                            }
                            else
                            {
                                // レース結果の更新
                                if (umaDataRow["RaceDataKubun"].ToString() != raceDataRow["DataKubun"].ToString())
                                {
                                    umaDataRow["RaceDataKubun"] = raceDataRow["DataKubun"];
                                }
                                if (umaDataRow["RaceGradeCD"].ToString() != raceDataRow["GradeCD"].ToString())
                                {
                                    umaDataRow["RaceGradeCD"] = raceDataRow["GradeCD"];
                                }
                                if (umaDataRow["RaceSyubetuCD"].ToString() != raceDataRow["SyubetuCD"].ToString())
                                {
                                    umaDataRow["RaceSyubetuCD"] = raceDataRow["SyubetuCD"];
                                }
                                if (umaDataRow["RaceKakuteiJyuni"].ToString() != raceUmaDataRow["KakuteiJyuni"].ToString())
                                {
                                    umaDataRow["RaceKakuteiJyuni"] = raceUmaDataRow["KakuteiJyuni"];
                                }
                                if (umaDataRow["UmaClass"].ToString() != GetUmaClass(umaDataRow))
                                {
                                    umaDataRow["UmaClass"] = GetUmaClass(umaDataRow);
                                }
                            }
                        }
                    }
                }
            }

            // データ更新
            using (SQLiteTransaction tran = DbConn.BeginTransaction())
            {
                using (SQLiteCommand command = DbConn.CreateCommand())
                {
                    command.Transaction = tran;
                    command.CommandText = "SELECT * FROM uma";
                    using (SQLiteDataAdapter da = new SQLiteDataAdapter(command))
                    using (SQLiteCommandBuilder cb = new SQLiteCommandBuilder(da))
                    {
                        cb.SetAllValues = false;
                        cb.ConflictOption = ConflictOption.OverwriteChanges;
                        da.UpdateCommand = cb.GetUpdateCommand();
                        da.InsertCommand = cb.GetInsertCommand();
                        da.DeleteCommand = cb.GetDeleteCommand();
                        da.Update(umaDataTable);
                    }

                    command.CommandText = "DELETE FROM uma WHERE BirthYear <= '" + DiscardBirthYear + "'";
                    command.ExecuteNonQuery();

                    command.CommandText = "UPDATE timestamp SET date ='" + LastFileTimestamp + "'";
                    command.ExecuteNonQuery();
                }
                tran.Commit();
                JVRelayClass.DbTimeStamp = LastFileTimestamp;
            }
        }