K
Ken Powers
Hello everyone,
I'm getting a strange error when I try to bind a combo box to a Dataset.
Here's my code!
Private Sub Get_Data()
Try
Dim sqlcmd = New SqlCommand("Select * from Utility order by
Utility", sqlConn)
daDataAdapter = New SqlDataAdapter
daDataAdapter.SelectCommand = sqlcmd
dsDataSet = New Dataset
daDataAdapter.Fill(dsDataSet, "Utility")
sqlcmd = New SqlCommand("Select * from Adjustments", sqlConn)
daDataAdapter = New SqlDataAdapter
daDataAdapter.SelectCommand = sqlcmd
daDataAdapter.Fill(dsDataSet, "Adjustments")
daRel = New DataRelation("UtilAdjust",
dsDataSet.Tables("Utility").Columns("Code"),
dsDataSet.Tables("Adjustments").Columns("Code"))
dsDataSet.Relations.Add(daRel)
Set_Update_Command()
Set_Insert_Command()
Set_Delete_Command()
Catch ex As Exception
MessageBox.Show(ex.Source.ToString & " - " & ex.Message,
Application.ProductName, _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub BindFields()
Try
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeOf ctrl Is TextBox Then
ctrl.DataBindings.Clear()
ctrl.Text = ""
End If
Next
cbUtility.DataBindings.Clear()
cbType.DataBindings.Clear()
For Each ctrl In Me.GroupBox1.Controls
If TypeOf ctrl Is TextBox Then
ctrl.DataBindings.Clear()
ctrl.Text = ""
End If
Next
cbUtility.DataSource = dsDataSet.Tables("Utility")
cbUtility.DisplayMember = "UTILITY"
cbUtility.ValueMember = "CODE"
tbAN.DataBindings.Add("Text", dsDataSet,
"Utility.UtilAdjust.AdjustmentName")
lblAK.DataBindings.Clear()
lblAK.DataBindings.Add("Text", dsDataSet,
"Utility.UtilAdjust.AdjKey")
BindDate(tbASD, "UTILITY.UtilAdjust.AdjStartDate")
BindDate(tbAED, "UTILITY.UtilAdjust.AdjEndDate")
BindCurr(tbAA, "UTILITY.UtilAdjust.adjustment")
BindType(cbType, "UTILITY.UtilAdjust.type")
bmUtil = Me.BindingContext(dsDataSet, "Utility")
bmAdjust = Me.BindingContext(dsDataSet, "UTILITY.UtilAdjust")
AddHandler Me.BindingContext(dsDataSet,
"Utility").PositionChanged, _
AddressOf dtUtil_PositionChanged
Catch ex As Exception
MessageBox.Show(ex.Source.ToString & " - " & ex.Message,
Application.ProductName, _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
First I get my data by calling Get_Data(), Next I bind my data be calling
BindFields()
I get the following error when I hit these statements. cbUtility = combo
box = System.Windows.Forms.ComboBox
cbUtility.DataSource = dsDataSet.Tables("Utility")
cbUtility.DisplayMember = "UTILITY"
Error:
"Microsoft.VisualBasic - Cast from type 'DataRowView' to type 'String' is
not valid"
Another odd thing is when the exception is raised my "Catch" doesn't pick it
up! I get an error message on those lines and the program keeps going?
Also everything works correctly, all controls are bound correctly, including
that combo box.
THanks,
I'm getting a strange error when I try to bind a combo box to a Dataset.
Here's my code!
Private Sub Get_Data()
Try
Dim sqlcmd = New SqlCommand("Select * from Utility order by
Utility", sqlConn)
daDataAdapter = New SqlDataAdapter
daDataAdapter.SelectCommand = sqlcmd
dsDataSet = New Dataset
daDataAdapter.Fill(dsDataSet, "Utility")
sqlcmd = New SqlCommand("Select * from Adjustments", sqlConn)
daDataAdapter = New SqlDataAdapter
daDataAdapter.SelectCommand = sqlcmd
daDataAdapter.Fill(dsDataSet, "Adjustments")
daRel = New DataRelation("UtilAdjust",
dsDataSet.Tables("Utility").Columns("Code"),
dsDataSet.Tables("Adjustments").Columns("Code"))
dsDataSet.Relations.Add(daRel)
Set_Update_Command()
Set_Insert_Command()
Set_Delete_Command()
Catch ex As Exception
MessageBox.Show(ex.Source.ToString & " - " & ex.Message,
Application.ProductName, _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub BindFields()
Try
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeOf ctrl Is TextBox Then
ctrl.DataBindings.Clear()
ctrl.Text = ""
End If
Next
cbUtility.DataBindings.Clear()
cbType.DataBindings.Clear()
For Each ctrl In Me.GroupBox1.Controls
If TypeOf ctrl Is TextBox Then
ctrl.DataBindings.Clear()
ctrl.Text = ""
End If
Next
cbUtility.DataSource = dsDataSet.Tables("Utility")
cbUtility.DisplayMember = "UTILITY"
cbUtility.ValueMember = "CODE"
tbAN.DataBindings.Add("Text", dsDataSet,
"Utility.UtilAdjust.AdjustmentName")
lblAK.DataBindings.Clear()
lblAK.DataBindings.Add("Text", dsDataSet,
"Utility.UtilAdjust.AdjKey")
BindDate(tbASD, "UTILITY.UtilAdjust.AdjStartDate")
BindDate(tbAED, "UTILITY.UtilAdjust.AdjEndDate")
BindCurr(tbAA, "UTILITY.UtilAdjust.adjustment")
BindType(cbType, "UTILITY.UtilAdjust.type")
bmUtil = Me.BindingContext(dsDataSet, "Utility")
bmAdjust = Me.BindingContext(dsDataSet, "UTILITY.UtilAdjust")
AddHandler Me.BindingContext(dsDataSet,
"Utility").PositionChanged, _
AddressOf dtUtil_PositionChanged
Catch ex As Exception
MessageBox.Show(ex.Source.ToString & " - " & ex.Message,
Application.ProductName, _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
First I get my data by calling Get_Data(), Next I bind my data be calling
BindFields()
I get the following error when I hit these statements. cbUtility = combo
box = System.Windows.Forms.ComboBox
cbUtility.DataSource = dsDataSet.Tables("Utility")
cbUtility.DisplayMember = "UTILITY"
Error:
"Microsoft.VisualBasic - Cast from type 'DataRowView' to type 'String' is
not valid"
Another odd thing is when the exception is raised my "Catch" doesn't pick it
up! I get an error message on those lines and the program keeps going?
Also everything works correctly, all controls are bound correctly, including
that combo box.
THanks,