Я очень программист noobie, пытающийся написать небольшую часть программного обеспечения.C# Использование выбора ComboBox для PrePopulate TextBox's
В этом коде я пытаюсь предварительно заполнить текстовое поле в форме с подробной информацией из базы данных OleDB по новому выбору ComboBox.
В принципе, нажатие на имя в ComboBox будет предусматривать некоторое текстовое поле с подробностями относительно этого имени.
Проблема в том, что код не присваивает значения из данных в текстовое поле. Вместо этого на текстовом поле отображается «0».
Как мне обойти это?
private void cbbEmployees_SelectedIndexChanged(object sender, EventArgs e)
{
int PayrollNo = 0;
int AnnualHolidayEntitlemet = 0;
int DaysTakenToDate = 0;
string Query = "SELECT PayrollNo, AnnualHolidayEntitlement, DaysTakenToDate FROM [Employee] WHERE FirstName + ' ' + LastName = ?";
string ConnString = @"Provider = Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\HoliPlanData.accdb;Persist Security Info=False";
using (OleDbConnection conn = new OleDbConnection(ConnString))
using (OleDbCommand GetAllcmd = new OleDbCommand(Query, conn))
{
conn.Open();
GetAllcmd.Parameters.Add("?", OleDbType.VarChar).Value = cbbEmployees.Text;
GetAllcmd.Parameters.Add("@PayrollNo", OleDbType.VarChar).Value = PayrollNo;
GetAllcmd.Parameters.Add("@AnnualHolidayEntitlement", OleDbType.VarChar).Value = AnnualHolidayEntitlemet;
GetAllcmd.Parameters.Add("@DaysTakenToDate", OleDbType.VarChar).Value = DaysTakenToDate;
GetAllcmd.ExecuteScalar();
txtPayrollNo.Text = PayrollNo.ToString();
txtAHE.Text = AnnualHolidayEntitlemet.ToString();
txtDTTD.Text = DaysTakenToDate.ToString();
txtDaysRemaining.Text = (AnnualHolidayEntitlemet - DaysTakenToDate).ToString();
}
}
естественно. После первоначальной декларации вы не присвоили ничего переменным. поэтому он всегда будет иметь значение по умолчанию 0. – Takarii
В дополнение к этому ваш запрос будет возвращать 'PayrollNo' только когда вы используете' ExecuteScalar' – Takarii
Не назначать ли я их после открытия соединения? – Josh