※Visual Studio 2013、SQL server 2012を使用。OSはWindows7です。
以下のようなテーブルから取得した値を関数側で配列に格納し、その配列を戻り値として返したいです。
取得する値はvalueA から valueFまでの数値のみ(フィールドのデータ型はdecimal(3,2))で、
ソース上は確認用にラベルコントロールに値を表示させるよう記述していますが、
本来メイン部分では別の値との相関係数算出に使用するつもりです。
※いただいた回答のご指摘を反映させ、変数宣言でDouble型からDecimal型へ変更、ラベルコントロールへの表示処理にあたってString型への変換を行なって実行しましたが、
valueAのみ正しい結果が表示され、valueBからvalueFまでの値については依然 0 のままでした。
配列に読み込む部分で繰り返し処理に問題があるのかとも考えましたが、
初級者ゆえ解決策が思い浮かびません。
関数定義と呼び出し、取得した値を配列に読み込む処理の記述をはじめ、誤りをご指摘いただきたいです。
どうぞよろしくお願いします。
Imports System.Data.SqlClient Partial Class Value_get Inherits System.Web.UI.Page Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 'SQLserverから値を取得する関数呼び出し Dim values() As Decimal = Getvalues() valueA_Lbl.Text = values(0).ToString() valueB_Lbl.Text = values(1).ToString() valueC_Lbl.Text = values(2).ToString() valueD_Lbl.Text = values(3).ToString() valueE_Lbl.Text = values(4).ToString() valueF_Lbl.Text = values(5).ToString() End Sub 'データベースから値を取得する関数 Private Function Getvalues() As Decimal() Dim result(5) As Double Dim cnStr As String = System.Configuration.ConfigurationManager. ConnectionStrings("○○○○○○ConnectionString").ConnectionString Using connection As New SqlConnection(cnStr) Dim SQL As String '特定の「FacilityID」の日付が最新のレコードを取得したいです(改善部分) SQL = "SELECT valueA, valueB, valueC, valueD, valueE, valueF" & " from tbl_valueTest as A" & " WHERE Exists(SELECT * from tbl_valueTest" & " group by FacilityID" & " having FacilityID = A.FacilityID and MAX(date) = A.date)" & " and FacilityID = 1" Dim command As New SqlCommand(SQL, connection) Try connection.Open() Dim dr As SqlDataReader = command.ExecuteReader() ---値を配列に読み込む Dim Count As Integer = 0 Dim valuelist(5) As Decimal While (dr.Read()) valuelist(Count) = dr.GetDecimal(Count) Count = Count + 1 End While result = valuelist --- connection.Close() Catch ex As Exception End Try End Using Return result End Function End Class

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/02 08:22
2016/09/02 08:38
2016/09/02 08:53