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

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

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

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

PR

Calendar

Category

カテゴリ未分類

(0)

卓球

(1152)

盆太鼓・盆踊り

(402)

トイドローン

(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 12, 2009
XML
今回は保有銘柄一覧取得の続きです。
前回が途中で終わっているので、今回はなるべく早く投稿した方が良いと思い
3連休中にアップする事にしていました。
<その7>を読んでない方は先にお読み下さい。

これから実装するソースコードは、Webサービスの応答XMLを元に作成した
DataSetからHoyuKabuGridというDataGridViewにデータを格納する
事でした。

「保有株一覧取得」ボタンをクリックする度にデータを格納していたら
件数がどんどん増えていきます。
もしかしたら前回ボタンを押した時から今回押す時までに保有銘柄を売っていたら
逆にデータが減る可能性もあります。
なので、ボタンがクリックされたらまずDataGridViewのデータをクリアする事から
始めないといけません。こう書きます。

'最初にDataGridViewをクリアする
HoyuKabuGrid.Rows.Clear()


「Rows」というプロパティは、DataGridViewの全行の集まり(コレクション)を表します。
それに対するClear()メソッドは、全ての行を削除します。

次はいよいよDataSetからの項目移送です。
設定する項目は証券コード、取得単価、保有数量でした。
取得単価と保有数量はhoyukabuTategyokuItemテーブルに。
一方証券コードはmeigaraテーブルに入っています。
どちらも保有する銘柄の数だけデータが存在し、両テーブルの件数が違うという事は
絶対にありません。
なので、どちらかのテーブルの件数を基準にして、何行目を
指しているかを合わせて項目移送して行けば良いです。
基準とするテーブルはどちらのテーブルでも構いません。今回は証券コードが
入っているmeigaraテーブルを元にループする事にします。
全行をループする時には「For~Each」という構文で書くとシンプルなのですが、
ループ内で「今何行目を処理しているか」を取得するには通常のFor文を使って
回す方が良いのでそちらを使います。このように書きます。

'保有銘柄の数だけループする
For i As Integer = 0 To ds.Tables("meigara").Rows.Count - 1


Next


1行目の最後まで打ってEnterを押すと「Next」は勝手にコーディングされるので
活用して下さい。それ以外のコードも、入力途中で候補が出ます。
CTRL+スペースでも出せますので、入力速度アップと間違い防止のため、是非
補完機能(インテリセンス)を使われる事をお勧めします。

この文は、iという変数を0から「meigaraテーブルの行数-1」まで回すという意味です。
なぜ-1かというと、.NETの配列の添え字は0から始まるからです。
例えばデータが5行だと「0行目から4行目」という風に表されます。
なので、n行の時0からn-1までループするためにこう書いています。

このループの中で、3つの項目を移送していきます。
HoyuKabuGridに直接移送しても良いのですが、1行が長くなると何をしているか
後で読みにくくなるので、一旦各DataTableの該当行(DataRow)を取得してから
項目移送する事にします。For文の中に2行追加します。

Dim row1 As DataRow = ds.Tables("meigara").Rows(i)
Dim row2 As DataRow = ds.Tables("hoyukabuTategyokuItem").Rows(i)


「row1」や「row2」は変数名なので何でも構いません。
DataSet「ds」「Tables」プロパティはDataTableを表し「Rows」プロパティは
そのテーブルの全行を表すんでした。そのi番目というカッコを付ける事によって
ある1行を表す事になります。型はDataRowです。
両テーブルとも同じ添え字を使っているので、同じ保有銘柄を指しています。

あとはrow1とrow2の3項目をHoyuKabuGridに移送すれば終わりです。
HoyuKabuGridは空なので、ループを回す毎に行を追加しなければなりません。
行を追加するためにはDataGridViewの「Rows」プロパティにあるAdd()メソッド
使うのですが、その方法はいくつものバリエーションがあります。
「シグニチャ(シグネチャ)」というのですが、ご存じない方は無視して下さい。
今回は、全く引数の無いAdd()メソッドを使用し、空の新規行を追加した上で
その行の項目にデータを移送するという方法を取ります。
まずはHoyuKabuGridへの行の追加です。

HoyuKabuGrid.Rows.Add()

そして3項目の移送はこうなります。

HoyuKabuGrid.Rows(i).Cells("shokenCode").Value = row1.Item("shokenCode")
HoyuKabuGrid.Rows(i).Cells("tanka").Value = row2.Item("tanka")
HoyuKabuGrid.Rows(i).Cells("suryo").Value = row2.Item("suryo")


例えば1行目は、HoyuKabuGridのi行目(今追加した行)の「shokenCode」という
セルの値に、row1の列「shokenCode」を移送する
という意味です。
残り2つの項目は移送元のDataRowが違うのでrow2になっている事にご注意下さい。

これで保有株一覧を画面に表示する事が出来ます!
でも、せっかくですから最後に結果メッセージをダイアログ表示します。
これは何度もやってますので皆さん大丈夫ですね?

MessageBox.Show(ds.Tables("hoyukabuTategyokuListResponse").Rows(0).Item("message"))

では早速実行し、ログイン後に「保有株一覧取得」をクリックしてみて下さい。
どうですか?保有株の一覧がDataGridViewに表示されましたか?

WS000084.JPG

HoyuKabuList_Click()メソッドは最終的に以下のようになりました。

WS000085.JPG


これで私が予定していた「クリック証券のWebサービスで発注する」編は終わりました。
今は次の予定もありません。
「楽天RSSでリアルタイム情報を取得する」とのペアにより、自動売買プログラムを
作る為にどんな事をするのか全く分からなかった方のとっかかりにはなったのでは
無いかと自負しています。
ところがご紹介した内容は本当に基礎の基礎です。
これらの内容を元にご自分でプログラムの勉強をして、本当に自動売買プログラムが
開発出来るスキルを身に付けて欲しいと思います。

ところで、恐らくこのブログをご覧の方の中には、実現方法が分からなかったり
解決出来ないバグが出るなど、色々な事で悩まれている方がいらっしゃるのでは
無いかと推測します。
私が答えられる事であれば、時間の許す限り回答していきたいと思いますので、
遠慮なくブログ上にコメント頂けたらと思います。
また「こんな内容で入門編を連載して欲しい」などの要望もお待ちしております。
私の気力があれば連載させて頂くかも知れません(笑)。


宜しくお願いします。





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

Last updated  Jan 12, 2009 02:35:24 AM
コメント(0) | コメントを書く



© Rakuten Group, Inc.