|
|
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Использую:ADO, SQL, Access. Помогите решить проблему. В таблице есть поле NomerAkta: 01/18 02/18 03/18 и т. д. (.../18 - это год, dm.ADOQueryNomerAkta.AsString+'/'+FormatDateTime('yy', now)) При ручном вводе номера акта, надо искать последний номер в таблице и вводить следующий номер. Как сделать, чтобы при нажатии на кнопку номер акта увеличивался на+1 автоматически и при смене года нумерация начиналась заново (01/18, 02/18, 03/18...... 01/19, 02/19, 03/19....)????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 11:52 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
alexxx69, А что, в Access счетчиков нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 11:55 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
alexxx69, Если просто - SELECT MAX(NomerAkta) FROM ... . А если подумать - то тебе нужно внимательно почитать про бездырочную нумерацию документов - статьи в инете есть. И еще вопрос - NomerAkta у тебя хранимое поле или вычисляемое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 11:58 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
Gerasimenkoalexxx69, А что, в Access счетчиков нет? Вопрос через месяц будет - "удалили документ, сбилась нумерация" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 11:59 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
Gerasimenko, Есть, счетчик считает при добавлении новой строки, мне строку добавлять не надо, а поставить номер акта в имеющейся строке (она привязана к оборудованию) , а номера актов меняются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 12:01 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
DarkMaster, хранимое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 12:02 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
alexxx69Gerasimenko, Есть, счетчик считает при добавлении новой строки, мне строку добавлять не надо, а поставить номер акта в имеющейся строке (она привязана к оборудованию) , а номера актов меняются И как спасет твое Код: sql 1. при удалении не самого последнего документа? Есть счетчик, и есть привязанный/не привязанный к конкретному состоянию счетчика документ. Все остальное: фантазии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 12:05 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
DarkMasteralexxx69, Если просто - SELECT MAX(NomerAkta) FROM ... . А если подумать - то тебе нужно внимательно почитать про бездырочную нумерацию документов - статьи в инете есть. И еще вопрос - NomerAkta у тебя хранимое поле или вычисляемое?А если режим многопользовательский, то вааще ахтунг будет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 12:07 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
Gerasimenko, В базе есть таблица "оборудование" - поля: год выпуска, год поступления, характеристики и т.д. Это оборудование ставится и снимается, при установке пишется акт, который распечатывается и в программе не хранится кроме номера акта и даты установки. При снятии оборудования номер акта и дата установки из программы удаляются. На каждое установленное оборудование пишется акт При следующей установки этого оборудования пишется новый акт ну и т.д. база локальная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 12:20 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
alexxx69Gerasimenko, В базе есть таблица "оборудование" - поля: год выпуска, год поступления, характеристики и т.д. Это оборудование ставится и снимается, при установке пишется акт, который распечатывается и в программе не хранится кроме номера акта и даты установки. При снятии оборудования номер акта и дата установки из программы удаляются. На каждое установленное оборудование пишется акт При следующей установки этого оборудования пишется новый акт ну и т.д. база локальная Делаешь отдельную таблицу: счетчик. При смене года обнуляешь ее. Собственно: все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 12:38 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
Gerasimenko, Мысль хорошая, а как при смене года обнулять??? Можно код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 12:45 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
Gerasimenko, А я и не говорю, что SELECT MAX() хорошее решение :) Наоборот - толкаю ТС почитать статьи по его тематике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 12:46 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
alexxx69Gerasimenko, Мысль хорошая, а как при смене года обнулять??? Можно код? Я не знаю, как это делается в Access, но в SQL можно сделать Truncate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 12:52 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
DarkMaster, номер акта не должен повторятся за год, оборудование сняли номер акта удалился, оборудование ставится - присваивается новый номер акта (нумерация дырочная) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 12:53 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
DarkMaster, SELECT MAX() для локальной базы хорошее решение. Вопрос в том как в коде написать автоматическое увеличение номера акта (+1) от последнего максимального, хранящегося в поле таблицы и в новом году начинать новую нумерацию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 12:59 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
alexxx69, Если нумерация дырочная - то № акта у тебя будет равен значению счетчика. При смене года - старые данные отправляешь в таблицу-архив, оперативную таблицу чистишь и устанавливаешь счетчик обратно в 0. Собственно все... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 13:32 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
номер акта(NomerAkta) хранить в отдельном поле, год акта(GodAkt) в отдельном SELECT MAX(NomerAkta) FROM ... WHERE GodAkt=2018(текущий год) получилось Null значит номер акта будет 1 иначе результат +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:21 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
alexer81, Выше почитай. Если будет несколько пользователей, заводящих акты - будет возможность выдачи одного и того же номера разным актам, что плохо. Я изначально говорил, что SELECT MAX() - плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:48 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
DarkMaster Если будет несколько пользователей, заводящих акты - будет возможность выдачи одного и того же номера разным актам, что плохо. нужно формировать номер при сохранении записи, и не будет такой проблемы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 16:22 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
alexer81, Код покажи, как ты этот код формировать будешь. Для одновременной работы 100+ пользователей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 17:00 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
DarkMaster, Выше написал, что база локальная, пользователей-1- это я, программу делаю для себя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 22:00 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
alexer81, дату использую системную и следовательно поле "год" не нужно. Трудность с кодом , как прописать что с 01.01.2019, 01.01.2020, 01.01.2021 .....(системная дата) поле "номер акта" очищается и нумерация начинается с акта №1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 22:09 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
DarkMaster, Плохо даже если действие в одной транзакции? Я про MSSQL 2012 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2018, 00:41 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
alexxx69, авторТрудность с кодом , как прописать что - не как, а где ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2018, 08:43 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
А если хранить счетчик в отдельной таблице(файле)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2018, 15:47 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
bilovDarkMaster, Плохо даже если действие в одной транзакции? Я про MSSQL 2012 Ну а подумать? Например у тебя 10 клиентов, заполняющих что-то там. Стартуем у каждого транзакцию - получаем 10 транзакций - у каждого клиента своя транзакция. Делаем SELECT MAX(). Получаем у КАЖДОГО клиента одинаковое значение для MAX(). Дальше обьяснять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2018, 15:54 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
Откройте для себя каунтеры и "select from final table". И транзакции блокирующие не понадабятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2018, 15:58 |
|
||
|
Нумерация строк
|
|||
|---|---|---|---|
|
#18+
DarkMaster, Понятно. К счастью эта вещь у меня стоит не для айдишника а для отображаемы номеров, один раз в год совпадет не страшно, и к тому же создают их не так часто. Хотел на более многочисленные документы поставить, теперь ещё подумаю. У меня раньше этот номер был уникальным в пределах года. И каждый год начинался с 1. Теперь наверное лучше всего сохранять и сам год в отдельном поле таблицы заголовков документов и поставить по этой паре полей уникальный индекс. В очень редких случаях будет вылетать с ошибкой ключа, не страшно. Это наверное 2-3 раза в год будет. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2018, 22:06 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2041050]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 557ms |

| 0 / 0 |
