C # Как сбросить идентификатор автоматического увеличения каждый 1-й день месяца - PullRequest
0 голосов
/ 02 октября 2018

Мне трудно понять, как я могу это сделать.То, что я пытаюсь сделать, это ..

Например:
ДАТА: с 1 октября 2018 по 31 октября 2018 года, иметь 2 записи, как вы можете видеть на предоставленном изображении.Вы можете видеть, что идентификатор начинается с 001 и так далее.Следующий месяц - ноябрь. Идентификатор должен перезапуститься / вернуться к 001, а не к 003.

PS: OrderID - это тип данных VARCHAR в моей базе данных

enter image description here Обратите внимание, чтокаждый новый месяц появляется новая запись, поэтому здесь не видно прошлой записи

Я надеюсь, что кто-нибудь сможет мне помочь

 public partial class SIMSSupplier : UserControl
{
    ADDPOrders order;     
    public SIMSSupplier()
    {
        InitializeComponent();

    }
    public string ORDERID = "000";
    private void ADDOrder_Click(object sender, EventArgs e)
    {        
        order = new ADDPOrders(this);
        POrderID._OrderID(order.lbl_orderID);
        order.ShowDialog(); 
    }
    private void DateOrder_ValueChanged(object sender, EventArgs e)
    {
        DateBetween._DateOrder(DateOrder, DateOrder, PurchaseOrder);
    }
    private void DateOrder2_ValueChanged(object sender, EventArgs e)
    {
        DateBetween._DateOrder(DateOrder, DateOrder2, PurchaseOrder);
    }      
}


public static class DateBetween
{
    public static void _DateOrder(DateTimePicker DateOrder, DateTimePicker DateOrder2, DataGridView PurchaseOrder)
    {
        using (var con = SQLConnection.GetConnection())
        {
            using (var select = new SqlCommand("Select * from Purchase_Order where Date between @date1 and @date2", con))
            {
                select.Parameters.Add("@date1", SqlDbType.Date).Value = DateOrder.Value;
                select.Parameters.Add("@date2", SqlDbType.Date).Value = DateOrder2.Value;
                using (var sd = new SqlDataAdapter(select))
                {
                    var dt = new DataTable();
                    sd.Fill(dt);
                    PurchaseOrder.DataSource = dt;
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 02 октября 2018

Если у вас есть возможность изменить тип поля на int, гораздо проще сделать это непосредственно из SQL.Вы можете автоматически увеличивать и изменять начальное значение каждый месяц с помощью сценария, подобного приведенному ниже (обратите внимание, что в начале также добавляется номер месяца, если это полезно для вас):

IF (DATEPART(DAY, GETDATE()) = 1)
BEGIN
    DECLARE @reseedValue INT
    SET @reseedValue = CAST(CONCAT(CAST(DATEPART(MONTH, GETDATE()) AS NVARCHAR(4)), '000') AS INT)
    DBCC CHECKIDENT ('[table_name]', RESEED, @reseedValue);
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...