- PR -

クラス内のFunctionプロシージャにて配列を使用する

投稿者投稿内容
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2006-06-21 12:52
こんにちは。いつも参考にさせていただいています。

DBの値を取得して、フォーム上のコンボボックスに表示させるsubプロシージャがあるのですが、繰り返し使用するために、クラスにしようと考えています。

クラス内にFunctionプロシージャをつくり、SQLの条件に合致した値をデータリーダーに格納し、ループさせることまでは出来ているのですが、メンバ変数を配列にしたり、getプロシージャにて呼び出し元に戻す方法が分かりません。

どなたかヒントをお教えいただけないでしょうか?
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2006-06-21 12:59
引用:

モンジさんの書き込み (2006-06-21 12:52) より:
メンバ変数を配列にしたり、getプロシージャにて呼び出し元に戻す方法が分かりません。



その、「配列にできないメンバ変数」の定義を教えてください。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-21 13:44
引用:

モンジさんの書き込み (2006-06-21 12:52) より:

メンバ変数を配列にしたり、getプロシージャにて呼び出し元に戻す方法が分かりません。


文字列の配列だと仮定して、配列であれば、

コード:

    Public Function GetStringArray() As String()
        Dim returnStrings As String()
          :
          :
        Return returnStrings
    End Function


でしょうし、コレクションであれば、

コード:

    Public Function GetStringCollection() As System.Collections.Specialized.StringCollection
        Dim returnStrings As New System.Collections.Specialized.StringCollection()
          :
          :
        Return returnStrings
    End Function


ですよね。

適宜置き換えてみてください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2006-06-21 18:04
一郎さま、じゃんぬねっとさま。レスありがとうございます。

メンバ変数は、Private strHinmei As Stringと宣言しています。
一郎さまの「定義」とはどのようなことでしょうか。(スイマセン)

また、じゃんぬねっとさまのご指摘のように、文字列の配列であります。

Public Function GetStringArray() As String()

dim rs as OleDbDataReader

(rs格納部分は省略)

     While rs.Read()
strHinmei = rs!品名
End While
  
End Function

上記のようなコードなのですが、rs(データリーダー)に格納したデータが複数あるのですが、上記のコードですと1つしかstrHinmeiに代入できないため、配列を使おうと思ったのですが、その際にどのようにすればよいかで迷っております。

因みに、strHinmeiの値は、getプロシージャにて呼び出し元に返しております。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-06-21 18:10
strHinmeiをArrayListにするのが一番簡単かと。
Functionの戻り値にする場合は
return directcast(strHinmei.ToArray(gettype(string)), string())
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-06-21 18:11
引用:

モンジさんの書き込み (2006-06-21 18:04) より:
上記のコードですと1つしかstrHinmeiに代入できないため、配列を使おうと思ったのですが、その際にどのようにすればよいかで迷っております。


まことに失礼ながら質問してくるようなレベルじゃないような気がする・・・

とりあえず。基礎は勉強しようぜ。な!
http://www.google.co.jp/search?hl=ja&q=VB.NET+%E9%85%8D%E5%88%97&lr=
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2006-06-22 10:38
burton999さん、レスありがとうございます。

strHinmeiをarraylistにし、

while rs.read()
strHinmei(rs!品名)
end while

で、格納はできたのですが、
return directcast(strHinmei.ToArray(gettype(string)), string()) で、
「キャストは有効ではありません」とのエラーが出てしまいました。

これは呼び出し側の問題でしょうか。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-06-22 10:46
ArrayListに格納した、適切な型にキャストしてください。
というよりも、ぶさいくろう氏がおっしゃっているように基礎を勉強しましょう。

スキルアップ/キャリアアップ(JOB@IT)