質問編集履歴
6
エラーの修正など
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
|
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
|
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にてエラー箇所を修正しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -34,136 +34,152 @@
|
|
34
34
|
|
35
35
|
```C#
|
36
36
|
|
37
|
-
|
37
|
+
class Bind
|
38
38
|
|
39
39
|
{
|
40
40
|
|
41
|
-
|
41
|
+
|
42
|
-
|
43
|
-
|
42
|
+
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
/// keyが複数指定されることもあるので、まずは1件(先頭)だけ取り出す設定にしてみました。
|
48
|
-
|
49
|
-
var key_id = (from a in HIS
|
50
|
-
|
51
|
-
where key = a.id1
|
52
|
-
|
53
|
-
|
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
|
-
///
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
select
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
S
|
104
|
-
|
105
|
-
S
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
SET_B
|
136
|
-
|
137
|
-
S
|
138
|
-
|
139
|
-
SET_
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
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
言語等を補足に追記
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パスを不要なところにしました
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
ソースにコメントを追加してみました
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
|
-
|
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
アップローダーのアドレスが違ったため
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.org86937
|
169
|
+
[HIS-MST-OUTPUT](http://www.dotup.org/uploda/www.dotup.org869377.xls.html)
|
170
|
+
|
171
|
+
DLパスワード:1212
|
170
172
|
|
171
173
|
よろしくお願いいたします。
|