Member 13293441 Ответов: 1

Как сбросить идентификатор рабочего номера, когда наступит Новый День


я хочу напечатать этикетку с label_id
формат идентификатора метки содержит рабочий номер 0001 (0001,0002,..) -я хочу сбросить рабочий номер на 0001, когда наступит Новый День.
может ли кто-нибудь дать мне какие-то идеи или решение относительно моей проблемы?

в настоящее время моя система сбрасывает рабочий номер, если приходит новый день, но проблема в том, что рабочий номер продолжает повторять 00001 снова и снова

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

Public Function get_ExistingSequenceNoOld(ByVal PN As String, ByVal q As String, ByVal vID As String)
       On Error GoTo ErrorHandler
       Dim dateL As Date
       Dim date1 As String
       Dim lastRecord As String
       Dim lastDate As String
       dateL = cls_PICS.get_SERVER_Datetime
       date1 = dateL.ToString("yyyy-MM-dd")


        PrinterDateTime DESC"

       Dim SQL_str As String =
        "SELECT * " &
           "FROM setup ORDER BY PrinterDateTime DESC"

       '"SELECT * " &
       '"FROM setup where PartNo='" & PN & "' AND MOQ='" & q & "' AND VendorID='" & vID & "' AND Status <> 'INACTIVE' ORDER BY PrinterDateTime DESC"

       Dim adLWS As New OdbcDataAdapter(SQL_str, cnPICS)
       Dim dsLWS As New DataSet
       adLWS.Fill(dsLWS, "BOXID")

       LWS_CONT = dsLWS.Tables("BOXID").Rows.Count
       ' lastRecord = dsLWS.Tables("BOXID").Rows.Count - 1
       'lastDate = dsLWS.Tables("BOXID").Rows.Item(lastRecord).Item("LastDate")

       If LWS_CONT < 1 Then
           get_ExistingSequenceNoOld = False
           'get_cstTBL_Insert(val)
           Exit Function
       End If

       ReDim PartNo(LWS_CONT)
       ReDim BoxEnd(LWS_CONT)
       ReDim DateEnd(LWS_CONT)
       ReDim PrintQty(LWS_CONT)
       ReDim MOQ(LWS_CONT)
       ReDim venID(LWS_CONT)
       ReDim DeliveryQty(LWS_CONT)
       ReDim qcInspection(LWS_CONT)

       Dim i As Integer
       For i = 0 To LWS_CONT - 1
           PartNo(i) = dsLWS.Tables("BOXID").Rows(i)("PartNo").ToString
           MOQ(i) = dsLWS.Tables("BOXID").Rows(i)("MOQ").ToString
           BoxEnd(i) = dsLWS.Tables("BOXID").Rows(i)("EndBox").ToString
           PrintQty(i) = dsLWS.Tables("BOXID").Rows(i)("PrintQty").ToString
           venID(i) = dsLWS.Tables("BOXID").Rows(i)("VendorID").ToString
           DeliveryQty(i) = dsLWS.Tables("BOXID").Rows(i)("DeliveryQty").ToString
           qcInspection(i) = dsLWS.Tables("BOXID").Rows(i)("QC").ToString
           BoxEnd(i) = dsLWS.Tables("BOXID").Rows(i)("EndBox").ToString
           DateEnd(i) = dsLWS.Tables("BOXID").Rows(i)("LastDate").ToString
       Next

       If Today.Date > CDate(DateEnd(i)).Date Then
           get_ExistingSequenceNoOld = False

       Else
           get_ExistingSequenceNoOld = True
       End If



       Exit Function

1 Ответов

Рейтинг:
2

OriginalGriff

Начните с добавления двух столбцов в таблицу:
Первый-это столбец идентификатора INT, называемый Ident, автоинкрементирование по одному
Второй-это столбец даты, называемый InsDat который по умолчанию равен GETDATE()
Затем, когда вам нужны строки с ежедневной последовательностью, используйте это:

SELECT m.Ident, m.InsDat, m.OtherColumnList, m.Ident - s.MinSeq + 1 AS Seq FROM MyTable m
JOIN (SELECT Insdat, MIN(Ident) AS MinSeq FROM MyTable GROUP BY InsDat) s ON s.InsDat = m.InsDat

То, что вы получаете, - это целочисленный столбец, который начинается с 1 каждый день-Вы можете отформатировать его в ведущую нулевую строку, если вам нужно, или позволить вашему слою презентации справиться с этим.
Ident	InsDat	Val	       Seq
1	2017-07-05	A         	1
2	2017-07-05	A         	2
3	2017-07-05	A         	3
4	2017-07-05	A         	4
5	2017-07-05	A         	5
6	2017-07-06	B         	1
7	2017-07-06	B         	2
8	2017-07-06	B         	3
9	2017-07-06	B        	4
10	2017-07-06	B         	5
11	2017-07-06	B         	6
12	2017-07-07	C         	1
13	2017-07-07	C         	2
14	2017-07-07	C         	3
15	2017-07-07	C         	4
16	2017-07-08	D         	1