Amar chand123 Ответов: 2

Проблема в генерации автономера в текстовом поле с помощью базы данных


я использую этот код для генерации автономера, но у меня есть проблема, когда я начинаю вводить новые данные в базу данных автономер не работает, если у меня нет никаких данных в моей базе данных, если только работать, когда у меня есть 00001 в моей базе данных, но если я начинаю форму ноль, то это не работает

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

private void Autonumber()
        {
            String connstring = ConfigurationManager.ConnectionStrings["Test"].ConnectionString;
            OleDbConnection con = new OleDbConnection(connstring);
            string Query = "select MAX(ReceiptNo) from Data";
            OleDbCommand cd = new OleDbCommand(Query, con);
            
            {
                con.Open();
                int count = Convert.ToInt16(cd.ExecuteScalar()) + 1;
                txtRecd.Text = count.ToString("00000");
                txtRecd.Enabled = false;

            }

            
        }

2 Ответов

Рейтинг:
6

RickZeeland

Ответ Phil.o-это рекомендуемый способ, но вы также можете попробовать что-то вроде этого:

var obj = cd.ExecuteScalar();
var count = (obj == DBNull.Value ? 0 : Convert.ToInt32(obj));

Если ваша таблица пуста, то ExecuteScalar вернет DBNull.Ценность.


Amar chand123

Не работать

RickZeeland

Исправив ответ, вам, вероятно, нужно использовать DBNull.Значение вместо Null.

Amar chand123

Спасибо

Рейтинг:
16

phil.o

Вы должны использовать автоматически увеличивающийся столбец в самой базе данных. Генерация идентификаторов на стороне клиента становится довольно подверженной ошибкам всякий раз, когда существует более одного пользователя.


Amar chand123

Только один пользовательский проект и автоматически увеличенный столбец проблема заключается в том, что если у меня есть 10 данных в базе данных, и я удаляю последние 7 данных и добавляю новые данные в базу данных, то SrNo показывает 11, а не 7

phil.o

Это обычная не проблема. Вас не должно волновать, что ваши идентификаторы в базе данных не являются смежными. Они не предназначены для того, чтобы сделать ваши данные красивыми, они предназначены для однозначного индексирования строки. Строгая непрерывность числовых идентификаторов-это не что иное, как косметика.