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"
'