Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使用连接字符串基于另一个组合框填充组合框(SQL Server、VB.NET)_Sql Server_Vb.net_Combobox - Fatal编程技术网

Sql server 如何使用连接字符串基于另一个组合框填充组合框(SQL Server、VB.NET)

Sql server 如何使用连接字符串基于另一个组合框填充组合框(SQL Server、VB.NET),sql-server,vb.net,combobox,Sql Server,Vb.net,Combobox,当用户从combobox 1(我们与之合作的公司)中选择客户机时,它应该仅为该客户机从combobox 2中填充用户,该客户机需要来自SQL Server中的特定数据库 例如: 第一个组合框包含所有客户机当用户选择一个客户机,第二个组合框包含该数据库中的所有用户时,我希望第二个组合框的用户列表通过SQL Server根据从第一个组合框列表中选择的客户机进行更改,但包括一个连接字符串 所以,如果我在组合框1和组合框2中选择say…Google,我希望会有10个来自Google的用户。但如果我改变主

当用户从combobox 1(我们与之合作的公司)中选择客户机时,它应该仅为该客户机从combobox 2中填充用户,该客户机需要来自SQL Server中的特定数据库

例如:

第一个组合框包含所有客户机当用户选择一个客户机,第二个组合框包含该数据库中的所有用户时,我希望第二个组合框的用户列表通过SQL Server根据从第一个组合框列表中选择的客户机进行更改,但包括一个连接字符串

所以,如果我在组合框1和组合框2中选择say…Google,我希望会有10个来自Google的用户。但如果我改变主意,在组合框1和组合框2中选择雅虎,我希望说。。。。。这一次大约有12名来自雅虎的用户

我正在使用的数据库名称:MyDatabase

根据我所做的选择,从这些数据库获取用户,该选择包含这些特定用户,而不是MyDatabase,MyDatabase也包含用户:

  • GoogleQA(如果用户选择Google,则仅从该数据库获取用户并在运行时填充)
  • YahooQA(如果用户选择Yahoo,则仅从该数据库获取用户并在运行时填充)
我的VB.Net代码:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("conStr").ConnectionString)
        Dim cmd As New SqlCommand("Select * from CLIENTS", con)
        con.Open()
        Dim dt As New DataTable
        dt.Load(cmd.ExecuteReader())
        con.Close()
        cboClient.DataSource = dt
        cboClient.DisplayMember = "CLIENT_NAME"
        cboClient.ValueMember = "ID"

        rtfMessage.Tag = "Enter your message here"
        rtfMessage.Text = CStr(rtfMessage.Tag)
我可以在我的组合框代码中输入什么来实现我想要实现的最终目标:

  Private Sub cboUser_SelectedValueChanged(sender As Object, e As EventArgs) Handles cboUser.SelectedValueChanged
--What do I put here?
    End Sub

Private Sub cboClient_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboClient.SelectedIndexChanged
        Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("conStr2").ConnectionString)
        Dim cmd As New SqlCommand("Select * from USERS", con)
        con.Open()
        Dim dt As New DataTable
        dt.Load(cmd.ExecuteReader())
        con.Close()
        cboClient.DataSource = dt
        cboClient.DisplayMember = "NetworkID"
        cboClient.ValueMember = "ID"
        cboClient.Text = ""
        If cboClient.SelectedItem.Text = "Sunoco" Then
            cboUser.Items.Add("NetworkID")
        End If
    End Sub
可能性:在客户端上更改组合框功能(cboClient\u SelectedValueChanged)


您只需在用户部分内的if语句中执行加载部分中所做的操作

有点像:

    `If cboClient.SelectedItem.Text = "Google" then
     (code to populate the other combobox with google info)
     End if`


     `If cboClient.SelectedItem.Text = "Yahoo" then 
        dim sql as string = "Select firstName+ " " +lastname as empName from 
        Yahoo table"
        dim cmd as sqladapter(sql, con)
        dim dt as datatable
        cmd.fill(dt)
        cboUsers.datasource = dt
        cboUsers.Datatextfield = "empName"
        cboUsers.Datavaluefield = "empName"
        cboUsers.DataBind()
     End if


        Dim sql2 As String = "Select EQPnumber, EQPdesc from CREW_LINEUP_ACTIVE_EQUIPMENT"
        Dim activeEQPadt As New SqlDataAdapter(sql2, IPMS.Settings.conn)
        activeEQPadt.Fill(activeDT)
        ActiveEQPLstBx.DataSource = activeDT
        ActiveEQPLstBx.DataTextField = "EQPdesc"
        ActiveEQPLstBx.DataValueField = "EQPnumber"
        ActiveEQPLstBx.DataBind()

所以每次组合框中的任何一个发生变化时,您都想从表中获取数据吗?您所说的“但包括连接字符串…”是什么意思?你想把它包括在什么里面?我认为你应该试着更清楚地描述你要做的事情。当组合框1(客户端)改变时,它应该只显示来自特定数据库的用户。就像我为客户端设置了一个连接字符串,当我运行它时,它填充了大约6条记录,如果我选择了该客户端,那么Combobox 2应该列出我选择的客户端(并且仅从该数据库)中的所有用户。你可以看到我为客户端设置了SQL变量,但我也希望为用户这样做,但是要从数据库(或我在UI上选择的客户端)获取数据,我很抱歉,我很难理解您想要什么。我也不知道你说客户和用户是什么意思,或者他们之间有什么关系。我认为需要更多的信息,比如你的表格结构。我编辑。现在这更有意义了吗?你能让这更具可读性一点,并可能扩展你的答案吗?我将不胜感激。在您的cboClient\u selectedIndexChanged子例程中,'如果cboClient.SelectedItem.Text=“Google”,那么(这是您用Google用户填充用户cboBox的代码,应该类似于您最初填充客户端框的方式)结束如果“”如果cbo.client.selecteditem.text=“yahoo”则(填充客户端框的代码)结束如果“”“使用yahoo信息填充其他组合框的代码”如果我选择Yahoo并从YahooQA获取用户,那么要编写的正确代码是什么?就像我有tblyahoo和测试数据一样。这取决于你的表列是什么以及它们之间是如何相互关联的。我有很多,但我想从tblyahoo表中将名字和姓氏组合在一起。那么正确的代码是什么呢。你能编辑你的答案吗?
    `If cboClient.SelectedItem.Text = "Google" then
     (code to populate the other combobox with google info)
     End if`


     `If cboClient.SelectedItem.Text = "Yahoo" then 
        dim sql as string = "Select firstName+ " " +lastname as empName from 
        Yahoo table"
        dim cmd as sqladapter(sql, con)
        dim dt as datatable
        cmd.fill(dt)
        cboUsers.datasource = dt
        cboUsers.Datatextfield = "empName"
        cboUsers.Datavaluefield = "empName"
        cboUsers.DataBind()
     End if


        Dim sql2 As String = "Select EQPnumber, EQPdesc from CREW_LINEUP_ACTIVE_EQUIPMENT"
        Dim activeEQPadt As New SqlDataAdapter(sql2, IPMS.Settings.conn)
        activeEQPadt.Fill(activeDT)
        ActiveEQPLstBx.DataSource = activeDT
        ActiveEQPLstBx.DataTextField = "EQPdesc"
        ActiveEQPLstBx.DataValueField = "EQPnumber"
        ActiveEQPLstBx.DataBind()