- 締切済み
DataTableのデータを保存したい
VB初心者です VB2008を使用してカロリー計算ができるプログラムを作成しています DataTableに摂取カロリーと消費カロリーをユーザが追加でき、 そのDataTableのデータをCSVファイルとして保存しようと考えています こちらのサイトhttp://pckowaza.web.fc2.com/html/vbdotnet_datagridview_savetocsv.html からコピーしてやってみたのですが Public Sub SaveToCsv(tempDgv As System.Windows.Forms.DataGridView)' のパラメータ 'tempDgv' に対して引数が指定されていません。 とエラーが出ます どこを直せば良いのでしょうか? 以下、プログラムです '保存したいDataGridViewコントロールの名前を引数として '設定します。 Public Sub SaveToCsv(ByVal tempDgv As DataGridView) '1行もデータが無い場合は、保存を中止します。 If tempDgv.Rows.Count = 0 Then Exit Sub End If '変数を定義します。 Dim i As Integer Dim j As Integer Dim strFileName As String Dim strResult As New System.Text.StringBuilder '保存ダイアログでファイル名を設定した場合に処理を実行します。 If Me.sfdCsvFile.ShowDialog = _ Windows.Forms.DialogResult.OK Then 'コラムヘッダを1行目に列記します。 '※ヘッダ行が不要な場合は削除可能です。 For i = 0 To tempDgv.Columns.Count - 1 Select Case i Case 0 strResult.Append("""" & _ tempDgv.Columns(i).HeaderText.ToString & """") Case tempDgv.Columns.Count - 1 strResult.Append("," & """" & _ tempDgv.Columns(i).HeaderText.ToString & _ """" & vbCrLf) Case Else strResult.Append("," & """" & _ tempDgv.Columns(i).HeaderText.ToString & """") End Select Next 'データを保存します。 '※新規行の追加を認めている場合は、次行の 「tempDgv.Columns.Count - 1」を '「tempDgv.Columns.Count - 2」としてください。 For i = 0 To tempDgv.Rows.Count - 1 For j = 0 To tempDgv.Columns.Count - 1 Select Case j Case 0 strResult.Append("""" & _ tempDgv.Rows(i).Cells(j).Value.ToString & _ """") Case tempDgv.Columns.Count - 1 strResult.Append("," & """" & _ tempDgv.Rows(i).Cells(j).Value.ToString & _ """" & vbCrLf) Case Else strResult.Append("," & """" & _ tempDgv.Rows(i).Cells(j).Value.ToString & _ """") End Select Next Next 'ファイル名を保存ダイアログで指定した値に設定します。 strFileName = Me.sfdCsvFile.FileName 'Shift-JISで保存します。 Dim swText As New System.IO.StreamWriter(strFileName, _ False, System.Text.Encoding.GetEncoding(932)) swText.Write(strResult.ToString) swText.Dispose() End If End Sub DataGridViewの定義?はこれです Designer.vbに書かれていたものです 'DataGridView1 ' Me.DataGridView1.AutoGenerateColumns = False Me.DataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize Me.DataGridView1.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.名前DataGridViewTextBoxColumn, Me.カロリーkcalDataGridViewTextBoxColumn}) Me.DataGridView1.DataSource = Me.DataTable1BindingSource3 Me.DataGridView1.Location = New System.Drawing.Point(424, 35) Me.DataGridView1.Name = "DataGridView1" Me.DataGridView1.RowTemplate.Height = 21 Me.DataGridView1.Size = New System.Drawing.Size(429, 422) Me.DataGridView1.TabIndex = 3 ' '名前DataGridViewTextBoxColumn ' Me.名前DataGridViewTextBoxColumn.DataPropertyName = "名前" Me.名前DataGridViewTextBoxColumn.HeaderText = "名前" Me.名前DataGridViewTextBoxColumn.Name = "名前DataGridViewTextBoxColumn" ' 'カロリーkcalDataGridViewTextBoxColumn ' Me.カロリーkcalDataGridViewTextBoxColumn.DataPropertyName = "カロリー(kcal)" Me.カロリーkcalDataGridViewTextBoxColumn.HeaderText = "カロリー(kcal)" Me.カロリーkcalDataGridViewTextBoxColumn.Name = "カロリーkcalDataGridViewTextBoxColumn" '
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Hayashi_Trek
- ベストアンサー率44% (366/818)
質問には書かれていない、SaveToCsv()の呼び方が間違ってるだけ。 エラーメッセージの通りで、これ以上説明のしようが無い。 エラーメッセージは気まぐれに表示しているわけじゃない。 どこがおかしいか、どこを直すべきかを教えてくれています。