Исправлена ​​функция DLast для указанной записи c, а не для последней - PullRequest
0 голосов
/ 02 апреля 2020

Я полностью растерялся, почему функция DLast в моем коде находит не последнюю запись в таблице, а указывает c одну (8-я запись, если быть точным). Интересно, что код (казалось) работал до тех пор, пока количество записей не достигло 10.

Мой код:

NrLast = DLast("Paraiskos_nr", "tblNew_sys") 'it should find the very last entry in the table
NewNr = Split(NrLast, "-")(1) 'since entry needed is in string, this part splits it and converts to integer number part of the string. 
NewNr = CInt(NewNr) + 1 'now its starts to generate new number by adding 1 to the extracted number from the last entry 
NewNr = "STV-" & CStr(NewNr) 'converts whole thing back to string in specific format 
Forms![frmNewSys_newEntry]![Paraiskos_numeris].Value = NewNr 'fills specific column with newly generated info on the new entry.

Больше информации о моей функции: я пытаюсь создать функцию, которая будет генерировать последовательные число в указанном формате c для новых записей в таблице (они добавляются через специальную форму). Числовой формат в строке, и это похоже на «STV-XXXX» (х означает число).

Мой код выше работал, пока номер записи в таблице не достиг 10 (ошибка 10-й записи). Теперь каждая новая запись получает сгенерированный номер "STV-9". Я попытался найти проблему, и это, кажется, тот факт, что функция DLast в моем коде каждый раз возвращает номер "STV-8". Что вызывает это и как мне это исправить?

1 Ответ

1 голос
/ 02 апреля 2020

Записи не имеют собственного порядка. DLast и DFirst (а также SQL Last и First) не могут зависеть от того, вернут ли воспринятую первую или последнюю запись в таблице. Также STV-10 будет сортировать перед STV-8. Для правильной сортировки значений альфа-числа c числовой части необходимо заполнить нулями: STV-0009 будет сортировать до STV-0010. Таким образом, DMax найдет последнее значение. Или используйте DMax ID и DLookup, чтобы получить сгенерированное последовательное значение.

DLookup("Paraiskos_nr", "tblNew_sys", "ID=DMax('ID','tblNew_sys')")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...