kumih101 Ответов: 0

Как сделать так, чтобы номер детали и количество отображали правильное значение в правильном текстовом поле ?


Я сделал производственную форму и цели, когда я сканирую ее с помощью считывателя штрих-кодов, она должна появиться в текстовых полях, соответствующих штрих-кодам. Он также будет производить детали. Когда я запустил его, EmpID соответствует штрих-коду, но не отображает имя сотрудника. Как только я сканирую штрих-код для номера детали "P" появился в тексте и "1-1" появился в текстовом поле количества, которое он не должен, то появляется сообщение о том, что входная строка не в правильном формате.

это мой код.:

private void txtEmpID_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Enter)
    {
        txtPartNumber.Focus();
    }
}

private void txtPartNumber_KeyPress(object sender, KeyPressEventArgs e)
{
    txtQuantity.Focus();
}

private void txtQuantity_KeyPress(object sender, KeyPressEventArgs e)
{
    try
    {
        if (e.KeyChar == (char)Keys.Enter)
        {
            SQLInventoryClass MySQL = new SQLInventoryClass();
            int Quantity = int.Parse(txtQuantity.Text);
            lb1PartName.Text = MySQL.GetPartName(txtPartNumber.Text);
            if (txtPartNumber.Text == "p1-1" || txtPartNumber.Text == "p1-2" || txtPartNumber.Text == "p1-3" || txtPartNumber.Text == "p1-4")
            {
                MySQL.AddInventory(txtPartNumber.Text, 
                                  Int32.Parse(txtQuantity.Text), 
                                  txtEmpID.Text);
                lb1Status.Text = txtPartNumber.Text + " added ";
            }
            // Manufacture a p2-1
            else if (txtPartNumber.Text == "p2-1")
            {
                int numPart1 = MySQL.GetQuantity("p1-1");
                int numPart2 = MySQL.GetQuantity("p2-1");
                if  (numPart1 >= Quantity && numPart2 >= Quantity * 2)
                {
                    MySQL.RemoveInventory("p1-1", 1 * Quantity, txtEmpID.Text);
                    MySQL.RemoveInventory("p1-2", 2 * Quantity, txtEmpID.Text);
                    MySQL.AddInventory("p2-1", 1 * Quantity, txtEmpID.Text);
                    lb1Status.Text = "Quantity of " + txtQuantity.Text + " added with part number " + txtPartNumber.Text;
                    txtEmpID.Text = "";
                    txtPartNumber.Text = "";
                    txtQuantity.Text = "";
                    txtEmpID.Focus();
                }
                else
                {
                    lb1Status.Text = "Error: not enough parts in inventory of manufacture parts.";
                }
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}


Что я уже пробовал:

Я попытался погуглить эту проблему, я рано написал своему инструктору по электронной почте, но ответа не получил. Я воспользовался отладчиком и перешагнул через код.

Gerry Schmitz

Вы сказали много, но не то, что на самом деле сообщает считыватель штрих-кодов. Вы "пуленепробиваемый" процесс считывания штрих-кодов; только тогда вы начинаете беспокоиться о текстовых полях, SQL и остальном. Протоколирование всего, что сообщает считыватель штрих-кодов, было бы хорошим началом.

kumih101

на самом деле, мой инструктор отправил нам считыватель штрих-кодов, так что я уже прошел через этот процесс, я просто пытаюсь понять, почему он продолжает говорить: "входная строка не является правильным форматом?

BillWoodruff

как вы думаете, почему ваш инструктор не ответил ? вы ставили точки останова и в один шаг просматривали код, чтобы узнать, где происходит ошибка ?

kumih101

Да, я понял проблему, это было потому, что я не поставил утверждение if

0 Ответов