Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Есть массив в котором все параметры стрингового типа. этот массив представляет собой нечто подобное.. Болт М24-9gх55.109.40Х.019 ГОСТ 7796-70 Болт М30х2.0-6gх75.109.40Х.019 ГОСТ 7798-70 Болт М30-6gх160.109.40Х.019 ГОСТ 7798-70 Болт М6x25.46.019 ГОСТ 7802-81 Болт М6x60.66.019 ГОСТ 7795-70 Болт М6х16.46 ГОСТ 7802-81 Болт М6х16.46.019 ГОСТ 7802-81 Болт М6х16.58.00 ОСТ 23.1.434-75 Болт М6х16.66.019 ГОСТ 7802-81 Болт М6х20.46 ГОСТ 7802-81 Болт М14x50.66.019 ГОСТ 7796-70 Болт М14х100.66 ГОСТ 7795-70 Болт М14х100.66.019 ГОСТ 7795-70 Болт М14х1,5-6gх35.109.40Х ГОСТ 7798-70 Болт М14х1,5-6gх35.109.40Х.019 ГОСТ 7798-70 необходимо сортировать список так чтобы в начало списка попадали элементы с меньшим номером госта, и потом еще сортировались от меньшего к большему.. т.е сначала М6, М8, М10 одного госта, потом М6, М8, М10 другого госта! КААААК??! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 05:44 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincoln, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 05:53 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
этот order by сортирует по символьно? т.е. если есть ГОСТ 1123 , ГОСТ 10123 и ГОСТ 6523 эта функция мне отсортирует так: гост 10123 гост 1123 гост 6523 или так: гост 1123 гост 6523 гост 10123? последний вариант надо чтобы был. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 06:36 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincolnэтот order by сортирует по символьно? т.е. если есть ГОСТ 1123 , ГОСТ 10123 и ГОСТ 6523 эта функция мне отсортирует так: гост 10123 гост 1123 гост 6523 или так: гост 1123 гост 6523 гост 10123? последний вариант надо чтобы был. Мне кажется в виде массива очень сложно программно анализировать и сортировать данные. ИМХО лучше передать данные в СУБД (например, SQL Server, MS Access и т.д.) и там разбить на отдельные поля и только потом сортировать. А если данные ни как не перевести в СУБД и необходимо только в VB, ну тогда создайте несколько массивов, где каждый массив как бы отдельное поле таблицы и только потом сортируйте. Ваши ГОСТы 7796-70, 23.1.434-75 они в чистом виде как то не очень похожи на числа. Так что их с помощью REPLACE придётся привести в "нормальный" вид, если хотите сортировать как числа. Может быть кто-то подкинет идею по лучше, но на ум мне пришло только это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 07:00 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
order by Val(Replace(mid(naim, InStr(naim, "ГОСТ")+4),"-",".")),naim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 07:04 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Или так с учётом ОСТ которые будут выкидываться в конец: order by Val(Replace(Replace(mid(naim, InStr(naim, "ОСТ")+3),"-","."),".",vbNullString)),naim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 07:24 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Или так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 07:34 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Komil_, проблема в том что программу я пишу под другое приложение. и какой список таких болтов или винтов у меня будет заранее я не знаю.. про временные массивы это правильно конечно. но поиск по госту приведет к тому что у меня перепутаются болты, винты , гайки и т.п По хорошему надо чтобы болты были одельно, затем сортировка болтов по госту, далее сортировка по параметрам болта. и так каждый раз для разных видов (винты, шплинты шпильки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 07:38 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincoln, Не пробовали сделать нормолизацию данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 07:41 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincolnЕсть массив в котором все параметры стрингового типа. этот массив представляет собой нечто подобное.. Болт М24-9gх55.109.40Х.019 ГОСТ 7796-70 Правильно, как я думаю, хранить таблицу с информацией о диаметре, длине, госте и.т.д. Тогда можно будет нормально отсортировать. А текст: <Болт М24-9gх55.109.40Х.019 ГОСТ 7796-70> просто формируется из разных полей. Если есть возможность так сделать, то лучше ввести доп. поля и все проблемы решатся. А иначе придется парсить текст и заниматся прочими странными вещами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 07:47 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
SashaM, не получиться нормализовать т.к. придется много что переделывать, и не уверен что мне по силам.. овчинка выделки не стоит как говорится)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 07:50 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincoln, в чем идея задания -произвольный поиск -поиск по спискам -отчет с сортировкой болт-гост-размер-покрытие (или покрытие-размер) -прайс на те же условиях в задачах состав изделия и материалы использовала произвольный поиск по принципу набираю что знаю *болт*7696* все болты госта 7696 *болт*12*гост* все госты болта 12 *болт*30*019* покрытие болта 30 *болт*019* болты с покрытием затем в поле поиска уточняла условие и выполняла требуемый отчет -куда входит данный болт -его трудоемкость -поступление болтов на склад...........аксесс 97\2007 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 08:25 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
ПЕНСИОНЕРКА, идея в том что в бд есть некая сборка, которая состоит из подсборок,деталей, стандартных изделий (болты винты и т.п), по этой сборке формируется отчет в виде конструкторской специффикации. через dll моя прога берет данные из программы и переносит в excel. сортировка по алфавиту работает, т.е я получаю нормальный список для деталей и сборок, а для стандартных нет! т.к. стандартные заносятся в спецификацию сначала по алфавиту(сначала идут болты, винты, гайки и т.п) далее если несколько болтов, в верх списка заносятся болты с меньшим гостом. Если болтов с одним гостом несколько, то из них выбирается тот у которого размер меньше.. после сотрировки болтов идет сортировка винтов и т.д.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 09:35 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincoln, Задача, на мой взгляд, сводится к правильному разбору строки на члены. И тогда сортировка станет тривиальной. Я думаю, надо сосредоточиться именно на этой задаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 09:43 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
в бд НЕТ никаких таблиц с гостами, диаметрами и т.п. Там есть иерархическое дерево, в стандартных есть поле наименование, откуда и берется эта длинная строка с обозначением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 09:43 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincoln, тю напугали епт 25 строк кода, если не считать заполнение массива код Код: plaintext 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. 32. 33. 34. 35. 36. 37. 38. 39. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 09:44 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, да надо писать парсер, но я чувствую мне навыка моего просто не хватит чтобы написать это.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 09:45 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Забыл добавить, что надо в референции MS ADO recordset ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 09:49 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincolnShocker.Pro, да надо писать парсер, но я чувствую мне навыка моего просто не хватит чтобы написать это.. Вон, Шаманус уже написал - изучайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 09:55 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Shamanus, список изделий заносится динамически (их любое количество может быть) dim naim as recordlist ' список с наименованиями dim count as integer ' их число Sub SortingDouble() Dim x(naim.RecordCount - 1) As String dim i as integer for i= 0 to naim.RecordCount - 1 x(i)= naim(i) next .... что дальше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 09:59 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincoln, тогда лучше так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 10:09 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincoln, из опыта работы -есть ГОСТ и просто Г -или гост\г -или ОСТ\ост -или ТУ\ту для радиоэлементов, конденсаторов ...... -ожо ...... уж всех и не помню ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 10:11 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Shamanus, ок, щас попробую возможно что то выйдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 10:17 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincolnт.е сначала М6, М8, М10 одного госта, потом М6, М8, М10 другого госта! КААААК??! Ну если уж очен нужно, то может так сделать: Если нужно по госту/диаметр. Может так сделать: 1 Символ - 0 гост/1 - ост Строка 9 символов гост + 2 символа диаметр: PXXXXXXXXYY Болт М24-9gх55.109.40Х.019 ГОСТ 7796-70 = 000000779624 Болт М6х16.58.00 ОСТ 23.1.434-75 = 102300143406 И тогда будут сортироватся по госту/осту, потом по диаметру. Нужно написать функцию которая вытаскивает гост и добавляет справа нулями до 9 знаков. Затем вытаскиваем диаметр, добавляем до двух знаков нулями справа. Это делается для правильности алфавитной сортировки. Получаем строку, по которой уже будет сортировка (по одной строке! А не по нескольким полям). Если нужно еще сортировать по другим параметрам, то дорабатывается по такому же принципу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 10:24 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincolnShamanus, ок, щас попробую возможно что то выйдет если не получится, задавайте вопросы, желающему научиться поможем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 10:33 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Вообще, тут регэкспы помогут :-) И реализация IComparable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 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. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 10:52 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
все не то, не работает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 11:40 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincolnвсе не то, не работает!весьма содержательно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 11:43 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincolnвсе не то, не работает!Создайте РУКАМИ файл, на одном листе которого массив каким вы его имеете, на втором — данные, отсортированные как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 11:47 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Shamanuslincolnвсе не то, не работает! мне такие ответы всегда напоминают цитату с баша: waran я счас наорал на тетку-юзершу... waran я ей дажы пример привел: ты идешь в сортир, и по дороге у тебя домается нога... ты звонишь админу и кричишь: "!я не могу сходить в сортир"... и админ х.й ЗНАЕТ, попчему ты не можешь - либо у тебя дверь не открывается, либо охранник не пускает, либо идешь в другую сторону! вот скажи: не "не могу сходить в сортир", а "у меня нога поломалась" - так админ сразу будет знать, что чинить waran причем не уверен, что до нее дошло SuMi я тут тож орал недавно... мне звонит пользователь и говорит дословно - наташа не можыт войти в компьютер SuMi я слегка ох%&вший и говорю - ну с её жопой это нормально!!!! SuMi грю - пусть худеет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 11:55 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
InStr(x(i), "ГOCT ", vbTextComparе) возвращает номер позиции после пробела? допустим "ГОСТ 123" результат - 5? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 12:10 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincoln, допустим есть текст Код: plaintext Код: plaintext Код: plaintext Код: plaintext Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 12:20 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 12:22 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincolnидея в том что в бд есть некая сборка, которая состоит из подсборок,деталей, стандартных изделий (болты винты и т.п), по этой сборке формируется отчет в виде конструкторской специффикации. через dll моя прога берет данные из программы и переносит в excel . Вам же потом надо всё проделать уже в Excel? Зачем тогда страдать именно с массивом, зачем прицеплять ADODB? Вас же попросили - дайте пример книги Excel, в которой есть табличка с выцепленными вашей прогой данными. Далее же сделать можно многое и не очень большим количеством кода... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 12:27 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Shamanus, да, понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 12:27 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Вот так работает: Код: plaintext 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. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 13:08 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Единственное, что добавлю к своему примеру: По скорости не очень эффективно, т.к. постоянно в сортировке вычисляется GetSortKey. Возможно надо было сделать двумерный массив с заранее расчитанными ключами. Хотя, если число строк для сортировки будет малое количество, то это не столь важно. Да можно по-разному это сделать, сложности тут нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 13:23 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
спасибо) я проверить смогу теперь на следующей неделе, если вопросы возникнут буду обращаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 14:04 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
А через регулярные выражения парсить строку не айс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 18:57 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincolnПЕНСИОНЕРКА, идея в том что в бд есть некая сборка, которая состоит из подсборок,деталей, стандартных изделий (болты винты и т.п), по этой сборке формируется отчет в виде конструкторской специффикации. через dll моя прога берет данные из программы и переносит в excel. сортировка по алфавиту работает, т.е я получаю нормальный список для деталей и сборок, а для стандартных нет! т.к. стандартные заносятся в спецификацию сначала по алфавиту(сначала идут болты, винты, гайки и т.п) далее если несколько болтов, в верх списка заносятся болты с меньшим гостом. Если болтов с одним гостом несколько, то из них выбирается тот у которого размер меньше.. после сотрировки болтов идет сортировка винтов и т.д.. автор в бд НЕТ никаких таблиц с гостами, диаметрами и т.п. Там есть иерархическое дерево, в стандартных есть поле наименование, откуда и берется эта длинная строка с обозначением -вопросы ?? -как выделяются стандартные изделия -изделий видимо много и запросов с требуемой сортировкой тоже много -стандартным может быть не только крепеж -чтобы не изобретать в каждом отчете велосипед -создать таблицу стандарта(наимен-ключ без повторных,группа-станд, наимен-сорт)- станд1 -дописать туда текущий стандарт или весь(если можно) -просчитать группу, наимен-сорт для новых записей--------модулем -при необходимости -ручная доводка наимен-сорт---------форма -стыковать ваш текущий запрос со станд1(LEFT JOIN) -coртировка запроса Код: plaintext вряд ли вы без этого обойдетесь(по собственному опыту) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 23:59 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за идеи, остановился я все таки на сортировке по алфавиту. пользователи могут как попало забить в программу обозначение детали и мои труды пойдут на смарку.. причем для разных видов деталей поиск разный будет. Каждая деталь имеет разное обозначение. болт имеет диаметр и длину, у шпонки другие параметры и правила записи.. для каждой детали писать обработку строки запаришься... тема закрыта! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2010, 08:29 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincolnпользователи могут как попало забить в программу обозначение детали Сделать ввод с проверкой, чтобы не что попало заводили. Либо сделать ввод из многих полей, а потом склеивается текст в наименование. Но это тоже труд. Вообще такие вещи как сортировка обдумывается заранее перед программированием системы, чтоб потом не выкручиватся с парсерами. Если нужна нормальная сортировка, то лучше всего дорабатывать программу/базу. Трудно это или не трудно - не столь важно, главное пользователи - если их не будет сильно напрягать сортировка просто по алфавиту, то лучше оставить как есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2010, 08:44 |
|
||
|
Наисложнейшая сортировка!!
|
|||
|---|---|---|---|
|
#18+
lincolnпользователи могут как попало забить в программу обозначение детали и мои труды пойдут на смарку.. причем для разных видов деталей поиск разный будет. Каждая деталь имеет разное обозначение. болт имеет диаметр и длину, у шпонки другие параметры и правила записи.. для каждой детали писать обработку строки запаришься... Ну, можно ведь для каждого поля (после парсинга) создать собственные экзелевские "справочники возможных вариантов" и уже из такой связки формировать общий ID для сортировки. Было бы желание... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2010, 19:03 |
|
||
|
|

start [/forum/topic.php?all=1&fid=60&tid=2159257]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 170ms |

| 0 / 0 |
