使用ComboBox选择显示MS ACCESS表

时间:2013-01-01 13:23:06

标签: vb.net ms-access

需要你的帮助。我是学生,我正在为我的会计课程项目开展VB.Net计划。现在,我对使用OleDB知之甚少,所以我需要你的帮助。

以下是详细信息:

  1. 数据库为MS ACCESS 2007OleDB
  2. 数据库表格为tbl_logintbl_producttbl_transaction
  3. 表单为Form1Form2和1 Module
  4. ComboBox值为UsersProductTransaction
  5. 语言为VB
  6. 当我运行该程序时,将出现一个登录表单(Form 1)并需要用户名和密码。当用户提交他的用户名和密码时,程序将检查它是否与名为tbl_login的数据库表中的匹配。如果匹配,则继续下一个表单(Form 2)。此处,存在ListViewComboBox。加载时,列表视图的默认内容是tbl_login的内容,组合框值为Users

    现在,我希望我的程序要做的是,当我将组合框值更改为Products时,listview项目将是tbl_products的内容,当组合框值为transaction时,tbl_transaction内容将显示在listview

    我将如何编写此代码?

    我非常感谢你的帮助。感谢。

2 个答案:

答案 0 :(得分:0)

您尚未指定VB.NET版本,因此我将假设.NET 4.0运行时。我建议你阅读有关组合框事件,控件的DataSource属性的信息。您需要将代码放在组合框的SelectionChanged事件中以获取SelectedValue,查询tbl_transaction表并分配ListView的DatSource属性。我不认为我应该添加更多,因为你应该为你的作业工作。

答案 1 :(得分:0)

解决!我只是尝试了一些方面,我不知道究竟是什么解决了这个问题。 :)首先,我将表格字段的所有数据类型从Numbers更改为Text。其次,我修改了form2_load和combobox_selectedindexchanged中的一些代码。

在:

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    con.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source = ..\Accounting2.accdb"
    con.Open()
    ComboBox1.SelectedIndex = 0
    sSqlUser = "SELECT df, sdf, asdf FROM tbl_login ORDER BY df"
    sSqlProduct = "SELECT cv, xcv, zxcv FROM tbl_product ORDER BY cv"
    sSqlTransaction = "SELECT rt, ert, wert, qwert FROM tbl_transaction ORDER BY rt"
    sSql = sSqlUser
    Call FillList()
    Dim dt As New DataTable
End Sub

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    If ComboBox1.SelectedIndex = 0 Then
        sSql = sSqlUser

    ElseIf ComboBox1.SelectedIndex = 1 Then
        sSql = sSqlProduct

    ElseIf ComboBox1.SelectedIndex = 2 Then
        sSql = sSqlTransaction

    End If
End Sub

然后:

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    con.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source = ..\Accounting2.accdb"
    con.Open()

    sSqlUser = "SELECT df, sdf, asdf FROM tbl_login ORDER BY df"
    sSqlProduct = "SELECT cv, xcv, zxcv FROM tbl_product ORDER BY cv"
    sSqlTransaction = "SELECT rt, ert, wert, qwert FROM tbl_transaction ORDER BY rt"
    ComboBox1.SelectedIndex = 0
End Sub

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    If ComboBox1.SelectedIndex = 0 Then
        sSql = sSqlUser

    ElseIf ComboBox1.SelectedIndex = 1 Then
        sSql = sSqlProduct

    ElseIf ComboBox1.SelectedIndex = 2 Then
        sSql = sSqlTransaction

    End If
    Call FillList()
    Dim dt As New DataTable
End Sub