Я разрабатываю Систему управления школой в vb. net с доступом db. при приеме сборов квитанция должна быть уникальной, но начинаться с 1 в каждом новом сеансе. Я использую запрос MAX ID, например
str = "SELECT MAX([receipt_id]) FROM [Transaction] WHERE [session]=" & Home.Label2.Text
cmd = New OleDb.OleDbCommand(str, cn)
da.SelectCommand = cmd
da.Fill(ds, "Transaction")
Dim lastid As Integer
If cmd.ExecuteScalar() Is DBNull.Value Then
lastid = 0 + 1
Else
lastid = Convert.ToInt32(cmd.ExecuteScalar()) + 1
End If
receipt_no.Text = lastid
. Но проблема в том, что он возвращает последний идентификатор вместо max из этого сеанса. Пожалуйста, не могли бы вы мне помочь.
Вот объяснение, что мой запрос:
SELECT MAX([receipt_id]) FROM [Transaction] WHERE [session]=2018-2019
На выходе будет 0, затем 1, затем 2, но когда я стреляю
SELECT MAX([receipt_id]) FROM [Transaction] WHERE [session]=2019-2020
Результат равен 0, затем 2 Он возвращает max из транзакции таблицы, не учитывая предложение where.