JRA公式競馬データ配信サービス JRA-VAN Data Lab.

JRA-VAN DataLab.

競馬ソフト開発コーナー

JV-Link 質問箱

一括表示 リストに戻る
タイトルDIFFをDIFNに変更したがUMのフォーマット画が不明
記事No7314
投稿日: 2023/08/15(Tue) 00:55
投稿者がる
4.9.0にアップデートし、DIFFが8/7のデータまでしか提供していないため、新し
いDIFNに変更しましたが、そこで落ちてくるUMのフォーマットに変更があり、
これまでサンプル提供されていたものをもとにしたスクリプト
retval = JVLink1.JVRead(buff, 400000, filename)
If Left(buff, 2) = "UM" Then
Call SetData_UM(buff, mUmData)

On Error GoTo Err_Exist
rs.AddNew
rs.Fields("KettoNo") = mUmData.KettoNum
rs.Fields("DelKubun") = mUmData.DelKubun
rs.Fields("Bamei") = mUmData.Bamei
rs.Fields("SEXCD") = mUmData.SexCD
rs.Fields("KeiroCD") = mUmData.KeiroCD
rs.Fields("Sire") = mUmData.Ketto3Info(0).Bamei
rs.Fields("Dam") = mUmData.Ketto3Info(1).Bamei
rs.Fields("BMS") = mUmData.Ketto3Info(4).Bamei
rs.Fields("EW") = mUmData.TozaiCD
rs.Fields("Stable") = mUmData.ChokyosiRyakusyo
rs.Fields("chaku_1") = mUmData.ChakuSogo.Chakukai
su(0)
rs.Fields("chaku_2") = mUmData.ChakuSogo.Chakukai
su(1)
rs.Fields("chaku_3") = mUmData.ChakuSogo.Chakukai
su(2)
rs.Fields("chaku_4") = mUmData.ChakuSogo.Chakukai
su(3)
rs.Fields("chaku_5") = mUmData.ChakuSogo.Chakukai
su(4)
rs.Fields("chaku_out") = mUmData.ChakuSogo.Chakuk
aisu(5)
rs.Fields("Prize") = mUmData.RuikeiHonsyoHeiti
rs.Fields("MKDateY") = mUmData.head.MakeDate.Year
rs.Fields("MKDateM") = mUmData.head.MakeDate.Mont
h
rs.Fields("MKDateD") = mUmData.head.MakeDate.Day
rs.Update
Err_Exist:
では、新しいUMのデータが思ったとおりに落ちてきません。
13.競走馬マスタの項目を見ても、たとえば父馬の名前を従前では、mUmData.Ke
tto3Info(0).Bameiでは引っ張ってこれますが、新UMでは「72ステイゴールド」
のようになってしまいます。従前どおりデータを引っ張るためにデータフィール
ド名はどこに記述されていますでしょうか?
SDKに付属のドキュメントではわかりませんでした。
ご教示いただけませんでしょうか。

タイトルRe: DIFFをDIFNに変更したがUMのフォーマット画が不明
記事No7315
投稿日: 2023/08/15(Tue) 15:38
投稿者JRA-VANソフトサポート
JRA-VANソフトサポート 吉本です。
DataLab.サービスをご利用頂きまして誠にありがとうございます。

競走馬マスタ(UM)は、繁殖登録番号、生産者コード、生産者名の桁数が
拡張されております。

記載頂いたソースを拝見させて頂きましたところ、
過去にサンプル提供していたソースを参考にされているかと存じます。

そうであれば、SetData_UMメソッド内に以下の変数名が定義されているかと
思われますので、以下に記載している数値の通りIncMidメソッド内の
読込サイズを変更いただければ正常に読み込まれると存じます。

■変数名と変更数値
HansyokuNum :8 →10
BreederCode :6 →8
BreederName :70 →72

以上、よろしくお願い致します。

タイトルRe^2: DIFFをDIFNに変更したがUMのフォーマット画が不明
記事No7316
投稿日: 2023/08/15(Tue) 16:11
投稿者がる
おっしゃるとおり、古いサンプルを流用して作成しております。
ソース全文を以下に貼りますが(コメントはサンプルのままになっていたりし
ます)
当該のメソッドの記述等ございません。

桁数拡張でズレているものだということは理解できました。

もう少し新しそうなサンプルなどございましたら、そちらを見てみたいと思い
ます。


Option Compare Database

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMillisecond
s As Long)

'「JVLink」ボタンを押した処理
Private Sub cmdSetProperties_Click()
On Error GoTo Err_cmdSetProperties_Click
Dim retval As Long

'JVLink設定画面表示
retval = JVLink1.JVSetUIProperties

If retval <> 0 Then
MsgBox "JVSetUIPropertiesでエラーが発生しました(" &am
p; retval & ")"
Exit Sub
End If

Exit_cmdSetProperties_Click:
Exit Sub

Err_cmdSetProperties_Click:
MsgBox Err.Description
Resume Exit_cmdSetProperties_Click

End Sub



'「取り込み」ボタンを押した処理
Private Sub cmdStart_Click()
On Error GoTo Err_cmdStart_Click
Dim retavl As Long
Dim readcount As Long
Dim dlcount As Long
Dim lastfiletimestamp As String
Dim status As Long
Dim buff As String
Dim filename As String
Dim rs As DAO.Recordset

'JVLinkを初期化
Call JVLink1.JVInit("ACCESS2KSAMPLE")

'蓄積系データのRACEを20040101000000以降について取り込み呼び出

retval = JVLink1.JVOpen("DIFN", "20230807000000"
;, 1, readcount, dlcount, lastfiletimestamp)
'retval = JVLink1.JVOpen("DIFF", "2023010100000
0", 1, readcount, dlcount, lastfiletimestamp)
'retval = JVLink1.JVOpen("DIFF", "2023010100000
0", 1, readcount, dlcount, lastfiletimestamp)
If retval < 0 Then
MsgBox "JVOPENでエラーが発生しました(" & retval &
amp; ")"
Exit Sub
End If
Dim mUmData As JV_UM_UMA
status = 0
While status <> dlcount
status = JVLink1.JVStatus
StatusText.Value = dlcount & "ファイル中 " &
status & " ファイルダウンロード完了"
DoEvents
Sleep (120)
Wend
Dim i As Long
i = 0
retval = 1
MsgBox "データをクリアします"
CurrentDb.Execute ("DELETE FROM UM")
' Me.sub_RA.Requery
DoEvents
Set rs = CurrentDb.OpenRecordset("UM")
While retval <> 0
'JVOpenで指定したデータを1レコードずつ取り込み
retval = JVLink1.JVRead(buff, 400000, filename)
If Left(buff, 2) = "UM" Then
'JVData構造体にRAのレコードをセットする
Call SetData_UM(buff, mUmData)

'RA_Sampleテーブルにデータを書き込む
On Error GoTo Err_Exist
rs.AddNew
rs.Fields("KettoNo") = mUmData.KettoNum
rs.Fields("DelKubun") = mUmData.DelKubun
rs.Fields("Bamei") = mUmData.Bamei
rs.Fields("SEXCD") = mUmData.SexCD
rs.Fields("KeiroCD") = mUmData.KeiroCD
rs.Fields("Sire") = mUmData.Ketto3Info(0).Bamei
rs.Fields("Dam") = mUmData.Ketto3Info(1).Bamei
rs.Fields("BMS") = mUmData.Ketto3Info(4).Bamei
rs.Fields("EW") = mUmData.TozaiCD
rs.Fields("Stable") = mUmData.ChokyosiRyakusyo
rs.Fields("chaku_1") = mUmData.ChakuSogo.Chakukai
su(0)
rs.Fields("chaku_2") = mUmData.ChakuSogo.Chakukai
su(1)
rs.Fields("chaku_3") = mUmData.ChakuSogo.Chakukai
su(2)
rs.Fields("chaku_4") = mUmData.ChakuSogo.Chakukai
su(3)
rs.Fields("chaku_5") = mUmData.ChakuSogo.Chakukai
su(4)
rs.Fields("chaku_out") = mUmData.ChakuSogo.Chakuk
aisu(5)
rs.Fields("Prize") = mUmData.RuikeiHonsyoHeiti
rs.Fields("MKDateY") = mUmData.head.MakeDate.Year
rs.Fields("MKDateM") = mUmData.head.MakeDate.Mont
h
rs.Fields("MKDateD") = mUmData.head.MakeDate.Day
rs.Update
Err_Exist:
'必要に応じてデータ更新処理を記述して下さい。
On Error GoTo Err_cmdStart_Click
i = i + 1
End If
Wend
rs.Close
Set rs = Nothing
'一通り読み込みが終わった後はJVCloseを行う
JVLink1.JVClose

' Me.sub_RA.Requery
MsgBox "END"

Exit_cmdStart_Click:
Exit Sub

Err_cmdStart_Click:
MsgBox Err.Description
Resume Exit_cmdStart_Click

End Sub

Private Sub 詳細_Click()

End Sub

タイトルRe^3: DIFFをDIFNに変更したがUMのフォーマット画が不明
記事No7317
投稿日: 2023/08/15(Tue) 17:34
投稿者がる
標準モジュールとして提供されているものの中を変更する必要があるわけですか


こちらの最新版は提供されているのでしょうか?

タイトルRe^2: DIFFをDIFNに変更したがUMのフォーマット画が不明
記事No7318
投稿日: 2023/08/15(Tue) 17:39
投稿者がる
標準モジュールのこちらの変更ということですね。

'****** 11.競走馬マスタ ***********************************
*****

Public Sub SetData_UM(ByVal lBuf As String, ByRef mBuf As JV_UM_UMA
)
Dim bytBuf() As Byte '' Byte列
で処理するためのバッファ

Dim i As Integer '' ループ
カウンタ
Dim j As Integer '' ループ
カウンタ
Dim k As Integer '' ループ
カウンタ
Dim p As Long '' 切り分
け開始位置

bytBuf = StrConv(lBuf, vbFromUnicode)

p = 1
With mBuf
With .head
.RecordSpec = IncMid(bytBuf, p, 2) '' レコー
ド種別
.DataKubun = IncMid(bytBuf, p, 1) '' データ
区分
With .MakeDate
.Year = IncMid(bytBuf, p, 4) '' 年
.Month = IncMid(bytBuf, p, 2) '' 月
.Day = IncMid(bytBuf, p, 2) '' 日
End With ' MakeDate
End With ' head
.KettoNum = IncMid(bytBuf, p, 10) '' 血統登
録番号
.DelKubun = IncMid(bytBuf, p, 1) '' 競走馬
抹消区分
With .RegDate
.Year = IncMid(bytBuf, p, 4) '' 年
.Month = IncMid(bytBuf, p, 2) '' 月
.Day = IncMid(bytBuf, p, 2) '' 日
End With ' RegDate
With .DelDate
.Year = IncMid(bytBuf, p, 4) '' 年
.Month = IncMid(bytBuf, p, 2) '' 月
.Day = IncMid(bytBuf, p, 2) '' 日
End With ' DelDate
With .BirthDate
.Year = IncMid(bytBuf, p, 4) '' 年
.Month = IncMid(bytBuf, p, 2) '' 月
.Day = IncMid(bytBuf, p, 2) '' 日
End With ' BirthDate
.Bamei = IncMid(bytBuf, p, 36) '' 馬名
.BameiKana = IncMid(bytBuf, p, 36) '' 馬名半
角カナ
.BameiEng = IncMid(bytBuf, p, 80) '' 馬名欧

.UmaKigoCD = IncMid(bytBuf, p, 2) '' 馬記号
コード
.SexCD = IncMid(bytBuf, p, 1) '' 性別コ
ード
.HinsyuCD = IncMid(bytBuf, p, 1) '' 品種コ
ード
.KeiroCD = IncMid(bytBuf, p, 2) '' 毛色コ
ード
For i = 0 To 13
With .Ketto3Info(i)
.HansyokuNum = IncMid(bytBuf, p, 8) '' 繁殖登
録番号
.Bamei = IncMid(bytBuf, p, 36) '' 馬名
End With ' Ketto3Info
Next i
.TozaiCD = IncMid(bytBuf, p, 1) '' 東西所
属コード
.ChokyosiCode = IncMid(bytBuf, p, 5) '' 調教師
コード
.ChokyosiRyakusyo = IncMid(bytBuf, p, 8) '' 調教師
名略称
.Syotai = IncMid(bytBuf, p, 20) '' 招待地
域名
.BreederCode = IncMid(bytBuf, p, 6) '' 生産者
コード
.BreederName = IncMid(bytBuf, p, 70) '' 生産者

.SanchiName = IncMid(bytBuf, p, 20) '' 産地名
.BanusiCode = IncMid(bytBuf, p, 6) '' 馬主コ
ード
.BanusiName = IncMid(bytBuf, p, 64) '' 馬主名
.RuikeiHonsyoHeiti = IncMid(bytBuf, p, 9) '' 平地本
賞金累計
.RuikeiHonsyoSyogai = IncMid(bytBuf, p, 9) '' 障害本
賞金累計
.RuikeiFukaHeichi = IncMid(bytBuf, p, 9) '' 平地付
加賞金累計
.RuikeiFukaSyogai = IncMid(bytBuf, p, 9) '' 障害付
加賞金累計
.RuikeiSyutokuHeichi = IncMid(bytBuf, p, 9) '' 平地収
得賞金累計
.RuikeiSyutokuSyogai = IncMid(bytBuf, p, 9) '' 障害収
得賞金累計
With .ChakuSogo
For j = 0 To 5
.Chakukaisu(j) = IncMid(bytBuf, p, 3)
Next j
End With ' ChakuSogo
With .ChakuChuo
For j = 0 To 5
.Chakukaisu(j) = IncMid(bytBuf, p, 3)
Next j
End With ' ChakuChuo
For i = 0 To 6
With .ChakuKaisuBa(i)
For j = 0 To 5
.Chakukaisu(j) = IncMid(bytBuf, p, 3)
Next j
End With ' ChakuKaisuBa
Next i
For i = 0 To 11
With .ChakuKaisuJyotai(i)
For j = 0 To 5
.Chakukaisu(j) = IncMid(bytBuf, p, 3)
Next j
End With ' ChakuKaisuJyotai
Next i
For i = 0 To 5
With .ChakuKaisuKyori(i)
For j = 0 To 5
.Chakukaisu(j) = IncMid(bytBuf, p, 3)
Next j
End With ' ChakuKaisuKyoriu
Next i
For i = 0 To 3
.Kyakusitu(i) = IncMid(bytBuf, p, 3) '' 脚質傾

Next i
.RaceCount = IncMid(bytBuf, p, 3) '' 登録レ
ース数
.crlf = IncMid(bytBuf, p, 2) '' レコー
ド区切り
End With

'バッファ領域解放
Erase bytBuf

End Sub

タイトルRe^3: DIFFをDIFNに変更したがUMのフォーマット画が不明
記事No7319
投稿日: 2023/08/15(Tue) 18:48
投稿者サメの餌
がるさん、こんばんは。

> For i = 0 To 13
> With .Ketto3Info(i)
> .HansyokuNum = IncMid(bytBuf, p, 8) ''
繁殖登
> 録番号
> .Bamei = IncMid(bytBuf, p, 36) ''
馬名
> End With ' Ketto3Info
> Next i

このループ内の繁殖登録番号が8桁になってるのを10桁に修正。


> .BreederCode = IncMid(bytBuf, p, 6) ''
生産者
> コード

生産者コードが6桁になっているのを8桁に修正。

> .BreederName = IncMid(bytBuf, p, 70) ''
生産者
> 名

生産者名が70桁になっているのを72桁に修正。

競走馬マスタの変更点はそんな感じだと思います。ただ、他にも変更点はあり
ますので、お使いのデータによりますが変更点をSDKのJV-Data仕様書で黄色くな
っている部分を確認するとよろしいかと思います。

ウィンドウを閉じる