質問するログイン新規登録

質問編集履歴

4

いただいた回答を受けての改善、その実行結果を記載

2016/09/02 08:37

投稿

taketake221
taketake221

スコア17

title CHANGED
File without changes
body CHANGED
@@ -6,19 +6,17 @@
6
6
 
7
7
  ![テーブル構成 : tbl_valueTest](493849a76961cf9d120bfde94fe58f26.jpeg)
8
8
 
9
+ ※いただいた回答のご指摘を反映させ、変数宣言でDouble型からDecimal型へ変更、ラベルコントロールへの表示処理にあたってString型への変換を行なって実行しましたが、
9
- 実行結果がいずれも 0 と表示されており正しい結果は得れていません
10
+ valueAのみ正しい結果が表示され、valueBかvalueFまでの値につては依然 0 のまでした
10
11
 
11
- ※ご指摘を受け、SQL文を改善後、Catch ex As Exception 部分の内容を確認すると、
12
+ ![改善後実行結果](97ec426c5258f076259c5b99474e10be.png)
12
- 「型 'System.Decimal' のオブジェクトを型 'System.String' にキャストできません」
13
- と表示されていました。
14
13
 
14
+ 配列に読み込む部分で繰り返し処理に問題があるのかとも考えましたが、
15
- テーブルの列のデータ型設定の問題なんでしょうか。
15
+ 初級者ゆえ解決策が思い浮びません
16
16
 
17
+ 関数定義と呼び出し、取得した値を配列に読み込む処理の記述をはじめ、誤りをご指摘いただきたいです。
18
+ どうぞよろしくお願いします。
17
19
 
18
- また、関数定義と呼び出し、また取得した値を配列に読み込む処理の記述について不安があるため、誤りほかご指摘いただきたいです。
19
-
20
- 初級者ですので、どうぞよろしくお願いします。
21
-
22
20
  ```ここに言語を入力
23
21
 
24
22
  Imports System.Data.SqlClient
@@ -29,19 +27,19 @@
29
27
  Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
30
28
 
31
29
  'SQLserverから値を取得する関数呼び出し
32
- Dim values() As Double = Getvalues()
30
+ Dim values() As Decimal = Getvalues()
33
31
 
34
- valueA_Lbl.Text = values(0)
32
+ valueA_Lbl.Text = values(0).ToString()
35
- valueB_Lbl.Text = values(1)
33
+ valueB_Lbl.Text = values(1).ToString()
36
- valueC_Lbl.Text = values(2)
34
+ valueC_Lbl.Text = values(2).ToString()
37
- valueD_Lbl.Text = values(3)
35
+ valueD_Lbl.Text = values(3).ToString()
38
- valueE_Lbl.Text = values(4)
36
+ valueE_Lbl.Text = values(4).ToString()
39
- valueF_Lbl.Text = values(5)
37
+ valueF_Lbl.Text = values(5).ToString()
40
38
 
41
39
  End Sub
42
40
 
43
41
  'データベースから値を取得する関数
44
- Private Function Getvalues() As Double()
42
+ Private Function Getvalues() As Decimal()
45
43
 
46
44
  Dim result(5) As Double
47
45
 
@@ -62,16 +60,14 @@
62
60
  Dim command As New SqlCommand(SQL, connection)
63
61
 
64
62
  Try
65
-
66
63
  connection.Open()
67
-
68
64
  Dim dr As SqlDataReader = command.ExecuteReader()
69
65
 
70
66
  ---値を配列に読み込む
71
67
  Dim Count As Integer = 0
72
- Dim valuelist(5) As Double
68
+ Dim valuelist(5) As Decimal
73
69
  While (dr.Read())
74
- valuelist(Count) = dr.GetString(Count)
70
+ valuelist(Count) = dr.GetDecimal(Count)
75
71
  Count = Count + 1
76
72
  End While
77
73
 

3

書式改善

2016/09/02 08:37

投稿

taketake221
taketake221

スコア17

title CHANGED
File without changes
body CHANGED
@@ -1,15 +1,11 @@
1
1
  ※Visual Studio 2013、SQL server 2012を使用。OSはWindows7です。
2
-
3
- 初級者です。記述不足等ありましたら申し訳ありません、ご指摘ください。
4
2
  以下のようなテーブルから取得した値を関数側で配列に格納し、その配列を戻り値として返したいです。
5
-
6
3
  取得する値はvalueA から valueFまでの数値のみ(フィールドのデータ型はdecimal(3,2))で、
7
4
  ソース上は確認用にラベルコントロールに値を表示させるよう記述していますが、
8
5
  本来メイン部分では別の値との相関係数算出に使用するつもりです。
9
6
 
10
7
  ![テーブル構成 : tbl_valueTest](493849a76961cf9d120bfde94fe58f26.jpeg)
11
8
 
12
- 以下、書籍やネット上の情報を参考に見よう見まねで記述したソースコードです。
13
9
  実行結果がいずれも 0 と表示されており、正しい結果は得られていません。
14
10
 
15
11
  ※ご指摘を受け、SQL文を改善後、Catch ex As Exception 部分の内容を確認すると、
@@ -21,7 +17,7 @@
21
17
 
22
18
  また、関数定義と呼び出し、また取得した値を配列に読み込む処理の記述について不安があるため、誤りほかご指摘いただきたいです。
23
19
 
24
- どうぞよろしくお願いします。
20
+ 初級者ですので、どうぞよろしくお願いします。
25
21
 
26
22
  ```ここに言語を入力
27
23
 

2

記載修正(実装環境を上部へ、ほか)

2016/09/02 07:24

投稿

taketake221
taketake221

スコア17

title CHANGED
@@ -1,1 +1,1 @@
1
- SQLserverから取得した値を配列に格納し、戻り値にしたいです。
1
+ SQLserverから取得した値を配列に格納し、関数の戻り値にしたいです。
body CHANGED
@@ -1,3 +1,5 @@
1
+ ※Visual Studio 2013、SQL server 2012を使用。OSはWindows7です。
2
+
1
3
  初級者です。記述不足等ありましたら申し訳ありません、ご指摘ください。
2
4
  以下のようなテーブルから取得した値を関数側で配列に格納し、その配列を戻り値として返したいです。
3
5
 
@@ -10,19 +12,16 @@
10
12
  以下、書籍やネット上の情報を参考に見よう見まねで記述したソースコードです。
11
13
  実行結果がいずれも 0 と表示されており、正しい結果は得られていません。
12
14
 
13
- 特に関数定義と呼び出し、また取得した値を配列に読み込む処理の記述について不安があるため、
14
- 誤りほかご指摘いただきたいです。
15
-
16
- ※SQL文を改善後、Catch ex As Exception 部分の内容を確認すると、
15
+ ご指摘を受け、SQL文を改善後、Catch ex As Exception 部分の内容を確認すると、
17
16
  「型 'System.Decimal' のオブジェクトを型 'System.String' にキャストできません」
18
17
  と表示されていました。
19
18
 
20
19
  テーブルの列のデータ型設定の問題なんでしょうか。
21
20
 
22
21
 
23
- 具体性欠ける質問ですが、どうぞよろしくお願します。
22
+ また、関数定義と呼び出し、また取得した値を配列読み込む処理の記述について不安あるため誤りほかご指摘ただきたいです。
24
23
 
25
- ※Visual Studio 2013、SQL server 2012を使用。OSはWindows7です。
24
+ どうぞよろしくお願いします。
26
25
 
27
26
  ```ここに言語を入力
28
27
 

1

いただいた回答を受けて、発生している問題、テーブルの列のデータ型を記載。

2016/09/02 07:17

投稿

taketake221
taketake221

スコア17

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  初級者です。記述不足等ありましたら申し訳ありません、ご指摘ください。
2
2
  以下のようなテーブルから取得した値を関数側で配列に格納し、その配列を戻り値として返したいです。
3
3
 
4
- 取得する値はvalueA から valueFまでの数値のみで、
4
+ 取得する値はvalueA から valueFまでの数値のみ(フィールドのデータ型はdecimal(3,2))で、
5
5
  ソース上は確認用にラベルコントロールに値を表示させるよう記述していますが、
6
6
  本来メイン部分では別の値との相関係数算出に使用するつもりです。
7
7
 
@@ -13,6 +13,13 @@
13
13
  特に関数定義と呼び出し、また取得した値を配列に読み込む処理の記述について不安があるため、
14
14
  誤りほかご指摘いただきたいです。
15
15
 
16
+ ※SQL文を改善後、Catch ex As Exception 部分の内容を確認すると、
17
+ 「型 'System.Decimal' のオブジェクトを型 'System.String' にキャストできません」
18
+ と表示されていました。
19
+
20
+ テーブルの列のデータ型設定の問題なんでしょうか。
21
+
22
+
16
23
  具体性に欠ける質問ですが、どうぞよろしくお願いします。
17
24
 
18
25
  ※Visual Studio 2013、SQL server 2012を使用。OSはWindows7です。
@@ -49,13 +56,13 @@
49
56
  Using connection As New SqlConnection(cnStr)
50
57
 
51
58
  Dim SQL As String
52
- '特定の「FacilityID」の日付が最新のレコードを取得したいです
59
+ '特定の「FacilityID」の日付が最新のレコードを取得したいです(改善部分)
53
60
  SQL = "SELECT valueA, valueB, valueC, valueD, valueE, valueF" &
54
- "from tbl_valueTest as A" &
61
+ " from tbl_valueTest as A" &
55
- "WHERE Exists(SELECT * from tbl_valueTest" &
62
+ " WHERE Exists(SELECT * from tbl_valueTest" &
56
- "group by FacilityID" &
63
+ " group by FacilityID" &
57
- "having FacilityID = A.FacilityID and MAX(date) = A.date)" &
64
+ " having FacilityID = A.FacilityID and MAX(date) = A.date)" &
58
- "and FacilityID = 1"
65
+ " and FacilityID = 1"
59
66
 
60
67
  Dim command As New SqlCommand(SQL, connection)
61
68