質問編集履歴

6

記事のURLを追記

2018/08/14 12:56

投稿

sheephuman
sheephuman

スコア112

test CHANGED
@@ -1 +1 @@
1
- 日付でグループ化されたレコードを、さらに項目別にグループ化したい
1
+ 日付でグループ化されたクエリを、さらに項目別にグループ化したい
test CHANGED
@@ -485,3 +485,11 @@
485
485
 
486
486
 
487
487
   系列が追加されていないので表示されないのかと思ったんですが、クエリ側との不一致があるのかやはり表示されませんでした。
488
+
489
+
490
+
491
+
492
+
493
+ 参考までに自作の記事を添えておきます。
494
+
495
+ [C# DataTable to Chart Display(家計簿用サンプル) ](https://mojakouinfotaker.blog.fc2.com/blog-entry-1042.html)

5

更に試したことを追記

2018/08/14 12:56

投稿

sheephuman
sheephuman

スコア112

test CHANGED
File without changes
test CHANGED
@@ -350,6 +350,138 @@
350
350
 
351
351
    //mySelectQuery = "SELECT *,Sum(F1) FROM " + "\" + file + " WHERE F2 = (SELECT F2 FROM " + "\" + file + ")";
352
352
 
353
+
354
+
353
355
   
354
356
 
355
357
   意味がよくわかってないと思います。
358
+
359
+
360
+
361
+  0. さらに試したこと
362
+
363
+  Quitaの記事からの流用になります。
364
+
365
+    [【C#】CSV、Excelファイルの内容をDataTableに格納する](https://qiita.com/OneK/items/c3077aea595635f40ee5)  
366
+
367
+
368
+
369
+
370
+
371
+   ```
372
+
373
+
374
+
375
+
376
+
377
+ public static DataTable GetDataTableFromCSV(String strFilePath, Boolean isInHeader = true)
378
+
379
+ {
380
+
381
+ dt = new DataTable();
382
+
383
+
384
+
385
+
386
+
387
+ String strInHeader = isInHeader ? "YES" : "NO"; // ヘッダー設定
388
+
389
+ String strCon = "Provider=Microsoft.ACE.OLEDB.12.0;" // プロバイダ設定
390
+
391
+ //= "Provider=Microsoft.Jet.OLEDB.4.0;" // Jetでやる場合
392
+
393
+ + "Data Source=" + Path.GetDirectoryName(strFilePath) + "\; " // ソースファイル指定
394
+
395
+ + "Extended Properties=\"Text;HDR=" + strInHeader + ";FMT=Delimited\"";
396
+
397
+ OleDbConnection con = new OleDbConnection(strCon);
398
+
399
+ String strCmd = "SELECT * FROM [" + Path.GetFileName(strFilePath) + "]";
400
+
401
+
402
+
403
+ // 読み込み
404
+
405
+ OleDbCommand cmd = new OleDbCommand(strCmd, con);
406
+
407
+ OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
408
+
409
+ adp.Fill(dt);
410
+
411
+ // ds.Tables.Add(dt);
412
+
413
+
414
+
415
+ return dt;
416
+
417
+ }
418
+
419
+ ```
420
+
421
+
422
+
423
+
424
+
425
+  さらに
426
+
427
+
428
+
429
+  ```
430
+
431
+    private void CSV_to_chart(string ReadFile)
432
+
433
+ {
434
+
435
+
436
+
437
+ dt = GetDataTableFromCSV(current + "\2018年8月.csv", false);
438
+
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+
447
+ string[] seriesArray = dt.AsEnumerable().Select(r => r.Field<string>("F2")).Distinct().ToArray();
448
+
449
+ //"F2"を名前解決する処理
450
+
451
+
452
+
453
+ foreach (string s in seriesArray)
454
+
455
+ {
456
+
457
+ chart1.Series.Add(s);
458
+
459
+ }
460
+
461
+
462
+
463
+
464
+
465
+ mySelectQuery = "SELECT F3, F2, Sum(F1) FROM " + "\" + "[" + file + "]" + " Group by f3, f2 Order by Format(F3,'MMDD'), F2";
466
+
467
+ //グラフが表示されない
468
+
469
+      
470
+
471
+
472
+
473
+  // 以下略
474
+
475
+
476
+
477
+ ```
478
+
479
+
480
+
481
+ このようにすることで以下の結果を得ました。
482
+
483
+  ![イメージ説明](419ecc86b190ba6c11943152c49be992.png)
484
+
485
+
486
+
487
+  系列が追加されていないので表示されないのかと思ったんですが、クエリ側との不一致があるのかやはり表示されませんでした。

4

リンク化

2018/08/14 11:00

投稿

sheephuman
sheephuman

スコア112

test CHANGED
File without changes
test CHANGED
@@ -38,11 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- System.Data.OleDb 名前空間
42
-
43
- https://msdn.microsoft.com/ja-jp/library/system.data.oledb(v=vs.110).aspx
41
+ [System.Data.OleDb 名前空間](https://msdn.microsoft.com/ja-jp/library/system.data.oledb(v=vs.110).aspx)
44
-
45
-
46
42
 
47
43
 
48
44
 
@@ -54,7 +50,7 @@
54
50
 
55
51
 
56
52
 
57
- https://box.yahoo.co.jp/guest/viewer?sid=box-l-jjsgnkx53gwi3lt2r7nmvpbfvm-1001&uniqid=71f9a0e5-71d4-426e-97d7-215d6b9c3997&viewtype=detail
53
+ [https://box.yahoo.co.jp/guest/viewer?sid=box-l-jjsgnkx53gwi3lt2r7nmvpbfvm-1001&uniqid=71f9a0e5-71d4-426e-97d7-215d6b9c3997&viewtype=detail](https://box.yahoo.co.jp/guest/viewer?sid=box-l-jjsgnkx53gwi3lt2r7nmvpbfvm-1001&uniqid=71f9a0e5-71d4-426e-97d7-215d6b9c3997&viewtype=detail)
58
54
 
59
55
 
60
56
 

3

プロジェクトファイルの添付と実行可能なコードに書き直し

2018/08/14 10:27

投稿

sheephuman
sheephuman

スコア112

test CHANGED
File without changes
test CHANGED
@@ -46,16 +46,24 @@
46
46
 
47
47
 
48
48
 
49
+
50
+
51
+ ソースコードを実行可能なものに書き直します。失礼しました。
52
+
53
+ それと、プロジェクトファイルを添付しておきます。
54
+
55
+
56
+
57
+ https://box.yahoo.co.jp/guest/viewer?sid=box-l-jjsgnkx53gwi3lt2r7nmvpbfvm-1001&uniqid=71f9a0e5-71d4-426e-97d7-215d6b9c3997&viewtype=detail
58
+
59
+
60
+
61
+
62
+
49
63
  ```C#
50
64
 
51
65
  using System;
52
66
 
53
- using System.Collections.Generic;
54
-
55
- using System.Linq;
56
-
57
- using System.Text;
58
-
59
67
  using System.Data.OleDb;
60
68
 
61
69
  using System.Data;
@@ -64,28 +72,40 @@
64
72
 
65
73
  using System.Windows.Forms;
66
74
 
75
+
76
+
77
+
78
+
79
+ namespace WindowsFormsApp4
80
+
81
+ {
82
+
67
- using Microsoft.VisualBasic.FileIO;
83
+ public partial class Form1 : Form
84
+
68
-
85
+ {
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
86
+
77
- private void Form1_Load(object sender, EventArgs e)
87
+ public Form1()
78
88
 
79
89
  {
80
90
 
81
-
82
-
83
- CSV_to_chart("C:\temp\2018年8月.csv");
91
+ InitializeComponent();
84
92
 
85
93
  }
86
94
 
87
95
 
88
96
 
97
+ private void Form1_Load(object sender, EventArgs e)
98
+
99
+ {
100
+
101
+
102
+
103
+ CSV_to_chart("2018年8月.csv");
104
+
105
+ }
106
+
107
+
108
+
89
109
  private void CSV_to_chart(string ReadFile)
90
110
 
91
111
  {
@@ -114,14 +134,6 @@
114
134
 
115
135
 
116
136
 
117
- chart1.Series[0].Color = CommmonColor;
118
-
119
-
120
-
121
-
122
-
123
-
124
-
125
137
  try
126
138
 
127
139
  {
@@ -136,7 +148,9 @@
136
148
 
137
149
  string file = ReadFile;
138
150
 
139
- string path = current + "\kakeibo\";
151
+ string path = current + "\Data\";
152
+
153
+              //実行ファイル直下に「Data」ファルダを作る         
140
154
 
141
155
 
142
156
 
@@ -162,11 +176,11 @@
162
176
 
163
177
 
164
178
 
165
- mySelectQuery = "SELECT F3,Sum(F1) FROM " + "\" +"[" + file+"]" + " Group by f3 Order by Format(F3,'MMDD')";
179
+ mySelectQuery = "SELECT F3, F2, Sum(F1) FROM " + "\" + "[" + file + "]" + " Group by f3, f2 Order by Format(F3,'MMDD'), F2";
166
-
180
+
167
- //+、-スペース入りファイル名も使えるようにする
181
+ //+、-スペース入りファイル名も使えるようにする
168
-
169
-
182
+
183
+
170
184
 
171
185
 
172
186
 
@@ -236,7 +250,13 @@
236
250
 
237
251
  }
238
252
 
239
- }
253
+ }
254
+
255
+ }
256
+
257
+ }
258
+
259
+
240
260
 
241
261
  ```
242
262
 

2

usingとURLを追記

2018/08/14 10:21

投稿

sheephuman
sheephuman

スコア112

test CHANGED
File without changes
test CHANGED
@@ -36,8 +36,42 @@
36
36
 
37
37
  コードはoledbを使い、以下のようになります。
38
38
 
39
+
40
+
41
+ System.Data.OleDb 名前空間
42
+
43
+ https://msdn.microsoft.com/ja-jp/library/system.data.oledb(v=vs.110).aspx
44
+
45
+
46
+
47
+
48
+
39
49
  ```C#
40
50
 
51
+ using System;
52
+
53
+ using System.Collections.Generic;
54
+
55
+ using System.Linq;
56
+
57
+ using System.Text;
58
+
59
+ using System.Data.OleDb;
60
+
61
+ using System.Data;
62
+
63
+ using System.IO;
64
+
65
+ using System.Windows.Forms;
66
+
67
+ using Microsoft.VisualBasic.FileIO;
68
+
69
+
70
+
71
+
72
+
73
+
74
+
41
75
 
42
76
 
43
77
  private void Form1_Load(object sender, EventArgs e)

1

実行結果の追記

2018/08/14 09:59

投稿

sheephuman
sheephuman

スコア112

test CHANGED
File without changes
test CHANGED
@@ -267,3 +267,39 @@
267
267
  >   ![イメージ説明](5cb63e04b336bac38febc4d755ea3e49.png)
268
268
 
269
269
  >     このように表示させるようなクエリがあれば書きたいということです。
270
+
271
+
272
+
273
+
274
+
275
+  回答いただいたコードの結果
276
+
277
+    mySelectQuery = "SELECT F3, F2, Sum(F1) FROM " + "\" +"[" + file+"]" + " Group by f3, f2 Order by Format(F3,'MMDD'), F2";
278
+
279
+   
280
+
281
+  ![イメージ説明](16751cb2d6a33b7a7309e95048a5626b.png)
282
+
283
+
284
+
285
+
286
+
287
+  ちなみに 自分が試したのは
288
+
289
+   ```ここに言語を入力
290
+
291
+  mySelectQuery = "SELECT F3, F2, Sum(F1) FROM " + "\" +"[" + file+"]" + " Group by f3, f2 Order by Format(F3,'MMDD')"でした。
292
+
293
+ ```
294
+
295
+
296
+
297
+
298
+
299
+  他のもの
300
+
301
+   //mySelectQuery = "SELECT *,Sum(F1) FROM " + "\" + file + " WHERE F2 = (SELECT F2 FROM " + "\" + file + ")";
302
+
303
+  
304
+
305
+  意味がよくわかってないと思います。