Vb.net 如何使用vb中数据库中的组合框选择填充文本框和复选框

Vb.net 如何使用vb中数据库中的组合框选择填充文本框和复选框,vb.net,Vb.net,当我在“员工”组合框中选择员工姓名时,我想查看工资单表单中的文本框和其他复选框,以从员工注册数据库中获取数据。请了解我如何做到这一点。下面是我尝试过的,但它不起作用 Private Sub employeenamecmbbx_SelectedIndexChanged(sender As Object, e As EventArgs) Handles employeenamecmbbx.SelectedIndexChanged Try con = New OleDbConn

当我在“员工”组合框中选择员工姓名时,我想查看工资单表单中的文本框和其他复选框,以从员工注册数据库中获取数据。请了解我如何做到这一点。下面是我尝试过的,但它不起作用

Private Sub employeenamecmbbx_SelectedIndexChanged(sender As Object, e As EventArgs) Handles employeenamecmbbx.SelectedIndexChanged
    Try
        con = New OleDbConnection(cs)
        con.Open()
        Dim ct As String = "select employeename,basicsalary,cashbenefits,allowances,vehiclefueldriver,vehiclefuel,vehicleonly,fuelonly,accomodationwithfurnishing  m ,accomodationonly,sharedaccomodation from employeeregistration where employeename=@find"

        cmd = New OleDbCommand(ct)
        cmd.Connection = con
        cmd.Parameters.Add(New OleDbParameter("@find", OleDbType.VarChar, 30, "employeename"))
        cmd.Parameters("@find").Value = Trim(employeenamecmbbx.Text)
        rdr = cmd.ExecuteReader()
        If rdr.Read Then
            Allowances.Text = Trim(rdr.GetString(0))
            BasicSalary.Text = Trim(rdr.GetInt32(1))
            CashBenefits.Text = Trim(rdr.GetString(2))
            Vehicle_Fuel_DriverCheckBox.Checked = Trim(rdr.GetString(3))
            Vehicle_FuelCheckBox.CheckState = Trim(rdr.GetString(4))
            VehicleOnlyCheckBox.CheckState = Trim(rdr.GetString(5))
            FuelOnlyCheckBox.CheckState = Trim(rdr.GetString(6))
            AccomodationOnlyCheckBox.CheckState = Trim(rdr.GetString(7))
            AccomodationWithFurnishingCheckBox.CheckState = Trim(rdr.GetString(8))
            Shared_AccomodationCheckBox.CheckState = Trim(rdr.GetString(9))
            MarriageReponsibilityCheckBox.CheckState = Trim(rdr.GetString(10))
            DisabledCheckBox.CheckState = Trim(rdr.GetString(11))
            OldAgeCheckBox.CheckState = Trim(rdr.GetString(12))
            ChildEducationCheckBox.CheckState = Trim(rdr.GetString(13))
            AgeDependantCheckBox.CheckState = Trim(rdr.GetString(14))
            TrainingCostCheckBox.CheckState = Trim(rdr.GetString(15))
            Tier3ContributionCheckBox.CheckState = Trim(rdr.GetString(16))

        End If
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try

    If Not rdr Is Nothing Then
        rdr.Close()
    End If
End Sub

这是我所做的,但是当我尝试什么都不发生时,我认为在尝试读取之前,首先需要检查rdr.hasRows()是否出现问题。这可能会导致发生异常


您是否收到错误消息,或者只是没有在复选框和文本框中输入任何内容?

我收到一条错误消息,表示一个或多个参数没有给定值。在这种情况下,
employeenamecmbbx.Text
字段中没有任何内容时,可能会发生这种情况。在尝试检索数据之前,我会进行检查以确保其中有内容。谢谢,现在我已经完成了检查,但问题是现在显示“指定的强制转换无效”,这是下面的代码。您可以告诉我问题是什么吗?我想您从
Vehicle\u Fuel\u DriverCheckBox.Checked=Trim(rdr.GetString(3))获得强制转换错误)
所有不能直接从字符串转换为布尔值的复选框字段。您需要将它们包装在一个
CBool()
中,即
Vehicle\u Fuel\u DriverCheckBox.Checked=CBool(Trim(rdr.GetString(3))
,只要有东西就可以工作,或者创建一个函数,为从数据库返回的数据返回正确的布尔值。