Неверная логика автоматического увеличения строки? - PullRequest
0 голосов
/ 14 сентября 2018

Ниже этого кода я получаю неправильный вывод при увеличении строкового значения в столбце моей базы данных "SupplierID". Я передаю строковое значение в свой lbl_id в форме ADDSupplier, и это то, что я использовал для вставки значения в мой «SupplierID».

Желаемый вывод:

  • SPPL-0001
  • SPPL-0002
  • SPPL-0003
    и т. д.

Текущий вывод (ниже этих кодов):

  • SPPL-0001
  • SPPL-00012
  • SPPL-00013
    и т.д.

ПРИМЕЧАНИЕ. Когда я повторяю вставку данных, я получаю текущий вывод, который я указал выше, но когда я перезапускаю программу и последнее введенное значение, например, SPPL-00013. Когда я открываю форму добавления, lbl_id отображает идентификатор как SPPL-0004. Если я продолжу, он станет SPPL-00045.

PS: SupplierID - это varchar (50) в моей базе данных, а также PRIMARY_KEY

Это изображение показывает неправильный вывод шахты

Я хочу получить помощь, чтобы исправить мою логику и получить желаемый результат. Пожалуйста, помогите мне. Спасибо

public partial class SIMSSupplier : UserControl
{
    ADDSupplier supply;
    public SIMSSupplier()
    {
        InitializeComponent();

    }
    public string ID = "SPPL-000";
         public void GenerateAutoID()
    {
        using (var con = SQLConnection.GetConnection())
        {
            using (var select = new SqlCommand("Select Count(SupplierID) from admin_supplier", con))
            {
                int i = Convert.ToInt32(select.ExecuteScalar());
                i++;
                supply.lbl_id.Text = ID + i.ToString();
            }

        }
    }
    private void btn_register_Click(object sender, EventArgs e)
    {
        supply = new ADDSupplier(this);
        supply.Show();
        GenerateAutoID();
    }
}


 public partial class ADDSupplier : MetroForm
{
    SIMSSupplier _view;
    public ADDSupplier(SIMSSupplier _view)
    {
        InitializeComponent();
        this._view = _view;

    }

   string date = DateTime.Now.ToString("MMMM-dd-yyyy");
   private void btn_ok_Click(object sender, EventArgs e)
    {
        _view.ID = lbl_id.Text;
        using (var con = SQLConnection.GetConnection())
        {
            if (string.IsNullOrEmpty(txt_name.Text) || string.IsNullOrEmpty(txt_contact.Text) || string.IsNullOrEmpty(cbox_remark.Text) || string.IsNullOrEmpty(txt_address.Text))
            {
                CustomNotifcation.Show("Please input the required fields", CustomNotifcation.AlertType.warning);
            }
            else
            {
                using (var select = new SqlCommand("Insert into admin_supplier (SupplierID, Companyname, Contactnumber, Date, Remarks, Address) Values (@SupplierID, @Companyname, @Contactnumber, @Date, @Remarks, @Address)", con))
                {
                    select.Parameters.Add("@SupplierID", SqlDbType.VarChar).Value = lbl_id.Text;
                    select.Parameters.Add("@Companyname", SqlDbType.VarChar).Value = txt_name.Text;
                    select.Parameters.Add("@Contactnumber", SqlDbType.VarChar).Value = txt_contact.Text;
                    select.Parameters.Add("@Date", SqlDbType.VarChar).Value = date;
                    select.Parameters.Add("@Remarks", SqlDbType.VarChar).Value = cbox_remark.Text;
                    select.Parameters.Add("@Address", SqlDbType.VarChar).Value = txt_address.Text;
                    select.ExecuteNonQuery();
                    CustomMessage.Show("Message: Supplier successfully added!", CustomMessage.Messagetype.Success2);
                    _view._Supplier();
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 14 сентября 2018

Вам просто нужно использовать строку формата:

string ID = "SPPL-"
supply.lbl_id.Text = ID + i.ToString("0000");

Что приведет к правильному применению формата. Прямо сейчас вы добавляете переменную i к идентификатору, который уже равен SPPL-000, поэтому следующим становится SPPL-0001 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...