質問編集履歴
4
いただいた回答を受けての改善、その実行結果を記載
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,29 +14,25 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
+
※いただいた回答のご指摘を反映させ、変数宣言でDouble型からDecimal型へ変更、ラベルコントロールへの表示処理にあたってString型への変換を行なって実行しましたが、
|
18
|
+
|
17
|
-
|
19
|
+
valueAのみ正しい結果が表示され、valueBからvalueFまでの値については依然 0 のままでした。
|
18
20
|
|
19
21
|
|
20
22
|
|
21
|
-
|
23
|
+

|
22
|
-
|
23
|
-
「型 'System.Decimal' のオブジェクトを型 'System.String' にキャストできません」
|
24
|
-
|
25
|
-
と表示されていました。
|
26
24
|
|
27
25
|
|
28
26
|
|
27
|
+
配列に読み込む部分で繰り返し処理に問題があるのかとも考えましたが、
|
28
|
+
|
29
|
-
|
29
|
+
初級者ゆえ解決策が思い浮かびません。
|
30
30
|
|
31
31
|
|
32
32
|
|
33
|
+
関数定義と呼び出し、取得した値を配列に読み込む処理の記述をはじめ、誤りをご指摘いただきたいです。
|
33
34
|
|
34
|
-
|
35
|
-
また、関数定義と呼び出し、また取得した値を配列に読み込む処理の記述について不安があるため、誤りほかご指摘いただきたいです。
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
35
|
+
どうぞよろしくお願いします。
|
40
36
|
|
41
37
|
|
42
38
|
|
@@ -60,21 +56,21 @@
|
|
60
56
|
|
61
57
|
'SQLserverから値を取得する関数呼び出し
|
62
58
|
|
63
|
-
Dim values() As D
|
59
|
+
Dim values() As Decimal = Getvalues()
|
64
60
|
|
65
61
|
|
66
62
|
|
67
|
-
valueA_Lbl.Text = values(0)
|
63
|
+
valueA_Lbl.Text = values(0).ToString()
|
68
64
|
|
69
|
-
valueB_Lbl.Text = values(1)
|
65
|
+
valueB_Lbl.Text = values(1).ToString()
|
70
66
|
|
71
|
-
valueC_Lbl.Text = values(2)
|
67
|
+
valueC_Lbl.Text = values(2).ToString()
|
72
68
|
|
73
|
-
valueD_Lbl.Text = values(3)
|
69
|
+
valueD_Lbl.Text = values(3).ToString()
|
74
70
|
|
75
|
-
valueE_Lbl.Text = values(4)
|
71
|
+
valueE_Lbl.Text = values(4).ToString()
|
76
72
|
|
77
|
-
valueF_Lbl.Text = values(5)
|
73
|
+
valueF_Lbl.Text = values(5).ToString()
|
78
74
|
|
79
75
|
|
80
76
|
|
@@ -84,7 +80,7 @@
|
|
84
80
|
|
85
81
|
'データベースから値を取得する関数
|
86
82
|
|
87
|
-
Private Function Getvalues() As D
|
83
|
+
Private Function Getvalues() As Decimal()
|
88
84
|
|
89
85
|
|
90
86
|
|
@@ -126,11 +122,7 @@
|
|
126
122
|
|
127
123
|
Try
|
128
124
|
|
129
|
-
|
130
|
-
|
131
125
|
connection.Open()
|
132
|
-
|
133
|
-
|
134
126
|
|
135
127
|
Dim dr As SqlDataReader = command.ExecuteReader()
|
136
128
|
|
@@ -140,11 +132,11 @@
|
|
140
132
|
|
141
133
|
Dim Count As Integer = 0
|
142
134
|
|
143
|
-
Dim valuelist(5) As D
|
135
|
+
Dim valuelist(5) As Decimal
|
144
136
|
|
145
137
|
While (dr.Read())
|
146
138
|
|
147
|
-
valuelist(Count) = dr.Get
|
139
|
+
valuelist(Count) = dr.GetDecimal(Count)
|
148
140
|
|
149
141
|
Count = Count + 1
|
150
142
|
|
3
書式改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,12 +1,6 @@
|
|
1
1
|
※Visual Studio 2013、SQL server 2012を使用。OSはWindows7です。
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
初級者です。記述不足等ありましたら申し訳ありません、ご指摘ください。
|
6
|
-
|
7
3
|
以下のようなテーブルから取得した値を関数側で配列に格納し、その配列を戻り値として返したいです。
|
8
|
-
|
9
|
-
|
10
4
|
|
11
5
|
取得する値はvalueA から valueFまでの数値のみ(フィールドのデータ型はdecimal(3,2))で、
|
12
6
|
|
@@ -19,8 +13,6 @@
|
|
19
13
|

|
20
14
|
|
21
15
|
|
22
|
-
|
23
|
-
以下、書籍やネット上の情報を参考に見よう見まねで記述したソースコードです。
|
24
16
|
|
25
17
|
実行結果がいずれも 0 と表示されており、正しい結果は得られていません。
|
26
18
|
|
@@ -44,7 +36,7 @@
|
|
44
36
|
|
45
37
|
|
46
38
|
|
47
|
-
どうぞよろしくお願いします。
|
39
|
+
初級者ですので、どうぞよろしくお願いします。
|
48
40
|
|
49
41
|
|
50
42
|
|
2
記載修正(実装環境を上部へ、ほか)
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
SQLserverから取得した値を配列に格納し、戻り値にしたいです。
|
1
|
+
SQLserverから取得した値を配列に格納し、関数の戻り値にしたいです。
|
test
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
※Visual Studio 2013、SQL server 2012を使用。OSはWindows7です。
|
2
|
+
|
3
|
+
|
4
|
+
|
1
5
|
初級者です。記述不足等ありましたら申し訳ありません、ご指摘ください。
|
2
6
|
|
3
7
|
以下のようなテーブルから取得した値を関数側で配列に格納し、その配列を戻り値として返したいです。
|
@@ -22,13 +26,7 @@
|
|
22
26
|
|
23
27
|
|
24
28
|
|
25
|
-
特に関数定義と呼び出し、また取得した値を配列に読み込む処理の記述について不安があるため、
|
26
|
-
|
27
|
-
誤りほかご指摘いただきたいです。
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
※SQL文を改善後、Catch ex As Exception 部分の内容を確認すると、
|
29
|
+
※ご指摘を受け、SQL文を改善後、Catch ex As Exception 部分の内容を確認すると、
|
32
30
|
|
33
31
|
「型 'System.Decimal' のオブジェクトを型 'System.String' にキャストできません」
|
34
32
|
|
@@ -42,11 +40,11 @@
|
|
42
40
|
|
43
41
|
|
44
42
|
|
45
|
-
|
43
|
+
また、関数定義と呼び出し、また取得した値を配列に読み込む処理の記述について不安があるため、誤りほかご指摘いただきたいです。
|
46
44
|
|
47
45
|
|
48
46
|
|
49
|
-
|
47
|
+
どうぞよろしくお願いします。
|
50
48
|
|
51
49
|
|
52
50
|
|
1
いただいた回答を受けて、発生している問題、テーブルの列のデータ型を記載。
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
-
取得する値はvalueA から valueFまでの数値のみで、
|
7
|
+
取得する値はvalueA から valueFまでの数値のみ(フィールドのデータ型はdecimal(3,2))で、
|
8
8
|
|
9
9
|
ソース上は確認用にラベルコントロールに値を表示させるよう記述していますが、
|
10
10
|
|
@@ -25,6 +25,20 @@
|
|
25
25
|
特に関数定義と呼び出し、また取得した値を配列に読み込む処理の記述について不安があるため、
|
26
26
|
|
27
27
|
誤りほかご指摘いただきたいです。
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
※SQL文を改善後、Catch ex As Exception 部分の内容を確認すると、
|
32
|
+
|
33
|
+
「型 'System.Decimal' のオブジェクトを型 'System.String' にキャストできません」
|
34
|
+
|
35
|
+
と表示されていました。
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
テーブルの列のデータ型設定の問題なんでしょうか。
|
40
|
+
|
41
|
+
|
28
42
|
|
29
43
|
|
30
44
|
|
@@ -100,19 +114,19 @@
|
|
100
114
|
|
101
115
|
Dim SQL As String
|
102
116
|
|
103
|
-
'特定の「FacilityID」の日付が最新のレコードを取得したいです
|
117
|
+
'特定の「FacilityID」の日付が最新のレコードを取得したいです(改善部分)
|
104
118
|
|
105
119
|
SQL = "SELECT valueA, valueB, valueC, valueD, valueE, valueF" &
|
106
120
|
|
107
|
-
"from tbl_valueTest as A" &
|
121
|
+
" from tbl_valueTest as A" &
|
108
122
|
|
109
|
-
"WHERE Exists(SELECT * from tbl_valueTest" &
|
123
|
+
" WHERE Exists(SELECT * from tbl_valueTest" &
|
110
124
|
|
111
|
-
"group by FacilityID" &
|
125
|
+
" group by FacilityID" &
|
112
126
|
|
113
|
-
"having FacilityID = A.FacilityID and MAX(date) = A.date)" &
|
127
|
+
" having FacilityID = A.FacilityID and MAX(date) = A.date)" &
|
114
128
|
|
115
|
-
"and FacilityID = 1"
|
129
|
+
" and FacilityID = 1"
|
116
130
|
|
117
131
|
|
118
132
|
|