basADOUtility.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data; // データベースへの接続に必要
using System.Data.OleDb; // データベースへの接続に必要
using System.Diagnostics; // Debug クラス使用のために必要
using static JVData_Struct; // JVData_Struct クラス使用のために必要
class basADOUtility
{
//------------------------------------------------------------------------
// レース詳細構造体の情報をJV-Dataデータセットに格納
//------------------------------------------------------------------------
// [引数]
// raceDat = レース詳細構造体
// jvdds = JV-Dataデータセット
//------------------------------------------------------------------------
public static void SetJVDataRaceDataSet(JV_RA_RACE raceDat, dynamic jvdds)
{
DataRow dr; // データ1行分の各格納領域
bool bnr; // 新しい行作成フラグ 作成時:True
// 値の初期化
bnr = false;
// 格納済みデータから主キーが同じ行を検索する
dr = jvdds.RACE.FindByYearMonthDayJyoCDKaijiNichijiRaceNum(
raceDat.id.Year,
raceDat.id.MonthDay,
raceDat.id.JyoCD,
raceDat.id.Kaiji,
raceDat.id.Nichiji,
raceDat.id.RaceNum);
// 主キーの同じデータが存在したか否か
if (dr == null)
{
// 存在しなかった場合、新しいRowを作成する
dr = jvdds.RACE.NewRow();
// 作成フラグをセット
bnr = true;
// 主キーのセット
dr[jvdds.RACE.YearColumn] = raceDat.id.Year; // 開催年
dr[jvdds.RACE.MonthDayColumn] = raceDat.id.MonthDay; // 開催月日
dr[jvdds.RACE.JyoCDColumn] = raceDat.id.JyoCD; // 競馬場コード
dr[jvdds.RACE.KaijiColumn] = raceDat.id.Kaiji; // 開催回[第N回]
dr[jvdds.RACE.NichijiColumn] = raceDat.id.Nichiji; // 開催日目[N日目]
dr[jvdds.RACE.RaceNumColumn] = raceDat.id.RaceNum; // レース番号
}
// データのセット
dr[jvdds.RACE.RecordSpecColumn] = raceDat.head.RecordSpec; // レコード種別
dr[jvdds.RACE.DataKubunColumn] = raceDat.head.DataKubun; // データ区分
dr[jvdds.RACE.MakeDateColumn] = raceDat.head.MakeDate.Year +
raceDat.head.MakeDate.Month +
raceDat.head.MakeDate.Day; // データ作成年月日
dr[jvdds.RACE.YoubiCDColumn] = raceDat.RaceInfo.YoubiCD; // 曜日コード
dr[jvdds.RACE.TokuNumColumn] = raceDat.RaceInfo.TokuNum; // 特別競走番号
dr[jvdds.RACE.HondaiColumn] = raceDat.RaceInfo.Hondai; // 競走名本題
dr[jvdds.RACE.FukudaiColumn] = raceDat.RaceInfo.Fukudai; // 競走名副題
dr[jvdds.RACE.KakkoColumn] = raceDat.RaceInfo.Kakko; // 競走名カッコ内
dr[jvdds.RACE.HondaiEngColumn] = raceDat.RaceInfo.HondaiEng; // 競走名本題欧字
dr[jvdds.RACE.FukudaiEngColumn] = raceDat.RaceInfo.FukudaiEng; // 競走名副題欧字
dr[jvdds.RACE.KakkoEngColumn] = raceDat.RaceInfo.KakkoEng; // 競走名カッコ内欧字
dr[jvdds.RACE.Ryakusyo10Column] = raceDat.RaceInfo.Ryakusyo10; // 競走名略称10字
dr[jvdds.RACE.Ryakusyo6Column] = raceDat.RaceInfo.Ryakusyo6; // 競走名略称6字
dr[jvdds.RACE.Ryakusyo3Column] = raceDat.RaceInfo.Ryakusyo3; // 競走名略称3字
dr[jvdds.RACE.KubunColumn] = raceDat.RaceInfo.Kubun; // 競走名区分
dr[jvdds.RACE.NkaiColumn] = raceDat.RaceInfo.Nkai; // 重賞回次[第N回]
dr[jvdds.RACE.GradeCDColumn] = raceDat.GradeCD; // グレードコード
dr[jvdds.RACE.GradeCDBeforeColumn] = raceDat.GradeCDBefore; // 変更前グレードコード
dr[jvdds.RACE.SyubetuCDColumn] = raceDat.JyokenInfo.SyubetuCD; // 競走種別コード
dr[jvdds.RACE.KigoCDColumn] = raceDat.JyokenInfo.KigoCD; // 競走記号コード
dr[jvdds.RACE.JyuryoCDColumn] = raceDat.JyokenInfo.JyuryoCD; // 重量種別コード
dr[jvdds.RACE.JyokenCD1Column] = raceDat.JyokenInfo.JyokenCD[0]; // 競走条件コード1
dr[jvdds.RACE.JyokenCD2Column] = raceDat.JyokenInfo.JyokenCD[1]; // 競走条件コード2
dr[jvdds.RACE.JyokenCD3Column] = raceDat.JyokenInfo.JyokenCD[2]; // 競走条件コード3
dr[jvdds.RACE.JyokenCD4Column] = raceDat.JyokenInfo.JyokenCD[3]; // 競走条件コード4
dr[jvdds.RACE.JyokenCD5Column] = raceDat.JyokenInfo.JyokenCD[4]; // 競走条件コード5
dr[jvdds.RACE.JyokenNameColumn] = raceDat.JyokenName; // 競走条件名称
dr[jvdds.RACE.KyoriColumn] = raceDat.Kyori; // 距離
dr[jvdds.RACE.KyoriBeforeColumn] = raceDat.KyoriBefore; // 変更前距離
dr[jvdds.RACE.TrackCDColumn] = raceDat.TrackCD; // トラックコード
dr[jvdds.RACE.TrackCDBeforeColumn] = raceDat.TrackCDBefore; // 変更前トラックコード
dr[jvdds.RACE.CourseKubunCDColumn] = raceDat.CourseKubunCD; // コース区分
dr[jvdds.RACE.CourseKubunCDBeforeColumn] = raceDat.CourseKubunCDBefore; // 変更前コース区分
dr[jvdds.RACE.Honsyokin1Column] = raceDat.Honsyokin[0]; // 本賞金1
dr[jvdds.RACE.Honsyokin2Column] = raceDat.Honsyokin[1]; // 本賞金2
dr[jvdds.RACE.Honsyokin3Column] = raceDat.Honsyokin[2]; // 本賞金3
dr[jvdds.RACE.Honsyokin4Column] = raceDat.Honsyokin[3]; // 本賞金4
dr[jvdds.RACE.Honsyokin5Column] = raceDat.Honsyokin[4]; // 本賞金5
dr[jvdds.RACE.Honsyokin6Column] = raceDat.Honsyokin[5]; // 本賞金6
dr[jvdds.RACE.Honsyokin7Column] = raceDat.Honsyokin[6]; // 本賞金7
dr[jvdds.RACE.HonsyokinBefore1Column] = raceDat.HonsyokinBefore[0]; // 変更前本賞金1
dr[jvdds.RACE.HonsyokinBefore2Column] = raceDat.HonsyokinBefore[1]; // 変更前本賞金2
dr[jvdds.RACE.HonsyokinBefore3Column] = raceDat.HonsyokinBefore[2]; // 変更前本賞金3
dr[jvdds.RACE.HonsyokinBefore4Column] = raceDat.HonsyokinBefore[3]; // 変更前本賞金4
dr[jvdds.RACE.HonsyokinBefore5Column] = raceDat.HonsyokinBefore[4]; // 変更前本賞金5
dr[jvdds.RACE.Fukasyokin1Column] = raceDat.Fukasyokin[0]; // 付加賞金1
dr[jvdds.RACE.Fukasyokin2Column] = raceDat.Fukasyokin[1]; // 付加賞金2
dr[jvdds.RACE.Fukasyokin3Column] = raceDat.Fukasyokin[2]; // 付加賞金3
dr[jvdds.RACE.Fukasyokin4Column] = raceDat.Fukasyokin[3]; // 付加賞金4
dr[jvdds.RACE.Fukasyokin5Column] = raceDat.Fukasyokin[4]; // 付加賞金5
dr[jvdds.RACE.FukasyokinBefore1Column] = raceDat.FukasyokinBefore[0]; // 変更前付加賞金1
dr[jvdds.RACE.FukasyokinBefore2Column] = raceDat.FukasyokinBefore[1]; // 変更前付加賞金2
dr[jvdds.RACE.FukasyokinBefore3Column] = raceDat.FukasyokinBefore[2]; // 変更前付加賞金3
dr[jvdds.RACE.HassoTimeColumn] = raceDat.HassoTime; // 発走時刻
dr[jvdds.RACE.HassoTimeBeforeColumn] = raceDat.HassoTimeBefore; // 変更前発走時刻
dr[jvdds.RACE.TorokuTosuColumn] = raceDat.TorokuTosu; // 登録頭数
dr[jvdds.RACE.SyussoTosuColumn] = raceDat.SyussoTosu; // 出走頭数
dr[jvdds.RACE.NyusenTosuColumn] = raceDat.NyusenTosu; // 入線頭数
dr[jvdds.RACE.TenkoCDColumn] = raceDat.TenkoBaba.TenkoCD; // 天候コード
dr[jvdds.RACE.SibaBabaCDColumn] = raceDat.TenkoBaba.SibaBabaCD; // 芝馬場状態コード
dr[jvdds.RACE.DirtBabaCDColumn] = raceDat.TenkoBaba.DirtBabaCD; // ダート馬場状態コード
dr[jvdds.RACE.LapTime1Column] = raceDat.LapTime[0]; // ラップタイム1
dr[jvdds.RACE.LapTime2Column] = raceDat.LapTime[1]; // ラップタイム2
dr[jvdds.RACE.LapTime3Column] = raceDat.LapTime[2]; // ラップタイム3
dr[jvdds.RACE.LapTime4Column] = raceDat.LapTime[3]; // ラップタイム4
dr[jvdds.RACE.LapTime5Column] = raceDat.LapTime[4]; // ラップタイム5
dr[jvdds.RACE.LapTime6Column] = raceDat.LapTime[5]; // ラップタイム6
dr[jvdds.RACE.LapTime7Column] = raceDat.LapTime[6]; // ラップタイム7
dr[jvdds.RACE.LapTime8Column] = raceDat.LapTime[7]; // ラップタイム8
dr[jvdds.RACE.LapTime9Column] = raceDat.LapTime[8]; // ラップタイム9
dr[jvdds.RACE.LapTime10Column] = raceDat.LapTime[9]; // ラップタイム10
dr[jvdds.RACE.LapTime11Column] = raceDat.LapTime[10]; // ラップタイム11
dr[jvdds.RACE.LapTime12Column] = raceDat.LapTime[11]; // ラップタイム12
dr[jvdds.RACE.LapTime13Column] = raceDat.LapTime[12]; // ラップタイム13
dr[jvdds.RACE.LapTime14Column] = raceDat.LapTime[13]; // ラップタイム14
dr[jvdds.RACE.LapTime15Column] = raceDat.LapTime[14]; // ラップタイム15
dr[jvdds.RACE.LapTime16Column] = raceDat.LapTime[15]; // ラップタイム16
dr[jvdds.RACE.LapTime17Column] = raceDat.LapTime[16]; // ラップタイム17
dr[jvdds.RACE.LapTime18Column] = raceDat.LapTime[17]; // ラップタイム18
dr[jvdds.RACE.LapTime19Column] = raceDat.LapTime[18]; // ラップタイム19
dr[jvdds.RACE.LapTime20Column] = raceDat.LapTime[19]; // ラップタイム20
dr[jvdds.RACE.LapTime21Column] = raceDat.LapTime[20]; // ラップタイム21
dr[jvdds.RACE.LapTime22Column] = raceDat.LapTime[21]; // ラップタイム22
dr[jvdds.RACE.LapTime23Column] = raceDat.LapTime[22]; // ラップタイム23
dr[jvdds.RACE.LapTime24Column] = raceDat.LapTime[23]; // ラップタイム24
dr[jvdds.RACE.LapTime25Column] = raceDat.LapTime[24]; // ラップタイム25
dr[jvdds.RACE.SyogaiMileTimeColumn] = raceDat.SyogaiMileTime; // 障害マイルタイム
dr[jvdds.RACE.HaronTimeS3Column] = raceDat.HaronTimeS3; // 前3ハロンタイム
dr[jvdds.RACE.HaronTimeS4Column] = raceDat.HaronTimeS4; // 前4ハロンタイム
dr[jvdds.RACE.HaronTimeL3Column] = raceDat.HaronTimeL3; // 後3ハロンタイム
dr[jvdds.RACE.HaronTimeL4Column] = raceDat.HaronTimeL4; // 後4ハロンタイム
dr[jvdds.RACE.Corner1Column] = raceDat.CornerInfo[0].Corner; // コーナー通過順1コーナー
dr[jvdds.RACE.Syukaisu1Column] = raceDat.CornerInfo[0].Syukaisu; // コーナー通過順1周回数
dr[jvdds.RACE.Jyuni1Column] = raceDat.CornerInfo[0].Jyuni; // コーナー通過順1各通過順位
dr[jvdds.RACE.Corner2Column] = raceDat.CornerInfo[1].Corner; // コーナー通過順2コーナー
dr[jvdds.RACE.Syukaisu2Column] = raceDat.CornerInfo[1].Syukaisu; // コーナー通過順2周回数
dr[jvdds.RACE.Jyuni2Column] = raceDat.CornerInfo[1].Jyuni; // コーナー通過順2各通過順位
dr[jvdds.RACE.Corner3Column] = raceDat.CornerInfo[2].Corner; // コーナー通過順3コーナー
dr[jvdds.RACE.Syukaisu3Column] = raceDat.CornerInfo[2].Syukaisu; // コーナー通過順3周回数
dr[jvdds.RACE.Jyuni3Column] = raceDat.CornerInfo[2].Jyuni; // コーナー通過順3各通過順位
dr[jvdds.RACE.Corner4Column] = raceDat.CornerInfo[3].Corner; // コーナー通過順4コーナー
dr[jvdds.RACE.Syukaisu4Column] = raceDat.CornerInfo[3].Syukaisu; // コーナー通過順4周回数
dr[jvdds.RACE.Jyuni4Column] = raceDat.CornerInfo[3].Jyuni; // コーナー通過順4各通過順位
dr[jvdds.RACE.RecordUpKubunColumn] = raceDat.RecordUpKubun; // レコード更新区分
// 新しい行の場合、jvddsに行を追加
if (bnr == true)
{
jvdds.RACE.Rows.Add(dr);
}
}
//------------------------------------------------------------------------
// JV-Dataデータセットのレース詳細をJV-Data構造体に格納
//------------------------------------------------------------------------
// [引数]
// dr = レース詳細[一件]
// raceDat = レース詳細構造体
//------------------------------------------------------------------------
public static void SetJVDataRaceStructure(DataRow dr, ref JV_RA_RACE raceDat)
{
// 構造体の配列の初期化
raceDat.Initialize();
raceDat.JyokenInfo.Initialize();
// データのセット
raceDat.head.RecordSpec = dr[0].ToString(); // レコード種別
raceDat.head.DataKubun = dr[1].ToString(); // データ区分
string str1 = dr[2].ToString();
raceDat.head.MakeDate.SetDataB(Str2Byte(ref str1)); // データ作成年月日
raceDat.id.Year = dr[3].ToString(); // 開催年
raceDat.id.MonthDay = dr[4].ToString(); // 開催月日
raceDat.id.JyoCD = dr[5].ToString(); // 競馬場コード
raceDat.id.Kaiji = dr[6].ToString(); // 開催回[第N回]
raceDat.id.Nichiji = dr[7].ToString(); // 開催日目[N日目]
raceDat.id.RaceNum = dr[8].ToString(); // レース番号
raceDat.RaceInfo.YoubiCD = dr[9].ToString(); // 曜日コード
raceDat.RaceInfo.TokuNum = dr[10].ToString(); // 特別競走番号
raceDat.RaceInfo.Hondai = dr[11].ToString(); // 競走名本題
raceDat.RaceInfo.Fukudai = dr[12].ToString(); // 競走名副題
raceDat.RaceInfo.Kakko = dr[13].ToString(); // 競走名カッコ内
raceDat.RaceInfo.HondaiEng = dr[14].ToString(); // 競走名本題欧字
raceDat.RaceInfo.FukudaiEng = dr[15].ToString(); // 競走名副題欧字
raceDat.RaceInfo.KakkoEng = dr[16].ToString(); // 競走名カッコ内欧字
raceDat.RaceInfo.Ryakusyo10 = dr[17].ToString(); // 競走名略称10字
raceDat.RaceInfo.Ryakusyo6 = dr[18].ToString(); // 競走名略称6字
raceDat.RaceInfo.Ryakusyo3 = dr[19].ToString(); // 競走名略称3字
raceDat.RaceInfo.Kubun = dr[20].ToString(); // 競走名区分
raceDat.RaceInfo.Nkai = dr[21].ToString(); // 重賞回次[第N回]
raceDat.GradeCD = dr[22].ToString(); // グレードコード
raceDat.GradeCDBefore = dr[23].ToString(); // 変更前グレードコード
raceDat.JyokenInfo.SyubetuCD = dr[24].ToString(); // 競走種別コード
raceDat.JyokenInfo.KigoCD = dr[25].ToString(); // 競走記号コード
raceDat.JyokenInfo.JyuryoCD = dr[26].ToString(); // 重量種別コード
raceDat.JyokenInfo.JyokenCD[0] = dr[27].ToString(); // 競走条件コード1
raceDat.JyokenInfo.JyokenCD[1] = dr[28].ToString(); // 競走条件コード2
raceDat.JyokenInfo.JyokenCD[2] = dr[29].ToString(); // 競走条件コード3
raceDat.JyokenInfo.JyokenCD[3] = dr[30].ToString(); // 競走条件コード4
raceDat.JyokenInfo.JyokenCD[4] = dr[31].ToString(); // 競走条件コード5
raceDat.JyokenName = dr[32].ToString(); // 競走条件名称
raceDat.Kyori = dr[33].ToString(); // 距離
raceDat.KyoriBefore = dr[34].ToString(); // 変更前距離
raceDat.TrackCD = dr[35].ToString(); // トラックコード
raceDat.TrackCDBefore = dr[36].ToString(); // 変更前トラックコード
raceDat.CourseKubunCD = dr[37].ToString(); // コース区分
raceDat.CourseKubunCDBefore = dr[38].ToString(); // 変更前コース区分
raceDat.Honsyokin[0] = dr[39].ToString(); // 本賞金1
raceDat.Honsyokin[1] = dr[40].ToString(); // 本賞金2
raceDat.Honsyokin[2] = dr[41].ToString(); // 本賞金3
raceDat.Honsyokin[3] = dr[42].ToString(); // 本賞金4
raceDat.Honsyokin[4] = dr[43].ToString(); // 本賞金5
raceDat.Honsyokin[5] = dr[44].ToString(); // 本賞金6
raceDat.Honsyokin[6] = dr[45].ToString(); // 本賞金7
raceDat.HonsyokinBefore[0] = dr[46].ToString(); // 変更前本賞金1
raceDat.HonsyokinBefore[1] = dr[47].ToString(); // 変更前本賞金2
raceDat.HonsyokinBefore[2] = dr[48].ToString(); // 変更前本賞金3
raceDat.HonsyokinBefore[3] = dr[49].ToString(); // 変更前本賞金4
raceDat.HonsyokinBefore[4] = dr[50].ToString(); // 変更前本賞金5
raceDat.Fukasyokin[0] = dr[51].ToString(); // 付加賞金1
raceDat.Fukasyokin[1] = dr[52].ToString(); // 付加賞金2
raceDat.Fukasyokin[2] = dr[53].ToString(); // 付加賞金3
raceDat.Fukasyokin[3] = dr[54].ToString(); // 付加賞金4
raceDat.Fukasyokin[4] = dr[55].ToString(); // 付加賞金5
raceDat.FukasyokinBefore[0] = dr[56].ToString(); // 変更前付加賞金1
raceDat.FukasyokinBefore[1] = dr[57].ToString(); // 変更前付加賞金2
raceDat.FukasyokinBefore[2] = dr[58].ToString(); // 変更前付加賞金3
raceDat.HassoTime = dr[59].ToString(); // 発走時刻
raceDat.HassoTimeBefore = dr[60].ToString(); // 変更前発走時刻
raceDat.TorokuTosu = dr[61].ToString(); // 登録頭数
raceDat.SyussoTosu = dr[62].ToString(); // 出走頭数
raceDat.NyusenTosu = dr[63].ToString(); // 入線頭数
raceDat.TenkoBaba.TenkoCD = dr[64].ToString(); // 天候コード
raceDat.TenkoBaba.SibaBabaCD = dr[65].ToString(); // 芝馬場状態コード
raceDat.TenkoBaba.DirtBabaCD = dr[66].ToString(); // ダート馬場状態コード
raceDat.LapTime[0] = dr[67].ToString(); // ラップタイム1
raceDat.LapTime[1] = dr[68].ToString(); // ラップタイム2
raceDat.LapTime[2] = dr[69].ToString(); // ラップタイム3
raceDat.LapTime[3] = dr[70].ToString(); // ラップタイム4
raceDat.LapTime[4] = dr[71].ToString(); // ラップタイム5
raceDat.LapTime[5] = dr[72].ToString(); // ラップタイム6
raceDat.LapTime[6] = dr[73].ToString(); // ラップタイム7
raceDat.LapTime[7] = dr[74].ToString(); // ラップタイム8
raceDat.LapTime[8] = dr[75].ToString(); // ラップタイム9
raceDat.LapTime[9] = dr[76].ToString(); // ラップタイム10
raceDat.LapTime[10] = dr[77].ToString(); // ラップタイム11
raceDat.LapTime[11] = dr[78].ToString(); // ラップタイム12
raceDat.LapTime[12] = dr[79].ToString(); // ラップタイム13
raceDat.LapTime[13] = dr[80].ToString(); // ラップタイム14
raceDat.LapTime[14] = dr[81].ToString(); // ラップタイム15
raceDat.LapTime[15] = dr[82].ToString(); // ラップタイム16
raceDat.LapTime[16] = dr[83].ToString(); // ラップタイム17
raceDat.LapTime[17] = dr[84].ToString(); // ラップタイム18
raceDat.LapTime[18] = dr[85].ToString(); // ラップタイム19
raceDat.LapTime[19] = dr[86].ToString(); // ラップタイム20
raceDat.LapTime[20] = dr[87].ToString(); // ラップタイム21
raceDat.LapTime[21] = dr[88].ToString(); // ラップタイム22
raceDat.LapTime[22] = dr[89].ToString(); // ラップタイム23
raceDat.LapTime[23] = dr[90].ToString(); // ラップタイム24
raceDat.LapTime[24] = dr[91].ToString(); // ラップタイム25
raceDat.SyogaiMileTime = dr[92].ToString(); // 障害マイルタイム
raceDat.HaronTimeS3 = dr[93].ToString(); // 前3ハロンタイム
raceDat.HaronTimeS4 = dr[94].ToString(); // 前4ハロンタイム
raceDat.HaronTimeL3 = dr[95].ToString(); // 後3ハロンタイム
raceDat.HaronTimeL4 = dr[96].ToString(); // 後4ハロンタイム
raceDat.CornerInfo[0].Corner = dr[97].ToString(); // コーナー通過順1コーナー
raceDat.CornerInfo[0].Syukaisu = dr[98].ToString(); // コーナー通過順1周回数
raceDat.CornerInfo[0].Jyuni = dr[99].ToString(); // コーナー通過順1各通過順位
raceDat.CornerInfo[1].Corner = dr[100].ToString(); // コーナー通過順2コーナー
raceDat.CornerInfo[1].Syukaisu = dr[101].ToString(); // コーナー通過順2周回数
raceDat.CornerInfo[1].Jyuni = dr[102].ToString(); // コーナー通過順2各通過順位
raceDat.CornerInfo[2].Corner = dr[103].ToString(); // コーナー通過順3コーナー
raceDat.CornerInfo[2].Syukaisu = dr[104].ToString(); // コーナー通過順3周回数
raceDat.CornerInfo[2].Jyuni = dr[105].ToString(); // コーナー通過順3各通過順位
raceDat.CornerInfo[3].Corner = dr[106].ToString(); // コーナー通過順4コーナー
raceDat.CornerInfo[3].Syukaisu = dr[107].ToString(); // コーナー通過順4周回数
raceDat.CornerInfo[3].Jyuni = dr[108].ToString(); // コーナー通過順4各通過順位
raceDat.RecordUpKubun = dr[109].ToString(); // レコード更新区分
}
//------------------------------------------------------------------------
// 馬毎レース情報構造体の情報をJV-Dataデータセットに格納
//------------------------------------------------------------------------
// [引数]
// raceUmaDat = 馬毎レース情報構造体
// jvdds = JV-Dataデータセット
//------------------------------------------------------------------------
public static void SetJVDataUmaRaceDataSet(JV_SE_RACE_UMA raceUmaDat, dynamic jvdds)
{
DataRow dr; // データ1行分の各格納領域
bool bnr; // 新しい行作成フラグ 作成時:True
// 値の初期化
bnr = false;
// 格納済みデータから主キーが同じ行を検索する
dr = jvdds.UMA_RACE.FindByYearMonthDayJyoCDKaijiNichijiRaceNumUmabanKettoNum(
raceUmaDat.id.Year,
raceUmaDat.id.MonthDay,
raceUmaDat.id.JyoCD,
raceUmaDat.id.Kaiji,
raceUmaDat.id.Nichiji,
raceUmaDat.id.RaceNum,
raceUmaDat.Umaban,
raceUmaDat.KettoNum);
// 主キーの同じデータが存在したか否か
if (dr == null)
{
// 存在しなかった場合、新しいRowを作成する
dr = jvdds.UMA_RACE.NewRow();
// 作成フラグをセット
bnr = true;
// 主キーのセット
dr[jvdds.UMA_RACE.YearColumn] = raceUmaDat.id.Year; // 開催年
dr[jvdds.UMA_RACE.MonthDayColumn] = raceUmaDat.id.MonthDay; // 開催月日
dr[jvdds.UMA_RACE.JyoCDColumn] = raceUmaDat.id.JyoCD; // 競馬場コード
dr[jvdds.UMA_RACE.KaijiColumn] = raceUmaDat.id.Kaiji; // 開催回[第N回]
dr[jvdds.UMA_RACE.NichijiColumn] = raceUmaDat.id.Nichiji; // 開催日目[N日目]
dr[jvdds.UMA_RACE.RaceNumColumn] = raceUmaDat.id.RaceNum; // レース番号
dr[jvdds.UMA_RACE.UmabanColumn] = raceUmaDat.Umaban; // 馬番
dr[jvdds.UMA_RACE.KettoNumColumn] = raceUmaDat.KettoNum; // 血統登録番号
}
// データのセット
dr[jvdds.UMA_RACE.RecordSpecColumn] = raceUmaDat.head.RecordSpec; // レコード種別
dr[jvdds.UMA_RACE.DataKubunColumn] = raceUmaDat.head.DataKubun; // データ区分
dr[jvdds.UMA_RACE.MakeDateColumn] = raceUmaDat.head.MakeDate.Year +
raceUmaDat.head.MakeDate.Month +
raceUmaDat.head.MakeDate.Day; // データ作成年月日
dr[jvdds.UMA_RACE.WakubanColumn] = raceUmaDat.Wakuban; // 枠番
dr[jvdds.UMA_RACE.BameiColumn] = raceUmaDat.Bamei; // 馬名
dr[jvdds.UMA_RACE.UmaKigoCDColumn] = raceUmaDat.UmaKigoCD; // 馬記号コード
dr[jvdds.UMA_RACE.SexCDColumn] = raceUmaDat.SexCD; // 性別コード
dr[jvdds.UMA_RACE.HinsyuCDColumn] = raceUmaDat.HinsyuCD; // 品種コード
dr[jvdds.UMA_RACE.KeiroCDColumn] = raceUmaDat.KeiroCD; // 毛色コード
dr[jvdds.UMA_RACE.BareiColumn] = raceUmaDat.Barei; // 馬齢
dr[jvdds.UMA_RACE.TozaiCDColumn] = raceUmaDat.TozaiCD; // 東西所属コード
dr[jvdds.UMA_RACE.ChokyosiCodeColumn] = raceUmaDat.ChokyosiCode; // 調教師コード
dr[jvdds.UMA_RACE.ChokyosiRyakusyoColumn] = raceUmaDat.ChokyosiRyakusyo; // 調教師名略称
dr[jvdds.UMA_RACE.BanusiCodeColumn] = raceUmaDat.BanusiCode; // 馬主コード
dr[jvdds.UMA_RACE.BanusiNameColumn] = raceUmaDat.BanusiName; // 馬主名
dr[jvdds.UMA_RACE.FukusyokuColumn] = raceUmaDat.Fukusyoku; // 服色標示
dr[jvdds.UMA_RACE.reserved1Column] = raceUmaDat.reserved1; // 予備
dr[jvdds.UMA_RACE.FutanColumn] = raceUmaDat.Futan; // 負担重量
dr[jvdds.UMA_RACE.FutanBeforeColumn] = raceUmaDat.FutanBefore; // 変更前負担重量
dr[jvdds.UMA_RACE.BlinkerColumn] = raceUmaDat.Blinker; // ブリンカー使用区分
dr[jvdds.UMA_RACE.reserved2Column] = raceUmaDat.reserved2; // 予備
dr[jvdds.UMA_RACE.KisyuCodeColumn] = raceUmaDat.KisyuCode; // 騎手コード
dr[jvdds.UMA_RACE.KisyuCodeBeforeColumn] = raceUmaDat.KisyuCodeBefore; // 変更前騎手コード
dr[jvdds.UMA_RACE.KisyuRyakusyoColumn] = raceUmaDat.KisyuRyakusyo; // 騎手名略称
dr[jvdds.UMA_RACE.KisyuRyakusyoBeforeColumn] = raceUmaDat.KisyuRyakusyoBefore; // 変更前騎手名略称
dr[jvdds.UMA_RACE.MinaraiCDColumn] = raceUmaDat.MinaraiCD; // 騎手見習コード
dr[jvdds.UMA_RACE.MinaraiCDBeforeColumn] = raceUmaDat.MinaraiCDBefore; // 変更前騎手見習コード
dr[jvdds.UMA_RACE.BaTaijyuColumn] = raceUmaDat.BaTaijyu; // 馬体重
dr[jvdds.UMA_RACE.ZogenFugoColumn] = raceUmaDat.ZogenFugo; // 増減符号
dr[jvdds.UMA_RACE.ZogenSaColumn] = raceUmaDat.ZogenSa; // 増減差
dr[jvdds.UMA_RACE.IJyoCDColumn] = raceUmaDat.IJyoCD; // 異常区分コード
dr[jvdds.UMA_RACE.NyusenJyuniColumn] = raceUmaDat.NyusenJyuni; // 入線順位
dr[jvdds.UMA_RACE.KakuteiJyuniColumn] = raceUmaDat.KakuteiJyuni; // 確定着順
dr[jvdds.UMA_RACE.DochakuKubunColumn] = raceUmaDat.DochakuKubun; // 同着区分
dr[jvdds.UMA_RACE.DochakuTosuColumn] = raceUmaDat.DochakuTosu; // 同着頭数
dr[jvdds.UMA_RACE.TimeColumn] = raceUmaDat.Time; // 走破タイム
dr[jvdds.UMA_RACE.ChakusaCDColumn] = raceUmaDat.ChakusaCD; // 着差コード
dr[jvdds.UMA_RACE.ChakusaCDPColumn] = raceUmaDat.ChakusaCDP; // +着差コード
dr[jvdds.UMA_RACE.ChakusaCDPPColumn] = raceUmaDat.ChakusaCDPP; // ++着差コード
dr[jvdds.UMA_RACE.Jyuni1cColumn] = raceUmaDat.Jyuni1c; // 1コーナーでの順位
dr[jvdds.UMA_RACE.Jyuni2cColumn] = raceUmaDat.Jyuni2c; // 2コーナーでの順位
dr[jvdds.UMA_RACE.Jyuni3cColumn] = raceUmaDat.Jyuni3c; // 3コーナーでの順位
dr[jvdds.UMA_RACE.Jyuni4cColumn] = raceUmaDat.Jyuni4c; // 4コーナーでの順位
dr[jvdds.UMA_RACE.OddsColumn] = raceUmaDat.Odds; // 単勝オッズ
dr[jvdds.UMA_RACE.NinkiColumn] = raceUmaDat.Ninki; // 単勝人気順
dr[jvdds.UMA_RACE.HonsyokinColumn] = raceUmaDat.Honsyokin; // 獲得本賞金
dr[jvdds.UMA_RACE.FukasyokinColumn] = raceUmaDat.Fukasyokin; // 獲得付加賞金
dr[jvdds.UMA_RACE.reserved3Column] = raceUmaDat.reserved3; // 予備
dr[jvdds.UMA_RACE.reserved4Column] = raceUmaDat.reserved4; // 予備
dr[jvdds.UMA_RACE.HaronTimeL4Column] = raceUmaDat.HaronTimeL4; // 後4ハロンタイム
dr[jvdds.UMA_RACE.HaronTimeL3Column] = raceUmaDat.HaronTimeL3; // 後3ハロンタイム
dr[jvdds.UMA_RACE.KettoNum1Column] = raceUmaDat.ChakuUmaInfo[0].KettoNum; // 相手馬1血統登録番号
dr[jvdds.UMA_RACE.Bamei1Column] = raceUmaDat.ChakuUmaInfo[0].Bamei; // 相手馬1馬名
dr[jvdds.UMA_RACE.KettoNum2Column] = raceUmaDat.ChakuUmaInfo[1].KettoNum; // 相手馬2血統登録番号
dr[jvdds.UMA_RACE.Bamei2Column] = raceUmaDat.ChakuUmaInfo[1].Bamei; // 相手馬2馬名
dr[jvdds.UMA_RACE.KettoNum3Column] = raceUmaDat.ChakuUmaInfo[2].KettoNum; // 相手馬3血統登録番号
dr[jvdds.UMA_RACE.Bamei3Column] = raceUmaDat.ChakuUmaInfo[2].Bamei; // 相手馬3馬名
dr[jvdds.UMA_RACE.TimeDiffColumn] = raceUmaDat.TimeDiff; // タイム差
dr[jvdds.UMA_RACE.RecordUpKubunColumn] = raceUmaDat.RecordUpKubun; // レコード更新区分
dr[jvdds.UMA_RACE.DMKubunColumn] = raceUmaDat.DMKubun; // マイニング区分
dr[jvdds.UMA_RACE.DMTimeColumn] = raceUmaDat.DMTime; // マイニング予想走破タイム
dr[jvdds.UMA_RACE.DMGosaPColumn] = raceUmaDat.DMGosaP; // 予測誤差[信頼度]+
dr[jvdds.UMA_RACE.DMGosaMColumn] = raceUmaDat.DMGosaM; // 予測誤差[信頼度]-
dr[jvdds.UMA_RACE.DMJyuniColumn] = raceUmaDat.DMJyuni; // マイニング予想順位
dr[jvdds.UMA_RACE.KyakusituKubunColumn] = raceUmaDat.KyakusituKubun; // 今回レース脚質判定
// 新しい行の場合、jvddsに行を追加
if (bnr == true)
{
jvdds.UMA_RACE.Rows.Add(dr);
}
}
//------------------------------------------------------------------------
// JV-Dataデータセットの馬毎レース情報をJV-Data構造体に格納
//------------------------------------------------------------------------
// [引数]
// dr = 馬毎レース情報[一件]
// raceUmaDat = 馬毎レース情報構造体
//------------------------------------------------------------------------
public static void SetJVDataUmaRaceStructure(DataRow dr, ref JV_SE_RACE_UMA raceUmaDat)
{
// 構造体の配列の初期化
raceUmaDat.Initialize();
// データのセット
raceUmaDat.head.RecordSpec = dr[0].ToString(); // レコード種別
raceUmaDat.head.DataKubun = dr[1].ToString(); // データ区分
string str1 = dr[2].ToString();
raceUmaDat.head.MakeDate.SetDataB(Str2Byte(ref str1)); // データ作成年月日
raceUmaDat.id.Year = dr[3].ToString(); // 開催年
raceUmaDat.id.MonthDay = dr[4].ToString(); // 開催月日
raceUmaDat.id.JyoCD = dr[5].ToString(); // 競馬場コード
raceUmaDat.id.Kaiji = dr[6].ToString(); // 開催回[第N回]
raceUmaDat.id.Nichiji = dr[7].ToString(); // 開催日目[N日目]
raceUmaDat.id.RaceNum = dr[8].ToString(); // レース番号
raceUmaDat.Wakuban = dr[9].ToString(); // 枠番
raceUmaDat.Umaban = dr[10].ToString(); // 馬番
raceUmaDat.KettoNum = dr[11].ToString(); // 血統登録番号
raceUmaDat.Bamei = dr[12].ToString(); // 馬名
raceUmaDat.UmaKigoCD = dr[13].ToString(); // 馬記号コード
raceUmaDat.SexCD = dr[14].ToString(); // 性別コード
raceUmaDat.HinsyuCD = dr[15].ToString(); // 品種コード
raceUmaDat.KeiroCD = dr[16].ToString(); // 毛色コード
raceUmaDat.Barei = dr[17].ToString(); // 馬齢
raceUmaDat.TozaiCD = dr[18].ToString(); // 東西所属コード
raceUmaDat.ChokyosiCode = dr[19].ToString(); // 調教師コード
raceUmaDat.ChokyosiRyakusyo = dr[20].ToString(); // 調教師名略称
raceUmaDat.BanusiCode = dr[21].ToString(); // 馬主コード
raceUmaDat.BanusiName = dr[22].ToString(); // 馬主名
raceUmaDat.Fukusyoku = dr[23].ToString(); // 服色標示
raceUmaDat.reserved1 = dr[24].ToString(); // 予備
raceUmaDat.Futan = dr[25].ToString(); // 負担重量
raceUmaDat.FutanBefore = dr[26].ToString(); // 変更前負担重量
raceUmaDat.Blinker = dr[27].ToString(); // ブリンカー使用区分
raceUmaDat.reserved2 = dr[28].ToString(); // 予備
raceUmaDat.KisyuCode = dr[29].ToString(); // 騎手コード
raceUmaDat.KisyuCodeBefore = dr[30].ToString(); // 変更前騎手コード
raceUmaDat.KisyuRyakusyo = dr[31].ToString(); // 騎手名略称
raceUmaDat.KisyuRyakusyoBefore = dr[32].ToString(); // 変更前騎手名略称
raceUmaDat.MinaraiCD = dr[33].ToString(); // 騎手見習コード
raceUmaDat.MinaraiCDBefore = dr[34].ToString(); // 変更前騎手見習コード
raceUmaDat.BaTaijyu = dr[35].ToString(); // 馬体重
raceUmaDat.ZogenFugo = dr[36].ToString(); // 増減符号
raceUmaDat.ZogenSa = dr[37].ToString(); // 増減差
raceUmaDat.IJyoCD = dr[38].ToString(); // 異常区分コード
raceUmaDat.NyusenJyuni = dr[39].ToString(); // 入線順位
raceUmaDat.KakuteiJyuni = dr[40].ToString(); // 確定着順
raceUmaDat.DochakuKubun = dr[41].ToString(); // 同着区分
raceUmaDat.DochakuTosu = dr[42].ToString(); // 同着頭数
raceUmaDat.Time = dr[43].ToString(); // 走破タイム
raceUmaDat.ChakusaCD = dr[44].ToString(); // 着差コード
raceUmaDat.ChakusaCDP = dr[45].ToString(); // +着差コード
raceUmaDat.ChakusaCDPP = dr[46].ToString(); // ++着差コード
raceUmaDat.Jyuni1c = dr[47].ToString(); // 1コーナーでの順位
raceUmaDat.Jyuni2c = dr[48].ToString(); // 2コーナーでの順位
raceUmaDat.Jyuni3c = dr[49].ToString(); // 3コーナーでの順位
raceUmaDat.Jyuni4c = dr[50].ToString(); // 4コーナーでの順位
raceUmaDat.Odds = dr[51].ToString(); // 単勝オッズ
raceUmaDat.Ninki = dr[52].ToString(); // 単勝人気順
raceUmaDat.Honsyokin = dr[53].ToString(); // 獲得本賞金
raceUmaDat.Fukasyokin = dr[54].ToString(); // 獲得付加賞金
raceUmaDat.reserved3 = dr[55].ToString(); // 予備
raceUmaDat.reserved4 = dr[56].ToString(); // 予備
raceUmaDat.HaronTimeL4 = dr[57].ToString(); // 後4ハロンタイム
raceUmaDat.HaronTimeL3 = dr[58].ToString(); // 後3ハロンタイム
raceUmaDat.ChakuUmaInfo[0].KettoNum = dr[59].ToString(); // 相手馬1血統登録番号
raceUmaDat.ChakuUmaInfo[0].Bamei = dr[60].ToString(); // 相手馬1馬名
raceUmaDat.ChakuUmaInfo[1].KettoNum = dr[61].ToString(); // 相手馬2血統登録番号
raceUmaDat.ChakuUmaInfo[1].Bamei = dr[62].ToString(); // 相手馬2馬名
raceUmaDat.ChakuUmaInfo[2].KettoNum = dr[63].ToString(); // 相手馬3血統登録番号
raceUmaDat.ChakuUmaInfo[2].Bamei = dr[64].ToString(); // 相手馬3馬名
raceUmaDat.TimeDiff = dr[65].ToString(); // タイム差
raceUmaDat.RecordUpKubun = dr[66].ToString(); // レコード更新区分
raceUmaDat.DMKubun = dr[67].ToString(); // マイニング区分
raceUmaDat.DMTime = dr[68].ToString(); // マイニング予想走破タイム
raceUmaDat.DMGosaP = dr[69].ToString(); // 予測誤差[信頼度]+
raceUmaDat.DMGosaM = dr[70].ToString(); // 予測誤差[信頼度]-
raceUmaDat.DMJyuni = dr[71].ToString(); // マイニング予想順位
raceUmaDat.KyakusituKubun = dr[72].ToString(); // 今回レース脚質判定
}
//------------------------------------------------------------------------
// データソースの指定テーブルのデータをDBに接続して全件削除
//------------------------------------------------------------------------
// [引数]
// tabName = 削除対象テーブル名
// [戻り値]
// Integer = 削除件数
//------------------------------------------------------------------------
public static int deleteDBTable(string tabName, string connectionString)
{
// コネクション定義
OleDbConnection cn = new OleDbConnection();
// データアダプタ定義
OleDbDataAdapter da = new OleDbDataAdapter();
try
{
// 接続情報の設定
cn.ConnectionString = connectionString;
// 削除用コマンドの設定
da.DeleteCommand = new OleDbCommand();
da.DeleteCommand.CommandText = "DELETE FROM " + tabName; // テーブル全件削除
da.DeleteCommand.Connection = cn;
// DB接続
cn.Open();
// 削除実施
return da.DeleteCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
// エラーメッセージ表示
Debug.WriteLine(ex.Message);
return -1;
}
finally
{
// DB切断
cn.Close();
// 後処理
cn.Dispose(); // コネクションリソースの解放
da.Dispose(); // データアダプタリソースの解放
}
}
}
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics; // Debug クラス使用のために必要
using static JVData_Struct; // JVData_Struct クラス使用のために必要
using static basADOUtility; // basADOUtility クラス使用のために必要
namespace WindowsFormsApp
{
public partial class frmMain : Form
{
private int nDownloadCount; // JVOpen 総ダウロードファイル数
private bool JVOpenFlg; // JVOpen 状態フラグ Opne時=True
private clsCodeConv objCodeConv; // コード変換インスタンス
public frmMain()
{
InitializeComponent();
}
private void mnuConfJV_Click(object sender, EventArgs e)
{
try
{
// リターンコード
int nReturnCode;
// 設定画面表示
nReturnCode = AxJVLink1.JVSetUIProperties();
if (nReturnCode != 0)
{
MessageBox.Show("JVSetUIPropertiesエラー コード:" + nReturnCode + ":", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
}
}
private void frmMain_Load(object sender, EventArgs e)
{
string sid;
int nReturnCode;
// 引数設定
sid = "Test";
// JVLink 初期化
nReturnCode = AxJVLink1.JVInit(sid);
// エラー判定
if (nReturnCode != 0)
{
MessageBox.Show("JVInit エラー コード:" + nReturnCode + ":", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
Cursor = System.Windows.Forms.Cursors.Default;
}
// コード変換インスタンス生成
objCodeConv = new clsCodeConv();
// パスを指定し、コードファイルを読込む
objCodeConv.FileName = Application.StartupPath + @"\CodeTable.csv";
}
private void btnGetJVData_Click(object sender, EventArgs e)
{
int nReturnCode;
// JV - Dataデータセット
DataDataSet jvdds = new DataDataSet();
// レース詳細のテーブルアダプタ
DataDataSetTableAdapters.RACETableAdapter raceTA = new DataDataSetTableAdapters.RACETableAdapter();
// 馬毎レース情報のテーブルアダプタ
DataDataSetTableAdapters.UMA_RACETableAdapter umaRaceTA = new DataDataSetTableAdapters.UMA_RACETableAdapter();
try
{
string strDataSpec; // JVOpen: ファイル識別子
string strFromTime; // JVOpen: データ提供日付
int nOption; // JVOpen: オプション
int nReadCount; // JVOpen: 戻り値
/* int nDownloadCount; */ // JVOpen: 総ダウンロードファイル数
string strLastFileTimestamp; // JVOpen: 最新ファイルのタイムスタンプ゚
int nBuffSize = 110000; // JVRead: データ格納バッファサイズ
int nNameSize = 256; // JVRead: ファイル名サイズ
string strBuff; // JVRead: データ格納バッファ
string strFileName; // JVRead: ダウンロードファイル名
JV_RA_RACE RaceInfo = new JV_RA_RACE(); // レース詳細情報構造体
JV_SE_RACE_UMA RaceUmaInfo = new JV_SE_RACE_UMA(); // 馬毎レース情報構造体
// 表示ウィンドウの初期化
rtbData.Clear();
// ボタンの無効化
btnGetJVData.Enabled = false;
// MDBのデータを削除
if (MessageBox.Show("MDBのデータを削除しますか?", "削除確認", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
if (deleteDBTable(jvdds.RACE.TableName, Properties.Settings.Default.DataConnectionString) < 0) return;
if (deleteDBTable(jvdds.UMA_RACE.TableName, Properties.Settings.Default.DataConnectionString) < 0) return;
}
// MDBからデータを取得
raceTA.Fill(jvdds.RACE);
umaRaceTA.Fill(jvdds.UMA_RACE);
if (MessageBox.Show("JV-Linkでデータを取得しますか?", "取得確認", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
// 進捗表示初期設定
tmrDownload.Enabled = false; // タイマー停止
prgDownload.Value = 0; // JVData ダウンロード進捗
prgJVRead.Value = 0; // JVData 読み込み進捗
// 引数設定
strDataSpec = "RACE";
strFromTime = "20050301000000";
nOption = 2;
nReadCount = 0;
nDownloadCount = 0;
// JVLink ダウンロード処理
nReturnCode = AxJVLink1.JVOpen(strDataSpec, strFromTime, nOption, ref nReadCount, ref nDownloadCount, out strLastFileTimestamp);
// エラー判定
if (nReturnCode != 0)
{
MessageBox.Show("JVOpen エラー:" + nReturnCode);
}
else
{
MessageBox.Show(
"戻り値 : " + nReturnCode + "\n" +
"読み込みファイル数 : " + nReadCount + "\n" +
"ダウンロードファイル数 : " + nDownloadCount + "\n" +
"タイムスタンプ : " + strLastFileTimestamp);
// 進捗表示プログレスバー最大値設定
if (nDownloadCount == 0)
{
prgDownload.Maximum = 100; // ダウンロード必要無し
prgDownload.Value = 100;
}
else
{
prgDownload.Maximum = nDownloadCount;
tmrDownload.Enabled = true; // タイマー開始
}
prgJVRead.Maximum = nReadCount;
if (nReadCount > 0)
{
bool flg_exit = false;
do
{
// バックグラウンドでの処理を実行
Application.DoEvents();
// バッファ作成
strBuff = new string('\0', nBuffSize);
strFileName = new string('\0', nNameSize);
// JVRead で1行読み込み
nReturnCode = AxJVLink1.JVRead(out strBuff, out nBuffSize, out strFileName);
// リターンコードにより処理を分枝
switch (nReturnCode)
{
case 0: // 全ファイル読み込み終了
prgJVRead.Value = prgJVRead.Maximum;
flg_exit = true;
break;
case -1: // ファイル切り替わり
prgJVRead.Value = prgJVRead.Value + 1;
break;
case -3: // ダウンロード中
break;
case -201: // JVInit されてない
MessageBox.Show("JVInit が行われていません。");
flg_exit = true;
break;
case -203: // JVOpen されてない
MessageBox.Show("JVOpen が行われていません。");
flg_exit = true;
break;
case -503: // ファイルがない
MessageBox.Show(strFileName + "が存在しません。");
flg_exit = true;
break;
case int ret when ret > 0: // 正常読み込み
// レコード種別 ID の識別
if (strBuff.Substring(0, 2) == "RA")
{
// レース詳細構造体への展開
RaceInfo.SetDataB(ref strBuff);
// 読み込んだ情報をデータセットへ格納する
SetJVDataRaceDataSet(RaceInfo, jvdds);
}
else if (strBuff.Substring(0, 2) == "SE")
{
// 馬毎レース情報構造体への展開
RaceUmaInfo.SetDataB(ref strBuff);
// 読み込んだ情報をデータセットへ格納する
SetJVDataUmaRaceDataSet(RaceUmaInfo, jvdds);
}
else
{
// レース詳細、馬毎レース情報以外は読み飛ばす
AxJVLink1.JVSkip();
}
break;
}
}
while (!flg_exit);
}
// タイマ有効時は、無効化する
if (tmrDownload.Enabled == true)
{
tmrDownload.Enabled = false;
prgDownload.Value = prgDownload.Maximum;
}
// データセットの情報をDBへ反映
if (MessageBox.Show("取得したデータをMDBへ反映しますか?", "反映確認", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
// レース詳細を反映
raceTA.Update(jvdds.RACE);
// 馬毎レース情報を反映
umaRaceTA.Update(jvdds.UMA_RACE);
}
// データセットに格納した各情報を画面に表示
// レース詳細の情報を一行表示
int raceIndex;
DataDataSet.RACERow[] raceDRs; // レース詳細(複数行)格納用
// レース詳細の件数を取得
raceIndex = jvdds.RACE.Count();
// レース詳細が存在しない場合
if (raceIndex == 0)
{
MessageBox.Show("レース情報が存在しません");
}
else
{
// レース詳細の第10レースを検索(複数行)
raceDRs = (DataDataSet.RACERow[])jvdds.RACE.Select("RaceNum = '10'");
if (raceDRs.Length == 0)
{
MessageBox.Show("検索結果が0件です");
}
else
{
// 取得結果の一件目を構造体にセット
SetJVDataRaceStructure(raceDRs[0], ref RaceInfo);
// 画面表示
rtbData.AppendText(
"年:" + RaceInfo.id.Year +
" 月日:" + RaceInfo.id.MonthDay +
" 場:" + objCodeConv.GetCodeName("2001", RaceInfo.id.JyoCD, 1) +
" 回次:" + RaceInfo.id.Kaiji +
" 日次:" + RaceInfo.id.Nichiji +
" R:" + RaceInfo.id.RaceNum +
" レース名:" + RaceInfo.RaceInfo.Ryakusyo10 +
"\n");
// 表示したレース詳細の馬毎レース情報を全馬分表示
DataDataSet.UMA_RACERow[] raceUmaDRs; // 馬毎レース情報(複数行)格納用
// データセットからレース詳細のキーで馬毎レース情報の行(複数行)を検索
raceUmaDRs = (DataDataSet.UMA_RACERow[])jvdds.UMA_RACE.Select(
"Year = '" + RaceInfo.id.Year + "' AND " +
"MonthDay = '" + RaceInfo.id.MonthDay + "' AND " +
"JyoCD = '" + RaceInfo.id.JyoCD + "' AND " +
"Kaiji = '" + RaceInfo.id.Kaiji + "' AND " +
"Nichiji = '" + RaceInfo.id.Nichiji + "' AND " +
"RaceNum = '" + RaceInfo.id.RaceNum + "'");
// 一行ずつ取り出し、画面に表示
foreach (DataDataSet.UMA_RACERow raceUmaDR in raceUmaDRs)
{
// 行の情報を構造体にセット
SetJVDataUmaRaceStructure(raceUmaDR, ref RaceUmaInfo);
// 画面表示
rtbData.AppendText(
" 枠:" + RaceUmaInfo.Wakuban +
" 馬番:" + RaceUmaInfo.Umaban +
" 馬名:" + RaceUmaInfo.Bamei +
" 騎手:" + RaceUmaInfo.KisyuRyakusyo +
"\n");
}
}
}
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
return;
}
finally
{
// JVLink 終了処理
nReturnCode = AxJVLink1.JVClose();
if (nReturnCode != 0)
{
MessageBox.Show("JVClose エラー:" + nReturnCode);
}
// 後処理
jvdds.Dispose(); // JV-Dataデータセットのリソース解放
raceTA.Dispose(); // レース詳細テーブルアダプタのリソース解放
umaRaceTA.Dispose(); // 馬毎レース情報テーブルアダプタのリソース開放
// ボタンの有効化
btnGetJVData.Enabled = true;
}
// 終了メッセージボックス表示
MessageBox.Show("終了しました。");
}
private void tmrDownload_Tick(object sender, EventArgs e)
{
int nReturnCode; // JVLink 返値
// JVLink ダウンロード進捗率
nReturnCode = AxJVLink1.JVStatus(); // ダウンロード済のファイル数を返す
// エラー判定
if (nReturnCode < 0)
{
// エラー
MessageBox.Show("JVStatus エラー:" + nReturnCode);
// タイマー停止
tmrDownload.Enabled = false;
// JVLink 終了処理
nReturnCode = AxJVLink1.JVClose();
if (nReturnCode != 0) MessageBox.Show("JVClse エラー:" + nReturnCode);
}
else if (nReturnCode < nDownloadCount)
{
// ダウンロード中
// プログレス表示
prgDownload.Value = nReturnCode;
}
else if (nReturnCode == nDownloadCount)
{
// ダウンロード完了
// タイマー停止
tmrDownload.Enabled = false;
// プログレス表示
prgDownload.Value = nReturnCode;
}
}
}
}