tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルデータセットにソートをかけfor文でまわす方法
記事No5369
投稿日: 2007/04/19(Thu) 11:16
投稿者
データセットに日付でソートをかけて、for文でまわしたいと思います。
for each ではなく、for文でカウントアップさせてまわしたいのですが、宣言の仕方が
よくわかりません。

Dim icount As Integer = 0

Dim dvSort As DataView = New DataView(ds.受注予定データ)
dvSort.Sort = "出荷予定日,スプレッド行NO"
  For drv = icount To ds.受注予定データ.Rows.Count

[ツリー表示へ]
タイトルRe: データセットにソートをかけfor文でまわす方法
記事No5370
投稿日: 2007/04/19(Thu) 11:19
投稿者
中途半端なところで間違えて投稿してしまいました。すみません。

データセットに日付でソートをかけて、for文でまわしたいと思います。

for each ではなく、for文でカウントアップさせてまわしたいのですが、宣言の仕方が
よくわかりません。

Dim icount As Integer = 0

Dim dvSort As DataView = New DataView(ds.受注予定データ)
 dvSort.Sort = "出荷予定日,スプレッド行NO"
  For drv = icount To ds.受注予定データ.Rows.Count
            ’’処理
     next drv

このとき、ソートされたデータビューの行の宣言の仕方がわかりません。
for eachのときは、For Each drv As DataRowView In dvSort でいけてたのですが
for文のときはどうなるのでしょうか?
初歩的なことで申し訳ありませんが、どなたかご教授くださいませ。

よろしくお願いします。

[ツリー表示へ]
タイトルRe: データセットにソートをかけfor文でまわす方法
記事No5373
投稿日: 2007/04/19(Thu) 11:51
投稿者魔界の仮面弁士
> データセットに日付でソートをかけて、for文でまわしたいと思います。
ん? DataSet ではなく、DataTable なのでは。

> Dim dvSort As DataView = New DataView(ds.受注予定データ)
> dvSort.Sort = "出荷予定日,スプレッド行NO"
ここまでは OK 。

>   For drv = icount To ds.受注予定データ.Rows.Count
ここが NG。
dvSort.Count や、dvSort(drv) などでアクセスしましょう。

[ツリー表示へ]
タイトルRe^2: データセットにソートをかけfor文でまわす方法
記事No5374
投稿日: 2007/04/19(Thu) 12:04
投稿者
魔界の仮面弁士さんありがとうございます。(^^)

> >   For drv = icount To ds.受注予定データ.Rows.Count
> ここが NG。
> dvSort.Count や、dvSort(drv) などでアクセスしましょう。

この部分ですが、
for t = icount to dvSort.Count
にして、まわしている行NOのレコードをとってくることってできますでしょうか??

drv(icount)みたいな感じで取得したいのですが・・・。

1レコードの処理が終わったらicountをインクリメントして、次にfor文に戻るときは
icountがインクリメントされている状態(続きから)まわしていきたいのです。
Dim drv() As DataRowView in dvSort
みたいな感じで宣言して
drv(1).Row を取得したら1行目のレコードがとってこれる、みたいなことは出来ないですか??

ちょっとややこしいことになってすみません><。 

[ツリー表示へ]
タイトルRe^3: データセットにソートをかけfor文でまわす方法
記事No5378
投稿日: 2007/04/19(Thu) 14:59
投稿者魔界の仮面弁士
> drv(icount)みたいな感じで取得したいのですが・・・。
drv(icount)みたいな感じ、との事ですが、その意味が理解できませんでした。

もともとのコードは、
>>> For drv = icount To ds.受注予定データ.Rows.Count
でしたよね。
drv も icount も整数型なので、drv(icount) とは書けない気がするのですが…。


> for t = icount to dvSort.Count
> にして、まわしている行NOのレコードをとってくることってできますでしょうか??
「まわしている行NOのレコード」の意味がつかめなかったのですが、そのループであれば、
dvSort(t - 1).Row で、レコードにアクセスできますし、タイトルにある
『ソートをかけfor文でまわす』という条件も満たせるかと思いますよ。
(上記パターンの場合、icount の値は 1 以上の整数にする必要がありますね)


> Dim drv() As DataRowView in dvSort
> みたいな感じで宣言して
「みたいな感じ」との事ですが、どのような結果になることを期待されているのでしょうか?

上記のコードはコンパイルすら通らないので判断に困りますが、dvSort を DataView として、
「For Each drv As DataRowView In dvSort」を For〜Next による表現にしたいだけなら、
先に書いたように「For rowViewIndex = 0 To dvSort.Count - 1」などとすれば、
「dvSort(rowViewIndex).Row」で、DataRow にアクセスできますよね。

> 1レコードの処理が終わったらicountをインクリメントして、
インクリメント対象となる「icount」が、どのような意味を持つ変数なのかはわかりませんが、
単にインクリメントするだけなら、特に難しい事は無いのでは。

> 次にfor文に戻るときは
ここでいう「戻る」とは、For〜Next ループ内での処理時に、Nextに到達した場合や
Continue For ステートメントを呼び出した場合のことを想定されているのでしょうか?

> icountがインクリメントされている状態(続きから)まわしていきたいのです。
コードの全体像が見えないのですが、それらの処理の、どの部分で困っているのでしょうか?

[ツリー表示へ]