|
пронумеровать
|
|||
---|---|---|---|
#18+
Люди добрые прошу вас помогите ламаку!!! Есть поле invent_n в ньом значения типа 000125 они могут повторяться помогите какимто макаром пронумеровать их 001251 001252 и т.д. поле типа Character функция recno() не прокатит... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2008, 10:17 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
Народ, решите за меня алгоритмическую задачку!!! :) По сути. scan all lnRecNo=RecNo() lcCurInvent_n=Invent_n count for lcCurInvent_n=Invent_n to CountInvent_n lnI=1 if CountInvent_n>1 repl Invent_n with substr(CountInvent_n,2)+trans(lnI) locate for lcCurInvent_n=Invent_n to CountInvent_n do while found() lnI=lnI+1 repl Invent_n with substr(CountInvent_n,2)+trans(lnI) continue enddo goto record lnRecNo endscan Только несколько НО: 1 - данный алгоритм отработает корректно для кол-ва <=9 (сдвигает на один разряд, если нужно - доработать) 2 - было в базе 000001 000001 и 000011. После отработки алгоритма станет 000011 000012 и 000112 было в базе 000011 000001 000001 . После отработки алгоритма станет 000011 000011 и 000012 Т.е. ты запросто можешь при присваивании нового значения напороться на "занятый" диапозон. Возможно имеет смысл добавить некий разделитель, например "-" Т.о. в случае: было в базе 000011 000001 000001 . После отработки алгоритма станет 000011 0001-1 и 0001-2 Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2008, 10:32 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
Вот здесь напутал: 2 - было в базе 000001 000001 и 000011. После отработки алгоритма станет 000111 000012 и 000112 Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2008, 10:34 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2008, 11:14 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
gromozeka2007Люди добрые прошу вас помогите ламаку!!! Есть поле invent_n в ньом значения типа 000125 они могут повторяться помогите какимто макаром пронумеровать их 001251 001252 и т.д. поле типа Character функция recno() не прокатит... Не совсем понял что надо. Вобщем примерно так: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2008, 11:24 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
Последний вариант прикольный только мне необходимо чтобы старое значение не затиралось а к нему добавлялось если у меня например несколько записей с номером 000123,000123,000123, то мне необходимо в конце этим номерам добавить 0001231 0001232 0001233 и т.д. но только к тем что одинаковые ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2008, 14:21 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
gromozeka2007Последний вариант прикольный только мне необходимо чтобы старое значение не затиралось а к нему добавлялось если у меня например несколько записей с номером 000123,000123,000123, то мне необходимо в конце этим номерам добавить 0001231 0001232 0001233 и т.д. но только к тем что одинаковые Ты как-то определись уже что хочешь. Заново пронумеровать или одинаковые попавить или еще чего. Может на примере опишешь что тебе надо. Типа такого: Старое значениеновое значение00012200012200012300012310001230001232...... Размерность поля укажи ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2008, 14:29 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
вот именно ... оно как заделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2008, 14:32 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
gromozeka2007Люди добрые прошу вас помогите ламаку!!! Есть поле invent_n в ньом значения типа 000 125 они могут повторяться помогите какимто макаром пронумеровать их 00 1251 001252 и т.д. поле типа Character функция recno() не прокатит... Ты ж корректно расписывай! А то поди пойми чё ты хошь! Отойди от компа и опиши алгоритм на бамажке! Потом сам всё сможешь сделать! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2008, 14:38 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
gromozeka2007вот именно ... оно как заделать? сделай индекс invent_n по invent_n если нет такого Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
PS А ты уверен что нормально иметь номер '001231' и '0001231' ? Нолики наверно не просто так в начале дописаны? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2008, 14:43 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
Благодарю всем большое спасибо. Последний вариант именно то что нужно. Премного благодарен :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2008, 14:56 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
gromozeka2007Последний вариант именно то что нужно. Странно. Только сейчас дошло что я глупость написал :) По идее должно неправильно работать, т.к. при изменении invent_n и при активном индексе по этому полю запись должна сместится сразу в конец среди одинаковых. Вобщем надо еще одно поле делать, заполнять, и потом из него переносить. Так правильно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2008, 15:10 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
Давай все-таки тут продолжать. gromozeka2007От что плучилось после того как я запустил скрипт. А необходимо чтобы все одинаковые значения пронумеровались чтобы небыло совпадений. Оно допустим значение 001102 001102 пронумеровало 0011021 0011022 а почему для 001012 которое повторяется 4 раза не пронумеровало. Я выложил dbf в архиве там поле nomer его необходимо пронумеровать У меня нормально все получилось, все 4 исправились. Табличку твою отсюда взял, индекс сделал Код: plaintext
Только у тебя уже бардак в таблице и этот способ приводит к другим задвоениям. Есть повторение "002014" для правки оно будет преобразовано в "0020141","0020142" ... но есть уже "0020141","0020142" поэтому в результате исправления одного получаем задвоение другого. Что с этим делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2008, 15:46 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
я понял но как с этим бороться если какойто счетчик создать который если номер совпадает будет добавлять например 044150, встретившийся дважды, стал 0441500 и 0441501 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2008, 16:02 |
|
пронумеровать
|
|||
---|---|---|---|
#18+
Так попробуй. С проверкой что новый номер уже есть. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
В таблице vost_fobos должен быть индекс NOMER по полю NOMER и этот индекс должен быть не активен ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2008, 16:04 |
|
|
start [/forum/topic.php?fid=41&gotonew=1&tid=1587473]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
11ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 207ms |
0 / 0 |