|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
Здравствуйте всем! Подскажите пожалуйста ответ на следующий вопрос. У меня есть порядковый номер - номер записи (он же у меня номер заказа) и соответствует записи, когда добавляется новая запись - т.е. добавление. Изменяться он не может -редактирование запрещено. Когда я удаляю запись - она ведь только помечается на удаление, как я знаю. Я потом добавляю новую запись и у меня появляется запись с номером на единицу больше от удаленной. Это произошло потому, что я удалил, но по факту она считается. Как делать так, чтобы это не было?! Спасибо. Помогите пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2014, 16:38 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
Номер записи в смысле recno() ? Если так - нельзя его использовать. Сделай после удаления PACK и все съедет. Заведи отдельное поле для номера и отдельное для идентификатора (ID) записи. Это разные вещи, т.к. рано или поздно потребуется создать две записи с одним номером. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2014, 19:32 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
dima_18, Насколько я понял, у тебя сейчас проблема с удалением "концевого" заказа, то есть добавленного последним. Тогда это можно решить так: При добавлении записи сначала ищутся удаленные записи. Например, через locate for deleted() . Если такая запись найдена, то надо проверить последняя ли это запись в таблице. Если это последняя физическая запись, то с нее снимается пометка на удаление и поля редактируются (запрет на редактирование для удаленных записей временно снимается). Если удаленная запись не последняя или нет удаленных записей, то создается новая запись. А теперь скажи, что делать с записями, которые удалены в середине таблицы? Как с ними поступать? Нужно на их место писать какие-нибудь новые данные (что будет в твоей постановке фактически неверно: более поздний заказ может иметь номер меньший, чем более ранний) или "умерла, так умерла"? В итоге получается такая куча работы (написание и отладка алгоритма по использованию удаленных записей), что проще сделать так, как посоветовал Дима... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2014, 20:19 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
Станислав С...кийdima_18, Насколько я понял, у тебя сейчас проблема с удалением "концевого" заказа, то есть добавленного последним. Тогда это можно решить так: При добавлении записи сначала ищутся удаленные записи. Например, через locate for deleted() . Если такая запись найдена, то надо проверить последняя ли это запись в таблице. Если это последняя физическая запись, то с нее снимается пометка на удаление и поля редактируются (запрет на редактирование для удаленных записей временно снимается). Если удаленная запись не последняя или нет удаленных записей, то создается новая запись. А теперь скажи, что делать с записями, которые удалены в середине таблицы? Как с ними поступать? Нужно на их место писать какие-нибудь новые данные (что будет в твоей постановке фактически неверно: более поздний заказ может иметь номер меньший, чем более ранний) или "умерла, так умерла"? В итоге получается такая куча работы (написание и отладка алгоритма по использованию удаленных записей), что проще сделать так, как посоветовал Дима... маммамиа... секс стоя, в гамаке и в водолазном костюме... ТС: 1. Никогда. Никогда не используйте рекно как идентификатор 2. Повторите прослушивание лекции "уникальный идентификатор записи", которую Вы, наверно, проспали 3. Раз уж такая пьянка и Вам нужно "выкручиваться из чего есть" - добавьте хоть поле "номер", типа инт с автоинкриментом... он хоть как-то обеспечит неповторение и даст то самое увеличение номера на единицу, которое Вам почему-то нужно 4. Почитайте про РЕКНО... Вы вообще-то с ним можете влететь еще и хуже, ибо в оптимистичных режимах эта функция может возвращать и отрицательные числа ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2014, 22:27 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
Здравствуйте Всем! Большое спасибо за ответы. Извините, что сразу не ответил. Сначала: 1. Да, у меня есть второе поле для порядкового номера записи и для номера заказа. Эти поля разные. 2. Что касается заказа, то возможен следующий сценарий. Добавляем номер, а потом отказываемся от него т.е. удаляем неявно, но что после него забили -остается в силе. Т.е. идут записи допустим с номерами заказов: 10 11 12 13 14 15 ....... затем вспомнили что 13 номер заказа по какой -либо непонятной причине нужно удалить. В результате следующий номер заказа будет все равно 16, а не со смещением назад, просто данная запись отцепляется от клиента и потеряна , так потеряна. Подскажите пожалуйста такой проект действия, как лучше сообразить?! спасибо. Как Dima_T? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 08:42 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
Для начала ответь на вопрос: что плохого в том что нет 13-го заказа? Какие это проблемы вызовет? Если никаких - то пусть так и будет. Для минимизации дыр в нумерации номер надо присваивать в последний момент. Например при сохранении, или добавить операцию "проведение", после которой все изменения фиксируются окончательно и в последующем невозможны, в момент проведения можно присваивать номер и т.д. Можно не удалять, а помечать заказ аннулированным, чтобы знать что он был, но от него отказались. Масса вариантов, какой выбрать зависит от задачи. А для внутренней идентификации используй ID, отдельное поле с уникальным значением, присваиваемым в момент добавления записи. Например поле с автоинкрементом. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 09:03 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
dima_182. Что касается заказа, то возможен следующий сценарий. Добавляем номер, а потом отказываемся от него т.е. удаляем неявно, но что после него забили -остается в силе. Угу... и что же у вас за каша будет, когда два человека на разных компах введут один и тот же номер заказа для разных документов? dima_18затем вспомнили что 13 номер заказа по какой -либо непонятной причине нужно удалить. В результате следующий номер заказа будет все равно 16, а не со смещением назад, просто данная запись отцепляется от клиента и потеряна , так потеряна. Подскажите пожалуйста такой проект действия, как лучше сообразить?! спасибо. Как Dima_T? ну так оно же и вполне логично, что остальные заказы не будут вниз "сползать по номеру". или при каждом таком удалении желаете потом (как результат "сползания по номеру вниз") - будете все заказы с номером выше уделенного перепечатывать, чтоб отразить измененные номера? и так далее.. Так что проект действия, если я правильно понял ситуацию из Вашей формулировки - "все нормально, ничего трогать не надо". Удаляется 13-й из серединки, а у остальных нумерация сохраняется - ну так это ж и есть правильно dima_18Как Dima_T? Ой... так вопрос был только Диме? Не к сообществу? Срочно забудьте все, что я Вам наговорил! %) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 10:03 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
Dima TДля начала ответь на вопрос: что плохого в том что нет 13-го заказа? Какие это проблемы вызовет? Есть традиция... по пятницам выдавать особо любимым клиентам заказ под номером 13.... а его - ой, в БД-то нет... досадно, однако %) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 10:05 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
Большое спасибо за ответ,SSn888! Извините, если не правильно поняли мою фразу. Хотя, я не написал, что вопрос только Диме. Я написал, если Вы прочитали внимательно, согласно предложению Димы. Ну да ладно, я считаю, что это приятная шутка и не более того. Еще раз Вам большое спасибо. Да, я разобрался со своей бедой - и тут конечно, я сам виноват и делал изменение номеров. Почему я так задумал, не знаю сам. Извиняюсь за вопрос - все решил. Разрешите пожалуйста тогда задать следующий вопрос другого плана. Вот с этим вопросом нет решения у меня пока. Есть грид и вывожу много полей: 1 столбец - ф 2 столбей - имя 3 столбей -отчество и т.д. Так как полей много, то все они не входят в грид и требуют смещения нижней полосы прокрутки. Дак вот, когда я добавляю новую запись, то у меня в гриде почему -то полоса прокрутки нижняя уходит до конца вправо и чтоб к первому столбцу данной записи попасть, я ее резко влево делаю, т.е. лишнее движение. Нельзя ли сделать чтоб при добавлении - и показывалась первый, а не последний столбец. Заранее, большое спасибо всем! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 11:21 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
dima_18, Всегда пожалуйста :) у грида есть метод ActivateCell, параметрами указываете строку и столбец ячейки, на которую хотите "вставание курсором" только не забывайте еще фиксировать именно факт перехода (вызовите еще AfterRowColChange после этого) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 11:57 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
Большое спасибо, SSn888 ! Извиняюсь за глупость. Я не очень понял Ваши подсказки. Подскажите пожалуйста. Для примера как прописать. У меня person2.fname - это первый столбец. Напишите пожалуйста Ваш вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 13:52 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
dima_18, персон.нейм - это явно не столбец, а его источник данных (поле таблицы) со столбцом у Вас будет конструкция типа ThisForm.grid1.column1 Вот с объектами и работайте авторThisForm.grid1.ActivateCell(1,1) На форме у Вас лежит объект грид. (правой кнопкой - Пропертис) Он - составной. Каждый столбец - это объект в объекте грид (наверху панелки пропертиез шелкните распахивающийся список - ниже самого грида будет несколько его подчиненных объектов) Таблица "персон" у Вас - наполнение свойства грида "Источник данных" Поле "персон.нейм" - оно же для столбца этого грида. Они просто показывают - отуда брать объекту данные и куда их класть. А далее - работайте не с полем, а с объектом (когда хотите движение именно по объекту) полностью установка на 1-й столбец текщей строки у Вас будет нечто вроде авторThisForm.grid1.ActivateCell(ThisForm.grid1.ActiveRow,1) И почитайте все-же учебники по VFP и по ООП ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 15:05 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
Большое спасибо, SSn888! Вам за помощь. Извините за вопросы и я обязуюсь почитать. Извините последний вопрос и все. Следующего плана: я вывожу данные в excel и у меня все заполняется хорошо и я сделал, чтобы помещалось на 1 страницу, но -внимание - у меня всегда печатается вторая страница, хотя она полностью и пустая. Можно ли как -то сделать так, чтобы вторую страницу не печаталаcь вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 15:20 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
dima_18, чего-то это уж смахивает на тонкий троллинг напополам с эльфингом и стебом %))))))))) ладно, продолжим... выделяете в екселе мышкой нужное, ctl+p, галочку на Вывести на печать Выделенный диапазон )))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 15:33 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
Не вы меня не правильно поняли. Выводится в excel все автоматически и заполняется нужные ячейки соответственно. Я должен нажать кнопку печать и будет все печатать. Но если я не посмотрю в настройки и соответственно не выделю текст, как Вы сказали, то я увижу на выходе полную и пустую страницу соответственно. А последняя выйдет как пустая. Вопрос из-за чего - так все поместилось на одной. И второе можно ли как- то автоматически сделать настройки, что выводить только страницу первую. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 16:03 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
dima_18, тут куча вариантов возможна-то - программно меняйте размер шрифта или высоту ячейки - программно из фокса выделите в екселе ячейки и далее - по уже озвученному - забейте в ексле макрос для этого дела и так далее, и тому подобное ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 16:44 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
всю тему не читал Код: 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. 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. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2014, 07:58 |
|
Проблема с подсчетом удаленной записью
|
|||
---|---|---|---|
#18+
У нас имеется разный ассортимент строительных смесей, необходимых для строительства и ремонта по самым низким ценам. Подробнее по телефону. Доставка по Москве и Московской Области. (Газель, бычок, камаз). С полным ассортиментом можно ознакомиться на нашем официальном сайте. www.keremet.ru Мы готовы проконсультировать вас по телефонам. 84957826358 и 89265123397. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2014, 22:05 |
|
|
start [/forum/search_topic.php?author=UrsoMajor&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 402ms |
total: | 551ms |
0 / 0 |