質問編集履歴

6

エラーの修正など

2016/05/23 01:06

投稿

FitD
FitD

スコア40

test CHANGED
File without changes
test CHANGED
@@ -128,9 +128,13 @@
128
128
 
129
129
  where (SET_B.B_no1 = f.id1
130
130
 
131
- && (SET_B.B_no2 >= 1 && SET_B.B_no2 <= 5 && f.no1 >= 6 && f.no1 <= 10)
131
+ && (int.Parse(SET_B.B_no2) >= 1 && int.Parse(SET_B.B_no2) <= 5
132
+
132
-
133
+ && int.Parse(f.no1) >= 6 && int.Parse(f.no1) <= 10)
134
+
133
- || (SET_B.B_no2 >= 6 && SET_B.B_no2 <= 10 && f.no1 >= 1 && f.no1 <= 5))
135
+ || (int.Parse(SET_B.B_no2) >= 6 && int.Parse(SET_B.B_no2) <= 10
136
+
137
+ && int.Parse(f.no1) >= 1 && int.Parse(f.no1) <= 5))
134
138
 
135
139
  select new
136
140
 
@@ -180,6 +184,8 @@
180
184
 
181
185
 
182
186
 
187
+
188
+
183
189
  ```
184
190
 
185
191
 
@@ -207,3 +213,7 @@
207
213
  [HIS-MST-OUTPUT](http://www.dotup.org/uploda/www.dotup.org869377.xls.html)
208
214
 
209
215
  よろしくお願いいたします。
216
+
217
+
218
+
219
+ ※エラーは一通り修正したものを掲載してあります。修正前をご覧になりたい方は、質問編集履歴を確認してください。

5

VisualStudio2013にてエラー箇所を修正しました

2016/05/23 01:06

投稿

FitD
FitD

スコア40

test CHANGED
File without changes
test CHANGED
@@ -34,136 +34,152 @@
34
34
 
35
35
  ```C#
36
36
 
37
- private void Bind(string key)
37
+ class Bind
38
38
 
39
39
  {
40
40
 
41
- /// アウトプット用のコレクションです。
41
+
42
-
43
- LIST<OUT_PUT> output = new List<OUT_PUT>();
42
+
44
-
45
-
46
-
47
- /// keyが複数指定されることもあるので、まずは1件(先頭)だけ取り出す設定にしてみました。
48
-
49
- var key_id = (from a in HIS
50
-
51
- where key = a.id1
52
-
53
- select a.id1).FirstOrDefault();
43
+ private void Bind(string key)
54
-
55
-
56
-
57
- /// 目標のid1を検索して、マスタに登録されているcodeと関連付けます。
58
-
59
- var target = from b in HIS
60
-
61
- join c in MST on b.code1 equals c.code
62
-
63
- where key_id == b.id1
64
-
65
- && c.name == 'A'
66
-
67
- select new{
68
-
69
- key_id,
70
-
71
- A_id = b.id1,
72
-
73
- A_no1 = b.no1
74
-
75
- B_no2 = b.no2
76
-
77
- B_id = b.id2
78
-
79
- };
80
-
81
-
82
-
83
- /// 1行ずつコレクションに追加していきたいため、foreachで繰り返します。
84
-
85
- foreach(var SET_A in target)
86
44
 
87
45
  {
88
46
 
89
- /// 関連付け先codeのマスタがBあるかをチェックして、1件づつ紐づけます。
90
-
91
- var SET_B = (from d in HIS
92
-
93
- join e in MST on d.code1 equals e.code
94
-
95
- where SET_A.B_id = d.id1
96
-
97
- && e.name == 'B'
98
-
99
- select new{
100
-
101
- key_id,
102
-
103
- SET_A.A_id,
104
-
105
- SET_A.A_no1,
106
-
107
- SET_A.B_no2,
108
-
109
- SET_A.B_id,
110
-
111
- B_no1 = d.no1,
112
-
113
- C_no2 = d.no2,
114
-
115
- C_id = d.id2,
116
-
117
- }).FirstOrDefault();
118
-
119
-
120
-
121
- /// さらに関連付けますが、この時にnoの条件によって、紐付対象が変わっていきます。
122
-
123
- var SET_C = (from f in HIS
124
-
125
- where (SET_B.B_no1 = f.id1
126
-
127
- && (SET_B.B_no2 >= 1 && SET_B.B_no2 <= 5 && f.no1 => 6 && f.no1 <= 10)
128
-
129
- || (SET_B.B_no2 >= 6 && SET_B.B_no2 <= 10 && f.no1 => 1 && f.no1 <= 5)
130
-
131
- select new{
132
-
133
- key_id,
134
-
135
- SET_B.A_id,
136
-
137
- SET_B.A_no1,
138
-
139
- SET_B.B_no2,
140
-
141
- SET_B.B_id,
142
-
143
- SET_B.B_no1,
144
-
145
- SET_B.C_no2,
146
-
147
- SET_B.C_id,
148
-
149
- C_no1 = f.no1,
150
-
151
- D_no2 = f.no2,
152
-
153
- D_id = f.id2
154
-
155
- })DISTINCT();
156
-
157
-
158
-
159
- /// 1配列づつoutput用のコレクションに追加していきます。
160
-
161
- IF(SET_C != null)out_put.AddRange(SET_C);
47
+ /// アウトプット用コレクションです。
48
+
49
+ LIST<OUT_PUT> output = new List<OUT_PUT>();
50
+
51
+ /// keyが複数指定されることもあるので、まずは1件(先頭)だけ取り出す設定にしてみました。
52
+
53
+ var key_id = (from a in HIS
54
+
55
+ where key = a.id1
56
+
57
+ select a.id1).FirstOrDefault();
58
+
59
+ /// 目標のid1を検索して、マスタに登録されているcodeと関連付けます。
60
+
61
+ var target = from b in HIS
62
+
63
+ join c in MST on b.code1 equals c.code
64
+
65
+ where key_id == b.id1
66
+
67
+ && c.name == 'A'
68
+
69
+ select new
70
+
71
+ {
72
+
73
+ key_id,
74
+
75
+ A_id = b.id1,
76
+
77
+ A_no1 = b.no1,
78
+
79
+ B_no2 = b.no2,
80
+
81
+ B_id = b.id2
82
+
83
+ };
84
+
85
+ /// 1行ずつコレクションに追加していきたいため、foreachで繰り返します。
86
+
87
+ foreach (var SET_A in target)
88
+
89
+ {
90
+
91
+ /// 関連付け先のcodeのマスタがBであるかをチェックして、1件づつ紐づけます。
92
+
93
+ var SET_B = (from d in HIS
94
+
95
+ join e in MST on d.code1 equals e.code
96
+
97
+ where SET_A.B_id = d.id1
98
+
99
+ && e.name == 'B'
100
+
101
+ select new
102
+
103
+ {
104
+
105
+ key_id,
106
+
107
+ SET_A.A_id,
108
+
109
+ SET_A.A_no1,
110
+
111
+ SET_A.B_no2,
112
+
113
+ SET_A.B_id,
114
+
115
+ B_no1 = d.no1,
116
+
117
+ C_no2 = d.no2,
118
+
119
+ C_id = d.id2,
120
+
121
+ }).FirstOrDefault();
122
+
123
+
124
+
125
+ /// さらに関連付けますが、この時にnoの条件によって、紐付対象が変わっていきます。
126
+
127
+ var SET_C = (from f in HIS
128
+
129
+ where (SET_B.B_no1 = f.id1
130
+
131
+ && (SET_B.B_no2 >= 1 && SET_B.B_no2 <= 5 && f.no1 >= 6 && f.no1 <= 10)
132
+
133
+ || (SET_B.B_no2 >= 6 && SET_B.B_no2 <= 10 && f.no1 >= 1 && f.no1 <= 5))
134
+
135
+ select new
136
+
137
+ {
138
+
139
+ key_id,
140
+
141
+ SET_B.A_id,
142
+
143
+ SET_B.A_no1,
144
+
145
+ SET_B.B_no2,
146
+
147
+ SET_B.B_id,
148
+
149
+ SET_B.B_no1,
150
+
151
+ SET_B.C_no2,
152
+
153
+ SET_B.C_id,
154
+
155
+ C_no1 = f.no1,
156
+
157
+ D_no2 = f.no2,
158
+
159
+ D_id = f.id2
160
+
161
+ }).DISTINCT();
162
+
163
+
164
+
165
+ /// 1配列づつoutput用のコレクションに追加していきます。
166
+
167
+ IF(SET_C != null);
168
+
169
+ {
170
+
171
+ out_put.AddRange(SET_C);
172
+
173
+ }
174
+
175
+ }
162
176
 
163
177
  }
164
178
 
165
179
  }
166
180
 
181
+
182
+
167
183
  ```
168
184
 
169
185
 

4

言語等を補足に追記

2016/05/23 00:27

投稿

FitD
FitD

スコア40

test CHANGED
File without changes
test CHANGED
@@ -178,6 +178,8 @@
178
178
 
179
179
  ###補足情報(言語/FW/ツール等のバージョンなど)
180
180
 
181
+ C# ASP.NET MVC Framework、VisualStadio2013、SQLServer2014
182
+
181
183
  質問者のC#のプログラミング能力はあまり高くはありません。
182
184
 
183
185
  著:高橋麻奈のやさしいC#を一通り読みましたが、オブジェクト指向がいまいちまだふんわりした感じです。

3

DLパスを不要なところにしました

2016/05/20 10:29

投稿

FitD
FitD

スコア40

test CHANGED
File without changes
test CHANGED
@@ -188,6 +188,4 @@
188
188
 
189
189
  [HIS-MST-OUTPUT](http://www.dotup.org/uploda/www.dotup.org869377.xls.html)
190
190
 
191
- DLパスワード:1212
192
-
193
191
  よろしくお願いいたします。

2

ソースにコメントを追加してみました

2016/05/20 08:54

投稿

FitD
FitD

スコア40

test CHANGED
File without changes
test CHANGED
@@ -11,6 +11,10 @@
11
11
 
12
12
 
13
13
  ###発生している問題・エラーメッセージ
14
+
15
+ WHERE句でエラーが発生しています。
16
+
17
+ foreachが邪魔しているような気がしますが、なぜ以下のようなエラーになるのかがわかりません。
14
18
 
15
19
 
16
20
 
@@ -34,17 +38,23 @@
34
38
 
35
39
  {
36
40
 
37
- LIST<OUT_PUT> output = new List<OUT_PUT>();
41
+ /// アウトプット用のコレクションです。
38
42
 
39
-
43
+ LIST<OUT_PUT> output = new List<OUT_PUT>();
44
+
45
+
46
+
47
+ /// keyが複数指定されることもあるので、まずは1件(先頭)だけ取り出す設定にしてみました。
40
48
 
41
49
  var key_id = (from a in HIS
42
50
 
43
51
  where key = a.id1
44
52
 
45
- select a.id1).FirstOrDefault();
53
+ select a.id1).FirstOrDefault();
46
54
 
55
+
56
+
47
-
57
+ /// 目標のid1を検索して、マスタに登録されているcodeと関連付けます。
48
58
 
49
59
  var target = from b in HIS
50
60
 
@@ -68,9 +78,15 @@
68
78
 
69
79
  };
70
80
 
81
+
82
+
83
+ /// 1行ずつコレクションに追加していきたいため、foreachで繰り返します。
84
+
71
85
  foreach(var SET_A in target)
72
86
 
73
87
  {
88
+
89
+ /// 関連付け先のcodeのマスタがBであるかをチェックして、1件づつ紐づけます。
74
90
 
75
91
  var SET_B = (from d in HIS
76
92
 
@@ -100,7 +116,9 @@
100
116
 
101
117
  }).FirstOrDefault();
102
118
 
119
+
120
+
103
-
121
+ /// さらに関連付けますが、この時にnoの条件によって、紐付対象が変わっていきます。
104
122
 
105
123
  var SET_C = (from f in HIS
106
124
 
@@ -138,6 +156,8 @@
138
156
 
139
157
 
140
158
 
159
+ /// 1配列づつoutput用のコレクションに追加していきます。
160
+
141
161
  IF(SET_C != null)out_put.AddRange(SET_C);
142
162
 
143
163
  }

1

アップローダーのアドレスが違ったため

2016/05/20 08:53

投稿

FitD
FitD

スコア40

test CHANGED
File without changes
test CHANGED
@@ -166,6 +166,8 @@
166
166
 
167
167
  必要なテーブル(HIS、MST)と、出力目標の(OUTPUT)のExcelを以下にアップロードしました。
168
168
 
169
- [HIS-MST-OUTPUT](http://www.dotup.org/uploda/www.dotup.org869370.xls.html)
169
+ [HIS-MST-OUTPUT](http://www.dotup.org/uploda/www.dotup.org869377.xls.html)
170
+
171
+ DLパスワード:1212
170
172
 
171
173
  よろしくお願いいたします。