Member 13894223 Ответов: 2

Как добавить несколько сериалов с одинаковыми данными продукта


у меня есть текстовые поля информации о продукте, которые получают свои значения из рабочего списка listview
теперь с идентификатором продукта я хочу, чтобы он сохранил эту информацию в моей базе данных MSSQL
у меня есть текстовое поле для первого серийного номера "старт" и еще одно текстовое поле для ввода заданной суммы
я хочу, чтобы, если я добавлю 0001 в последовательное текстовое поле и 20 в другое, он должен добавить от 0001-0020 в мою SQL-базу данных, когда я сохраняю ту же информацию о продукте

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

if (txtProductID.Text == "" || txtPSerial.Text == "" || txtCat.Text == "" || txtBin.Text == "-" || txtManufac.Text == "" || txtLocation.Текст == "")
{
Ящик для сообщений.Show("заполните текстовые поля для продолжения", "сообщение", кнопки MessageBoxButtons.Хорошо, MessageBoxIcon.Информация);
вернуть;
}
еще
{
пробовать
{
строка sql = @"вставить в tblSerials VALUES(@PID,@Descrip,@Serials,@Catagory,@Location,@Bin,@Manufacturer,@Date,@DateOUT,@DateIN,@Employee,@INOUT)";
//
cm = new SqlCommand(sql, cn);
см.параметры.AddWithValue ("@PID", txtPID3.Text);
см.параметры.AddWithValue("@Descrip", txtProductID.Text);
см.параметры.AddWithValue("@Serials", txtPSerial.Text);
см.параметры.AddWithValue ("@Catagory", txtCat.Text);
см.параметры.AddWithValue ("@Location", txtLocation.Текст);
см.параметры.AddWithValue ("@Bin", txtBin.Text);
см.параметры.AddWithValue ("@Manufacturer", txtManufac.Text);
см.параметры.AddWithValue ("@Date", lblDate.Text);
см.параметры.AddWithValue("@DateOUT", txt1.Text);
см.параметры.AddWithValue("@DateIN", txt2.Text);
см.параметры.AddWithValue ("@Employee", txt3.Text);
см.параметры.AddWithValue("@INOUT", txt4.Text);

см.Метод executenonquery();
Ящик для сообщений.Show("запись успешно сохранена!", "OK!", MessageBoxButtons.Хорошо, MessageBoxIcon.Информация);
//InsertTrail();
этот.Четкий();
это.GetSData();
txtPSerial.Текст = "";



}
catch (SqlException l)
{
Ящик для сообщений.Show("повторный ввод снова. Удостоверение личности уже могут забрать!");
Ящик для сообщений.Показать(l.сообщение);
}

}
}

OriginalGriff

И что же?
В чем твоя проблема?
Где ты застрял?
Какая помощь вам нужна?
Почему, черт возьми, вы думаете, что это хорошая идея в многопользовательской БД?

Member 13894223

Я могу добавить отдельные записи в базу данных ,которую я хочу добавить из txtboxAmount.text (количество сериалов,которые я хочу, скажем, 20, он должен добавить 20 записей в БД с той же информацией о продукте, но с сериалами от 0001, 0002, 0003 до 0020

OriginalGriff

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

И снова: "почему, черт возьми, вы думаете, что это хорошая идея в многопользовательской БД?"

Member 13894223

Я совершенно новичок в кодировании я учусь по ходу дела но это та часть на которой я застрял и не знаю как это сделать

2 Ответов

Рейтинг:
2

OriginalGriff

Цитата:
Я совершенно новичок в кодировании я учусь по ходу дела но это та часть на которой я застрял и не знаю как это сделать

Но вы знаете, как это сделать, и вы знаете - я полагаю - что такое петля.
Вы знаете, как получить содержимое из текстового поля, и вы знаете - я предполагаю - как преобразовать его в целое число.

Объединение этих вещей не является сложным процессом!

Но... это плохая идея, потому что SQL Server-это многопользовательская среда, а это означает, что "предварительное распределение" данных-плохая идея. Почему? Потому что если два пользователя решают выделить одинаковые или перекрывающиеся диапазоны, все смешивается вместе, и вы получаете серьезные проблемы - например, один и тот же серийный номер выдается двум объектам.
Теперь вы можете сказать: "этого не произойдет" - но вы понятия не имеете, для чего будет использоваться код на следующей неделе, на следующей неделе, в следующем году - и если вы получите несколько пользователей, вводящих данные (и вы это сделаете), то в какой - то момент это произойдет-и тогда это станет настоящей питой, чтобы разобраться, потому что база данных больше не отражает реальность, и вы понятия не имеете, что происходит. И эти вещи замечаются только тогда, когда уже слишком поздно останавливать вещи и применять "быстрое исправление", обеспечивающее целостность ваших данных.


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


Рейтинг:
2

Member 13894223

if (txtProductID.Text == "" || txtAmount.Text == "" || txtPSerial.Text == "" || txtCat.Text == "" || txtBin.Text == "-" || txtManufac.Text == "" || txtLocation.Text == "")
            {
                MessageBox.Show("Fill textboxes to proceed.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            else
            {
                try
                {
                    long serial = Convert.ToInt64(txtSerialStart.Text);
                    int qty = Convert.ToInt32(txtAmount.Text);
                    for(int i = 0;i < qty;i++)
                    {
                        serial = serial + i;
                        String serialX = serial.ToString();

                        string sql = @"INSERT INTO tblSerials VALUES(@PID,@Descrip,@Serials,@Catagory,@Location,@Bin,@Manufacturer,@Date)";
                        cm = new SqlCommand(sql, cn);
                        cm.Parameters.AddWithValue("@PID", txtPID3.Text);
                        cm.Parameters.AddWithValue("@Descrip", txtProductID.Text);
                        cm.Parameters.AddWithValue("@Serials", serialX);
                        cm.Parameters.AddWithValue("@Catagory", txtCat.Text);
                        cm.Parameters.AddWithValue("@Location", txtLocation.Text);
                        cm.Parameters.AddWithValue("@Bin", txtBin.Text);
                        cm.Parameters.AddWithValue("@Manufacturer", txtManufac.Text);
                        cm.Parameters.AddWithValue("@Date", lblDate.Text);

                        cm.ExecuteNonQuery();
                    }

                    MessageBox.Show("Record successfully saved!", "OK!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    //InsertTrail();
                    this.Clear();
                    this.GetSData();
                    txtPSerial.Text = "";



                }
                catch (SqlException l)
                {
                    MessageBox.Show("Re-input again. ID may already be taken!");
                    MessageBox.Show(l.Message);
                }