数据源不再填充数据调用VB 2010

时间:2014-12-29 18:55:54

标签: vb.net visual-studio-2010

我在我的表单应用程序中使用了一个DataSource,它适用于全面的呼叫,填充,添加,删除等...它突然停止工作。我在构建时没有错误,没有数据添加到任何ComboBox,也没有新的Adds工作。

我从同一个数据库创建了一个新的DataSource,它可以使用完全相同的连接。数据库的位置从未移动过,没有对DataSource的任何属性或分配给源的任何适配器进行任何更改,它只是停止工作。这是我的表格的一些屏幕截图和代码。

我尝试进行代码比较但由于分配给源的一堆适配器我找不到任何异常。什么会破坏数据连接,以便代码仍然可以看到连接,但没有任何东西被填满?

以下代码不再有效,没有填充或添加到DCGDataSet;

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs)
    'TODO: This line of code loads data into the 'DCGDataSet1.Main' table. You can move, or remove it, as needed.
    Me.MainTableAdapter.Fill(Me.DCGDataSet.Main)
    Me.MainTableAdapter.Fill(Me.DCGDataSet.Main)
    'comboClear()

End Sub

Private Sub btnAddNew_Click(sender As Object, e As System.EventArgs)

    ' Add new Job to the database
    Dim newJobRow As New DCGDataSetTableAdapters.MainTableAdapter
    Dim intInsert As Integer
    Dim jobText = txtBoxAddNewJob.Text
    intInsert = newJobRow.InsertJob(jobText)
    If intInsert = 1 Then
        MessageBox.Show("New Job Added")
        ' Update the comboBox values
        Me.MainTableAdapter.Fill(Me.DCGDataSet.Main)
        txtBoxAddNewJob.Text = ""
        clearTabOne()
    Else
        MessageBox.Show("Job Not Added")
    End If
End Sub

以下对ComboBox的调用工作正常,这是新的DataSource;

Private Sub MainForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'DCGDataSet1.Main' table. You can move, or remove it, as needed.
    Me.MainTableAdapter1.Fill(Me.DCGDataSet1.Main)

End Sub

这些照片属于我正在使用的两个DS,最重要的是非工作DS。 Non-Working DS

Working DS

Form1代码的整个.vb;

Public Class MainForm

Dim strCurrency As String = ""
Dim acceptableKey As Boolean = False

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'DCGDataSet1.Main' table. You can move, or remove it, as needed.
    Me.MainTableAdapter.Fill(Me.DCGDataSet.Main)
    Me.MainTableAdapter.Fill(Me.DCGDataSet.Main)
    comboClear()

End Sub

Private Sub btnAddNew_Click(sender As Object, e As System.EventArgs)

    ' Add new Job to the database
    Dim newJobRow As New DCGDataSetTableAdapters.MainTableAdapter
    Dim intInsert As Integer
    Dim jobText = txtBoxAddNewJob.Text
    intInsert = newJobRow.InsertJob(jobText)
    If intInsert = 1 Then
        MessageBox.Show("New Job Added")
        ' Update the comboBox values
        Me.MainTableAdapter.Fill(Me.DCGDataSet.Main)
        txtBoxAddNewJob.Text = ""
        clearTabOne()
    Else
        MessageBox.Show("Job Not Added")
    End If
End Sub

Private Sub TabPage2_Enter(sender As Object, e As System.EventArgs)
    Me.ActiveControl = txtBoxAddNewJob
    clearTabOne()
End Sub

Public Sub comboClear()
    ComboBox1.SelectedIndex = -1
    ComboBox2.SelectedIndex = -1
End Sub

Private Sub TabPage1_Enter(sender As Object, e As System.EventArgs)
    'comboClear()
    ComboBox1.SelectedIndex = -1
    'ComboBox1.SelectedText = ""
End Sub

Private Sub TabPage3_Enter(sender As Object, e As System.EventArgs)
    'comboClear()
    ComboBox2.SelectedIndex = -1
    clearTabOne()
End Sub

Private Sub btnDeleteJob_Click(sender As Object, e As System.EventArgs)
    Dim delJobID = ComboBox2.SelectedValue
    Dim delJobRowAdpt As New DCGDataSetTableAdapters.MainTableAdapter
    Dim delJobRow As DCGDataSet.MainRow
    Dim intDelete As Integer
    delJobRow = DCGDataSet.Main.FindByID(delJobID)
    delJobRow.Delete()
    intDelete = delJobRowAdpt.Update(DCGDataSet.Main)
    If intDelete = 1 Then
        MessageBox.Show("Job Deleted")
        'comboClear()
        clearTabOne()
        'ComboBox2.SelectedValue = -1
        Me.MainTableAdapter.Fill(Me.DCGDataSet.Main)
    Else
        MessageBox.Show("Job Failed to Delete")
    End If
    ComboBox2.SelectedValue = -1
End Sub

Private Sub FillSubCombo(ByVal subJob As String)
    Dim selSubRow = DCGDataSet.SubBilling
    Dim selSubValue As New DCGDataSetTableAdapters.SubBillingTableAdapter
    Me.SubBillingTableAdapter.SubName(Me.DCGDataSet.SubBilling, subJob)

End Sub

Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As System.EventArgs)
    Dim subJob As String = ComboBox1.Text
    If subJob.Length > 1 Then
        Label5.Visible = True
        ComboBox3.Visible = True
        FillSubCombo(subJob)
    End If
End Sub

Public Sub clearTabOne()
    Label5.Visible = False
    ComboBox3.Visible = False
End Sub

Private Sub TabPage4_Enter(sender As Object, e As System.EventArgs)
    clearTabOne()
End Sub

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    If (e.KeyCode >= Keys.D0 And e.KeyCode <= Keys.D9) OrElse (e.KeyCode >= Keys.NumPad0 And e.KeyCode <= Keys.NumPad9) OrElse e.KeyCode = Keys.Back Then
        acceptableKey = True
    Else
        acceptableKey = False
    End If
End Sub

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    ' Check for the flag being set in the KeyDown event.
    If acceptableKey = False Then
        ' Stop the character from being entered into the control since it is non-numerical.
        e.Handled = True
        Return
    Else
        If e.KeyChar = Convert.ToChar(Keys.Back) Then
            If strCurrency.Length > 0 Then
                strCurrency = strCurrency.Substring(0, strCurrency.Length - 1)
            End If
        Else
            strCurrency = strCurrency & e.KeyChar
        End If

        If strCurrency.Length = 0 Then
            TextBox1.Text = ""
        ElseIf strCurrency.Length = 1 Then
            TextBox1.Text = "0.0" & strCurrency
        ElseIf strCurrency.Length = 2 Then
            TextBox1.Text = "0." & strCurrency
        ElseIf strCurrency.Length > 2 Then
            TextBox1.Text = strCurrency.Substring(0, strCurrency.Length - 2) & "." & strCurrency.Substring(strCurrency.Length - 2)
        End If
        TextBox1.Select(TextBox1.Text.Length, 0)

    End If
    e.Handled = True
End Sub

Private Sub MainForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'DCGDataSet1.Main' table. You can move, or remove it, as needed.
    Me.MainTableAdapter1.Fill(Me.DCGDataSet1.Main)

End Sub
End Class

1 个答案:

答案 0 :(得分:1)

您的无效代码缺少HandlesForm1_Load上的btnAddNew_Click条款。如果您不将事件处理程序连接到事件(使用Handles子句或AddHandler语句),则事件处理程序将无法运行。