質問編集履歴

1

編集

2018/06/28 02:55

投稿

xlostdjx
xlostdjx

スコア39

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,8 @@
1
+ 実現したいこと。
2
+
1
- StockList.cs の public void CSV_Output_Click(object sender, EventArgs e){}
3
+ connectionDb.cs のpublic void CSV_OutputData(SaveFileDialog result)
2
-
4
+
3
- connectionDb.cs のデータをもってきたいです。
5
+ StockList.csのDataGridViewのデータをもってきたいです。
4
6
 
5
7
  ご教授お願いします。
6
8
 
@@ -62,234 +64,372 @@
62
64
 
63
65
  }
64
66
 
67
+ // DataTableを作成
68
+
69
+ DataTable DT = new DataTable();
70
+
71
+ OracleConnection Connect = new OracleConnection();
72
+
73
+
74
+
75
+ // 接続文字列の設定
76
+
77
+ string ConnectionString = ConfigurationManager.ConnectionStrings["OracleDB"].ConnectionString;
78
+
79
+ Connect.ConnectionString = ConnectionString;
80
+
81
+ try
82
+
83
+ {
84
+
85
+ // DB接続する
86
+
87
+ Connect.Open();
88
+
89
+ // 一覧取得用SQL文を作成
90
+
91
+ StringBuilder SQL = new StringBuilder();
92
+
93
+ // inner join 指定した2つのカラムに基づく同じデータを合わせる。
94
+
95
+ // ORDER BY 指定したカラムのソート順でグループ枠で並び替える。
96
+
97
+ // WHERE 条件を指定して検索する
98
+
99
+ SQL.AppendLine("SELECT");
100
+
101
+ SQL.AppendLine(" TS.tana_cd,");
102
+
103
+ SQL.AppendLine(" MT.tana_nm,");
104
+
105
+ SQL.AppendLine(" TS.item_cd,");
106
+
107
+ SQL.AppendLine(" MI.item_nm,");
108
+
109
+ SQL.AppendLine(" TS.in_out_date,");
110
+
111
+ SQL.AppendLine(" TS.in_out_type,");
112
+
113
+ SQL.AppendLine(" TS.in_out_quantity,");
114
+
115
+ SQL.AppendLine(" TS.QUANTITY,");
116
+
117
+ SQL.AppendLine(" MI.unit_name,");
118
+
119
+ SQL.AppendLine("TS.memo");
120
+
121
+ SQL.AppendLine("FROM t_stock TS");
122
+
123
+ SQL.AppendLine(" inner join m_tana MT");
124
+
125
+ SQL.AppendLine(" on TS.tana_cd = MT.tana_cd");
126
+
127
+ SQL.AppendLine(" inner join m_item MI");
128
+
129
+ SQL.AppendLine(" on TS.item_cd = MI.item_cd");
130
+
131
+ SQL.AppendLine("WHERE");
132
+
133
+ // WHERE ◯ = ◯ が等しければすべての条件が 「true」になる
134
+
135
+ SQL.AppendLine("0 = 0");
136
+
137
+ // !を先頭につけてtrueとfalseを入れ替える事もできる。例 if (!string.IsNullOrEmpty(RackCode.Text)
138
+
139
+ SQL.AppendLine(" and TS.in_out_date BETWEEN " + "'" + InOutFromDate.Value.ToString("yyyy/MM/dd") + "'");
140
+
141
+ SQL.AppendLine(" and" + "'" + InOutToDate.Value.ToString("yyyy/MM/dd") + "'");
142
+
143
+ if (string.IsNullOrEmpty(RackCode.Text) == false)
144
+
145
+ {
146
+
147
+ SQL.AppendLine("and TS.tana_cd = " + "'" + RackCode.Text + "'");
148
+
149
+ }
150
+
151
+ if (string.IsNullOrEmpty(ItemCode.Text) == false)
152
+
153
+ {
154
+
155
+ SQL.AppendLine(" and TS.item_cd = " + "'" + ItemCode.Text + "'");
156
+
157
+ }
158
+
159
+ if (InOutType.SelectedIndex != 0)
160
+
161
+ {
162
+
163
+ SQL.AppendLine(" and TS.in_out_type = " + "'" + InOutType.SelectedIndex + "'");
164
+
165
+ }
166
+
167
+ SQL.AppendLine("ORDER BY");
168
+
169
+ SQL.AppendLine(" TS.tana_cd,");
170
+
171
+ SQL.AppendLine(" TS.item_cd,");
172
+
173
+ SQL.AppendLine(" TS.in_out_date,");
174
+
175
+ SQL.AppendLine(" TS.in_out_type");
176
+
177
+ // テーブルソースからデータを取得する
178
+
179
+ var DA = new OracleDataAdapter(SQL.ToString(), Connect);
180
+
181
+ // SQL文の結果をDaTaTableに格納する
182
+
183
+ DA.Fill(DT);
184
+
185
+ // DataGridViewにDataTableをセット
186
+
187
+ DataGrid.DataSource = DT;
188
+
189
+ // DB接続解除
190
+
191
+ Connect.Close();
192
+
193
+
194
+
195
+ // DataGridの行数の取得
196
+
197
+ int LineCount = (DataGrid.BindingContext[DataGrid.DataSource, DataGrid.DataMember].Count);
198
+
199
+ // 3桁区切り制御
200
+
201
+ string Delimitern = String.Format("{0:#,##0} ", LineCount);
202
+
203
+ // データ件数に表示
204
+
205
+ DataCount.Text = Delimitern;
206
+
207
+ }
208
+
209
+ // Exception(Oracle Ver.) アプリの実行中に起きるエラーを表す
210
+
211
+ catch (OracleException ex)
212
+
213
+ {
214
+
215
+ // エラーが起きたときにエラーメッセージとスタックトレースを表示させる。(覚えておく)
216
+
217
+ string trace = Environment.StackTrace;
218
+
219
+ MessageBox.Show("エラーが起きました!" + trace);
220
+
221
+ }
222
+
223
+ }
224
+
225
+
226
+
227
+ ```
228
+
229
+
230
+
231
+ connectionDb.cs
232
+
233
+ ```
234
+
235
+ using System;
236
+
237
+ using System.Collections.Generic;
238
+
239
+ using System.IO;
240
+
241
+ using System.Linq;
242
+
243
+ using System.Text;
244
+
245
+ using System.Threading.Tasks;
246
+
247
+ using System.Windows.Forms;
248
+
249
+
250
+
251
+ namespace StockList
252
+
253
+ {
254
+
255
+ public class OutputFile
256
+
257
+ {
258
+
65
259
  /// <summary>
66
260
 
67
- /// CSV出力ボタン押下時
261
+ /// SCVダイアログ
68
262
 
69
263
  /// </summary>
70
264
 
71
- public void CSV_Output_Click(object sender, EventArgs e)
265
+ public void CSV_Output()
72
266
 
73
267
  {
74
268
 
269
+ // SaveFileDialogを作成する
270
+
271
+ SaveFileDialog result = new SaveFileDialog();
272
+
273
+ result.Title = "ファイルを保存する";
274
+
275
+ // 初期表示時のディレクトリを指定
276
+
277
+ result.InitialDirectory = @"C:\Users\Admin\Downloads";
278
+
279
+ // ファイル名を指定し取得する
280
+
281
+ result.FileName = @"ForOutput.csv";
282
+
283
+ // 選択できるファイルの種類を指定する
284
+
285
+ result.Filter = "CSV (カンマ区切り)|*.csv";
286
+
287
+ // ファイル出力(保存)ダイアログ表示 
288
+
289
+ DialogResult FileOutput = result.ShowDialog();
290
+
291
+
292
+
293
+ // //「保存」ボタンが押された時の処理
294
+
295
+ if (FileOutput == DialogResult.OK)
296
+
297
+ {
298
+
299
+ //指定されたファイルのパスを取得する
300
+
75
- //string filename = System.String.Empty;
301
+ string fileName = result.FileName;
302
+
76
-
303
+ }
304
+
77
-
305
+ else if (FileOutput == DialogResult.Cancel)
306
+
78
-
307
+ {
308
+
79
- //ここにconnectionDb.csのデータを引数??で持ってきたい。
309
+ //「キャンセル」ボタンまたは「×」ボタンが選択された時の処理
310
+
311
+ return;
312
+
313
+ }
314
+
315
+ // CSV出力
316
+
317
+ CSV_OutputData(result);
80
318
 
81
319
  }
82
320
 
321
+ /// <summary>
322
+
323
+ /// CSV出力
324
+
325
+ /// </summary>
326
+
327
+ ここの関数 public void CSV_OutputData(SaveFileDialog result)
328
+
329
+ {
330
+
331
+
332
+
333
+ //ここにDataGridViewのデータを持っていきたい
334
+
335
+
336
+
337
+
338
+
339
+ // 保存用のファイルを開く ( ファイルパス)( ファイル名 ) (文字コード指定)
340
+
341
+ using (StreamWriter writer = new StreamWriter(result.FileName, false, Encoding.GetEncoding("shift_jis")))
342
+
343
+ {
344
+
345
+
346
+
347
+ connectionDb.csの DataGridViewのデータを持っていきたい
348
+
349
+
350
+
351
+ // リストの初期化
352
+
353
+ List<String> strList;
354
+
355
+ strList = new List<String>();
356
+
357
+ //DataGridViewの列を取得
358
+
359
+ int rowCount = DG.Rows.Count;
360
+
361
+
362
+
363
+ // ヘッダ部の出力
364
+
365
+ // Columns.Count カルム数ループ
366
+
367
+ for (int j = 0; j < DG.Columns.Count; j++)
368
+
369
+ {
370
+
371
+ // カラムのヘッダのテキストをリストに追加
372
+
373
+ strList.Add(DG.Columns[j].HeaderCell.Value.ToString());
374
+
375
+ }
376
+
377
+ // 配列へ変換
378
+
379
+ String[] strArray = strList.ToArray();
380
+
381
+ // CSV 形式に変換 // カンマ区切り
382
+
383
+ String strCsvData = String.Join(",", strArray);
384
+
385
+ //ヘッダを出力
386
+
387
+ writer.WriteLine(strCsvData);
388
+
389
+
390
+
391
+ // データ部の出力
392
+
393
+ // rowCount 行数文ループ
394
+
395
+ for (int i = 0; i < rowCount; i++)
396
+
397
+ {
398
+
399
+ // リストの初期化
400
+
401
+ strList = new List<String>();
402
+
403
+ // Columns.Count カルムの数だけループする
404
+
405
+ for (int j = 0; j < DG.Columns.Count; j++)
406
+
407
+ {
408
+
409
+ // 列と行のテキストをリストに追加 (FormattedValueで書式設定済みのセルの値を取得)
410
+
411
+ strList.Add(DG[j, i].FormattedValue.ToString());
412
+
413
+ }
414
+
415
+ // 配列へ変換
416
+
417
+ String[] stgArray = strList.ToArray();
418
+
419
+ // CSV 形式に変換 // カンマ区切り
420
+
421
+ String stgCsvData = String.Join(",", stgArray);
422
+
423
+ //列と行を出力
424
+
425
+ writer.WriteLine(stgCsvData);
426
+
427
+ }
428
+
429
+ }
430
+
431
+ }
432
+
433
+ }
434
+
83
435
  ```
84
-
85
-
86
-
87
- connectionDb.cs
88
-
89
- ```
90
-
91
- using System;
92
-
93
- using System.Collections.Generic;
94
-
95
- using System.IO;
96
-
97
- using System.Linq;
98
-
99
- using System.Text;
100
-
101
- using System.Threading.Tasks;
102
-
103
- using System.Windows.Forms;
104
-
105
-
106
-
107
- namespace StockList
108
-
109
- {
110
-
111
- // StockListFormのDataGridViewのデータを取得する
112
-
113
-
114
-
115
- //クラスを継承する
116
-
117
- class OutputFile
118
-
119
- {
120
-
121
- /// <summary>
122
-
123
- /// CSV出力ボタン押下時
124
-
125
- /// </summary>
126
-
127
- public void CSV_WhenPressingDown()
128
-
129
- {
130
-
131
- // SaveFileDialogを作成する
132
-
133
- SaveFileDialog result = new SaveFileDialog();
134
-
135
- result.Title = "ファイルを保存する";
136
-
137
- // 初期表示時のディレクトリを指定
138
-
139
- result.InitialDirectory = @"C:\Users\Admin\Downloads";
140
-
141
- // ファイル名を指定し取得する
142
-
143
- result.FileName = @"ForOutput.csv";
144
-
145
- // 選択できるファイルの種類を指定する
146
-
147
- result.Filter = "CSV (カンマ区切り)|*.csv";
148
-
149
- // ファイル出力(保存)ダイアログ表示 
150
-
151
- DialogResult FileOutput = result.ShowDialog();
152
-
153
-
154
-
155
- // //「保存」ボタンが押された時の処理
156
-
157
- if (FileOutput == DialogResult.OK)
158
-
159
- {
160
-
161
- //指定されたファイルのパスを取得する
162
-
163
- string fileName = result.FileName;
164
-
165
- }
166
-
167
- else if (FileOutput == DialogResult.Cancel)
168
-
169
- {
170
-
171
- //「キャンセル」ボタンまたは「×」ボタンが選択された時の処理
172
-
173
- return;
174
-
175
- }
176
-
177
-
178
-
179
- //CSV出力
180
-
181
- CSV_Output(result);
182
-
183
- }
184
-
185
-
186
-
187
- /// <summary>
188
-
189
- /// CSV出力
190
-
191
- /// </summary>
192
-
193
- public void CSV_Output(FileDialog result)
194
-
195
- {
196
-
197
-
198
-
199
- DataGridView DG = new DataGridView();
200
-
201
- // 保存用のファイルを開く ( ファイルパス)( ファイル名 ) (文字コード指定)
202
-
203
- using (System.IO.StreamWriter writer = new StreamWriter(result.FileName, false, Encoding.GetEncoding("shift_jis")))
204
-
205
- {
206
-
207
- // リストの初期化
208
-
209
- List<String> strList;
210
-
211
- strList = new List<String>();
212
-
213
- //DataGridViewの列を取得
214
-
215
- int rowCount = DG.Rows.Count;
216
-
217
-
218
-
219
- // ヘッダ部の出力
220
-
221
- // Columns.Count カルム数ループ
222
-
223
- for (int j = 0; j < DG.Columns.Count; j++)
224
-
225
- {
226
-
227
- // カラムのヘッダのテキストをリストに追加
228
-
229
- strList.Add(DG.Columns[j].HeaderCell.Value.ToString());
230
-
231
- }
232
-
233
- // 配列へ変換
234
-
235
- String[] strArray = strList.ToArray();
236
-
237
- // CSV 形式に変換 // カンマ区切り
238
-
239
- String strCsvData = String.Join(",", strArray);
240
-
241
- //ヘッダを出力
242
-
243
- writer.WriteLine(strCsvData);
244
-
245
-
246
-
247
- // データ部の出力
248
-
249
- // rowCount 行数文ループ
250
-
251
- for (int i = 0; i < rowCount; i++)
252
-
253
- {
254
-
255
- // リストの初期化
256
-
257
- strList = new List<String>();
258
-
259
- // Columns.Count カルムの数だけループする
260
-
261
- for (int j = 0; j < DG.Columns.Count; j++)
262
-
263
- {
264
-
265
- // 列と行のテキストをリストに追加 (FormattedValueで書式設定済みのセルの値を取得)
266
-
267
- strList.Add(DG[j, i].FormattedValue.ToString());
268
-
269
- }
270
-
271
- // 配列へ変換
272
-
273
- String[] stgArray = strList.ToArray();
274
-
275
- // CSV 形式に変換 // カンマ区切り
276
-
277
- String stgCsvData = String.Join(",", stgArray);
278
-
279
- //列と行を出力
280
-
281
- writer.WriteLine(stgCsvData);
282
-
283
- }
284
-
285
- }
286
-
287
- }
288
-
289
- }
290
-
291
- }
292
-
293
-
294
-
295
- ```