3990119 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

会社員KNIGHTの趣味三昧(卓球・盆太鼓・色々!)

会社員KNIGHTの趣味三昧(卓球・盆太鼓・色々!)

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Calendar

Category

カテゴリ未分類

(0)

卓球

(1153)

盆太鼓・盆踊り

(403)

トイドローン

(21)

その他

(332)

■■■■■■↓以下は凍結カテゴリー↓■■■■■■

(0)

KATS(自動売買プログラム)

(87)

「VB.NETで自動売買」入門

(24)

本日の取引

(1292)

デイトレ結果(勝ち)

(365)

デイトレ結果(負け)

(591)

夜間取引結果

(15)

今週の取引

(480)

今月の取引

(103)

明日の監視銘柄

(54)

株関連

(55)

草野球

(36)

Archives

Keyword Search

▼キーワード検索

Comments

 KNIGHT@ Re[1]:第1回 日中杯 SpinOnline(WSS団体戦)(04/14) fukufuku1789さんへ いえいえ。むしろ私が…
 fukufuku1789@ Re:第1回 日中杯 SpinOnline(WSS団体戦)(04/14) 一緒に試合に出てくださりありがとうござ…
 KNIGHT@ Re[1]:第15回 朝霧オープン卓球大会(チームマッチ)(01/21) fukufuku1789さんへ お疲れ様でした。今回…
 fukufuku1789@ Re:第15回 朝霧オープン卓球大会(チームマッチ)(01/21) 惜しい試合が多かったですね。 また卓球し…
 KNIGHT@ Re[3]:2023年度台東区オープン年代別後期団体戦(12/10) マニャさんへ コメントどうも有難うござい…
 マニャ@ Re[2]:2023年度台東区オープン年代別後期団体戦(12/10) knightさん ご返信誠にありがとうござい…
 KNIGHT@ Re[1]:今年の卓球を振り返って(12/29) ふくたさんへ お疲れさまでした!沢山ご一…
 ふくた@ Re:今年の卓球を振り返って(12/29) 今年も一年お疲れ様でした!
 ac_knight@ Re[1]:2023年度台東区オープン年代別後期団体戦(12/10) マニャさんへ コメントどうも有難うござい…
 マニャ@ Re:2023年度台東区オープン年代別後期団体戦(12/10) KNIGHTさん 初めまして。 いつも楽しく…

Favorite Blog

kaorin♪FX&I… 働く主婦♪かおりんさん
投資家へ~Mr.Hのふ… HM-kabuさん
2006年2月から株を始… hot_staffさん

Headline News

Rakuten Card

Jan 10, 2009
XML
クリック証券Webサービスについての記事は今回を最終回にするつもりでしたが、今回は
準備も含めて長くなりますので、2回に分けて書きたいと思います。すみません。

前回の記事にgatさんからコメント頂いた事から、一覧形式でのデータをどう扱うかに
ついて悩まれている方がいらっしゃる事が分かりました。
今回の内容が理解出来れば、恐らく他の全ての発注について応用可能だと思います。
保有株一覧の取得です。では早速始めます。

序盤の説明はログインボタンや余力確認ボタンと同様なので割愛させて頂きます。
Form3にボタンを追加後、Textプロパティを「保有株一覧取得」、Nameプロパティを
「HoyuKabuList」
と変更した後でボタンをダブルクリックし、ソースコードを生成しました。

保有株一覧は余力情報のようにダイアログ表示するだけでは済まないのですが
まず最初のステップとして、Webサービスの呼び出しの結果XMLがDataSetに格納すると
どのような状態になるのか確認するために以下のソースコードを記述します。

'保有株一覧の取得
Dim res As WebResponse = HttpPost(baseUrl & "/ws/kabu/hoyukabuTategyokuList.do", "lst=1")
'株式余力情報の取得結果をDataSetに取り込む
Dim ds As New DataSet
Using resStream As Stream = res.GetResponseStream()
  ds.ReadXml(resStream)
End Using
Console.WriteLine(ds.GetXml)


「クリック証券 Webサービス仕様書【株式取引編】- 第2.1.0版 -」
の39ページに記載されている通り、送信パラメータが1つ存在します。一覧指定「lst」です。
必要に応じて1、2、3のいずれかを指定して下さい。
今回は「保有株のみ」の1を設定しています。

記述出来たら一度実行してみて下さい。
保有株一覧取得の前に、ちゃんとログインして下さいね(笑)。

ボタンを押すと「出力」ウィンドウに文字列が表示されます。以下は私の保有株2つの例です。

<hoyukabuTategyokuListResponse>
 <responseStatus>OK</responseStatus>
 <message>保有株、信用建玉一覧の取得が完了しました。</message>
 <hoyukabuTategyokuList>
  <hoyukabuTategyokuItem>
   <shubetsu>1</shubetsu>
   <chumonKano>1</chumonKano>
   <baibai />
   <shijo />
   <koza>2</koza>
   <shinyo>0</shinyo>
   <suryo>300</suryo>
   <chumonSuryo>0</chumonSuryo>
   <tatebi />
   <hensaiKijitsu />
   <tanka>14</tanka>
   <shiharaiShokeihi />
   <uketoriRisoku />
   <tategyokuKey />
   <meigara shokenCode="1844" />
  </hoyukabuTategyokuItem>
  <hoyukabuTategyokuItem>
   <shubetsu>1</shubetsu>
   <chumonKano>1</chumonKano>
   <baibai />
   <shijo />
   <koza>2</koza>
   <shinyo>0</shinyo>
   <suryo>9</suryo>
   <chumonSuryo>0</chumonSuryo>
   <tatebi />
   <hensaiKijitsu />
   <tanka>81</tanka>
   <shiharaiShokeihi />
   <uketoriRisoku />
   <tategyokuKey />
   <meigara shokenCode="2316" />
  </hoyukabuTategyokuItem>
 </hoyukabuTategyokuList>
</hoyukabuTategyokuListResponse>


これはWebサービスの結果XMLを表示したものではなく、
「結果XML→DataSet→XML」と変換したものです。DataSetの中でどんなDataTableとして
保持されているかを確認する事が出来ます。
仕様書に書いている「応答メッセージの例」とは順番が異なっている事にお気付きでしょうか。

このデータはDataSetの中でどういう風に保持されているのでしょうか。
まず「hoyukabuTategyokuListResponse」という名前のDataTableが存在します。
列はresponseStatus」と「message」の2つで、中には1レコードが登録されています。
データは「OK」「保有株、信用建玉一覧の取得が完了しました。」です。
2テーブル目は「hoyukabuTategyokuItem」です。但し、中身はありません。
3テーブル目は「hoyukabuTategyokuItem」で「shubetsu」「chumonKano」など
沢山の列が定義されていて、2銘柄分となる2レコードが登録されています。
最後4テーブル目に「meigara」というテーブルがあり「shokenCode」という列のみ存在します。
データは2レコードです。

こんな具合に登録されているので、中身を確認する事無くDataSetからデータを取得しようと
した時に混乱してしまいます。
でも内容が分かったのでもう安心ですよね?

2つ目のテーブルは何も入っていないので無視します。
1つ目のテーブルは結果ステータスとメッセージですので、画面に一覧を表示した後に
メッセージをダイアログ表示するために使いましょう。
残るは「hoyukabuTategyokuItem」テーブルと「meigara」テーブルです。
2テーブルに分かれていたら見難いので、両方合わせて一覧に表示したいところです。
では画面に一覧形式のデータを表示するにはどうすれば良いでしょうか。
最もよく利用されているのは「DataGridView」です。
表形式で参照出来てデータ数が可変なので便利です。

では、画面にDataGridViewを追加します。ボタンなどのようにツールボックスからForm3に
ドラッグ&ドロップして下さい。
DataGridViewの「Name」プロパティは「HoyuKabuGrid」に変更します。
Form3の大きさやボタンの配置など、見映えが良くなるようにレイアウトし直しましょう。
私はこんな風にしました。

WS000076.JPG

HoyuKabuGridを選択した状態でプロパティ「Anchor」を四方全てにすると、
実行時にFormの大きさを変えたらHoyuKabuGridの大きさもそれに付いて変わってくれるので
便利です。設定しておきましょう。

WS000077.JPG

DataGridViewはDataTableなどをバインド(紐付け)すると、DataTableで定義されている
列の情報をそのまま表示してくれるので便利ですが、今回は独自で設定した列に
手作業でデータを追加していきたいので、まだ列の設定がされていない空のHoyuKabuGridに
設定していきます。
HoyuKabuGridを選択し、右上角の小さい右向き黒三角のボタンをクリックして下さい。

WS000078.JPG

表示される「列の追加」ダイアログを使って列を追加していきますが、この記事では

・証券コード(shokenCode)
・取得単価(tanka)
・保有数量(suryo)


の3つに留めておきます。必要に応じて追加して下さい。
日本語名称は「ヘッダーテキスト」に。ローマ字名は「名前」に。ユーザーが取得した
データを変更する必要は無いので「読み取り専用」のチェックを付けて下さい。
あとのプロパティは変更しなくて結構です。

WS000079.JPG

3つの列が追加出来たら「閉じる」をクリックして下さい。

次に「列の編集」を行います。もし間違って変な列を追加してしまった場合もここで
削除出来ますのでご安心下さい。
ここでは、取得単価と保有数量は数値ですので、見映え良く右詰めで表示したいので
プロパティを変更します。
取得単価を選択した状態で「DefaultCellStyle」の右にある小さなボタンをクリックして下さい。

WS000080.JPG

するとCellStyleビルダが表示されるので「Alignment」の値を「MiddleRight」に変更します。
同様の作業を保有数量に対しても行います。

WS000081.JPG

そして最後に、HoyuKabuGridに対してユーザーがデータを追加する事が出来ないようにします。
HoyuKabuGridを選択してプロパティ「AllowUserToAddRows」を「False」に変更します。
同様にして、プロパティ「RowHeadersVisible」も「False」に変更します。
一番左にある、いわゆる「レコードセレクタ」の列が非表示になります。
今回はデータの取得のみで行を選択する事は無いので不要でしょう。

WS000082.JPG

これでHoyuKabuGridの準備は完了です!
いよいよ取得結果をHoyuKabuGridに格納していく作業を実装します。
保有株一覧取得をダブルクリックするか、ソリューションエクスプローラから「コードの表示」を
クリックしてソースコードを表示します。
先ほどDataSetの中身を確認するために入れた一番下の行はいらないので削除し、その下に
コードを追加していく事になります。


・・・さて今回はここまでです。
メインとなる部分をほったらかして次回に回してしまいますが、ここまで解説すれば
あとは自分で実装出来る方も多いのでは無いかと思います。
とは言え最後はDataSetとDataGridViewの泥臭い作業ですのでちょっとややこしいです。
なるべく早く次の投稿をするつもりですが、時間と気力のある方は挑戦してみて下さい。

現在のソースコードは以下のようになっています。

WS000083.JPG

ではでは。





お気に入りの記事を「いいね!」で応援しよう

Last updated  Jan 10, 2009 02:57:50 PM
コメント(0) | コメントを書く



© Rakuten Group, Inc.