|
-
Mar 5th, 2013, 06:56 AM
#1
Thread Starter
Member
Problems with merging datatables
Hey,
I'm ultimately trying to create a new series for each datatable. I am trying to do it by merging the datatables creating a new series each 2 columns in the new datatable.
The only problem is I hit this error:
Series data points do not support values of type System.Data.DataRowView only values of these types can be used: Double, Decimal, Single, int, long, uint, ulong, String, DateTime, short, ushort.
every time it runs through for the second time (to add a new series).
Here is all the relevant code (I hope)
Code:
Imports WindowsApplication2.ProjectileForm
Imports System.Math
Imports System.IO
Imports System.Runtime.Serialization
Imports System.ComponentModel
Imports System.Runtime.Serialization.Formatters
Public Class ProjectileForm
Public calculator As New Calculate
Public g As Double = 9.8
Public counteruno As Integer = 1
Public counterdos As Integer = -1
Dim chartmaximumX As Integer
Public count As Integer = 0
Dim chartmaximumY As Double
Dim lastmaxX As Double
Dim lastmaxY As Double
Dim datatable As DataTable 'new?
Public dset As New DataSet
Dim velocity As Double
Dim angle As Double
Dim ivelocityX As Double
Dim ivelocityY As Double
Dim roundedY As Double
Dim x As Double
Dim y As Double 'not all variables needed, investigate later
Dim maxY As Double
Dim maxX As Double
Dim t As Double = 0
Dim maxT As Double
Dim RoundedX As Integer
Public dt As New DataTable
Public firstiteration As Boolean = True
Private Sub Simulate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles simulate.Click
calculator.Projectile(g, ivelocityX, ivelocityY, maxT, firstiteration, counteruno, counterdos)
Dim NewTab As New TabPage
Dim datagrids As New DataGridView
Chart1.Series.Add(count)
Chart1.Series(count).ChartType = DataVisualization.Charting.SeriesChartType.Spline
Chart1.DataSource = dt
Chart1.Series(count).XValueMember = (counteruno)
Chart1.Series(count).YValueMembers = (counterdos)
NewTab.Name = (count + 1)
NewTab.Text = NewTab.Name
datagrids.Dock = DockStyle.Fill
datagrids.RowHeadersVisible = False
Dim datatable As New DataTable
datatable.Columns.Add("X data")
datatable.Columns.Add("Y data")
count += 1
Me.TabControl1.Controls.Add(NewTab)
NewTab.Controls.Add(datagrids)
Me.TabControl1.SelectedIndex = Me.TabControl1.TabCount - 1
'Dim series As DataVisualization.Charting.Series = New DataVisualization.Charting.Series()
DataGridView1.DataSource = dt
datagrids.DataSource = datatable
Chart1.DataSource = dt
Chart1.ChartAreas(0).AxisX.IntervalOffset = 1
lastmaxX = Round(chartmaximumX, 0)
lastmaxY = Round(chartmaximumY, 0)
Chart1.ChartAreas(0).AxisX.IsStartedFromZero = True
Chart1.ChartAreas(0).AxisY.IsStartedFromZero = True
counteruno = counteruno + 1
counterdos = counterdos - 1
End Sub
Public Class Calculate
Public Sub Projectile(ByVal g As Double, ByVal ivelocityX As Double, ByVal ivelocityY As Double, ByVal maxt As Double, ByVal firstiteration As Boolean, ByRef counteruno As Integer, ByRef counterdos As Integer)
Dim datatable As New DataTable
Dim x As Double = 0
Dim y As Double = 0
Dim t As Double = 0
datatable.Columns.Add(counteruno)
datatable.Columns.Add(counterdos)
Do
If firstiteration = True Then
Dim firstrow As DataRow = datatable.NewRow
firstrow.SetField(0, 0)
firstrow.SetField(1, 0)
datatable.Rows.Add(firstrow)
firstiteration = False
Else
End If
t = t + (maxt / 100)
x = Round(ivelocityX * t, 3)
y = Round(ivelocityY * t + 0.5 * -g * (t ^ 2), 3)
Dim nextRow As DataRow = datatable.NewRow
Dim lastrow As DataRow = datatable.NewRow
If y > 0 Then
nextRow.SetField(0, x)
nextRow.SetField(1, y)
datatable.Rows.Add(nextRow)
Else
t = maxt
y = 0
lastrow.SetField(0, x)
lastrow.SetField(1, y)
datatable.Rows.Add(lastrow)
End If
Loop Until t >= maxt
If firstiteration = True Then
ProjectileForm.dt = datatable
Else
ProjectileForm.dt.Merge(datatable)
End If
ProjectileForm.dt = datatable
ProjectileForm.DataGridView1.DataSource = ProjectileForm.dt
ProjectileForm.dset.Tables.Add(datatable)
End Sub
End Class
Thanks : )
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|