|
|
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
У меня такая проблема: есть таблица Склад(номер_склада,название),как мне сделать, чтобы при добавлении в склад нового названия, ему автоматически присваивался следующий номер склада.Например: у нас имеются записи в таблице (номер_склада:1,2,3 название:Склад1,Склад2,Склад3)вот и мне надо, чтобы,когда я добавляю склад4 ему присваивался номер_склада=4 и.т.д как это сделать????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 12:31:59 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
ДенгУ меня такая проблема: есть таблица Склад(номер_склада,название),как мне сделать, чтобы при добавлении в склад нового названия, ему автоматически присваивался следующий номер склада.Например: у нас имеются записи в таблице (номер_склада:1,2,3 название:Склад1,Склад2,Склад3)вот и мне надо, чтобы,когда я добавляю склад4 ему присваивался номер_склада=4 и.т.д как это сделать????? Hi, Денг! Один из выходов из ситуации. В базе иметь таблицу с установками/настройками, в которой иметь поле с последним номером склада (Например: Setting.N_sklad). Следовательно следующий номер склада: New_n_sklad = 'Склад'+LTRIM(STR(Setting.N_sklad+1)) Только незабыть в таблице Setting увеличить номер склада для дальней работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 13:06:10 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
Для таких вещеё неплохо подходит идеология NewID - присвоение первичного ключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 13:35:54 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
Calcukate Max(номер_склада) To max_nomer new_nomer = max_nomer + 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 15:54:37 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
Calcukate - конечно же - CALCULATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 15:55:50 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
2Crispy а если между Calcukate Max(номер_склада) To max_nomer new_nomer = max_nomer + 1 и insert .... кто-то или что-то вклиниться?? типа к королю англии пришел мужик с лопатой и говорит: - мы с братом прокопаем тунель под ломаншем. Я начну сдесь, а он во франции. Встретимся посередине. - а если не встретитесь - ну тогда у Вас будет два тонеля под ломаншем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 16:23:24 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
А еще лучше перейти на VFP8 или VFP9 там есть поле автоинкреминент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 20:59:22 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
Ну если буквально по вопросу, то ... Insert into Склад (номер_склада,название) values (INT(RIGHT(M.название,1)),M.название) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 04:21:15 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
MaestroEvНу если буквально по вопросу, то ... Insert into Склад (номер_склада,название) values (INT(RIGHT(M.название,1)),M.название) Где RTRIM? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 07:41:06 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
А еще здесь есть кнопка поиск. Поиск надо вести по слову NEWID. Ну, или автоинкремент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 07:42:22 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
Hi, leaf ! leaf а если между Calcukate Max(номер_склада) To max_nomer new_nomer = max_nomer + 1 и insert .... кто-то или что-то вклиниться?? Ага! Сидят у них там 40 пользователей - и все новые склады создают... - чип-и-дейлы, какие-то, что ли ИМХО этим всегда занимается кто-то один - тот, кто достаточно упал-намоченный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 12:16:43 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
CrispyHi, leaf ! leaf а если между Calcukate Max(номер_склада) To max_nomer new_nomer = max_nomer + 1 и insert .... кто-то или что-то вклиниться?? Ага! Сидят у них там 40 пользователей - и все новые склады создают... - чип-и-дейлы, какие-то, что ли ИМХО этим всегда занимается кто-то один - тот, кто достаточно упал-намоченный не надо утрировать задачу, просто leaf показал порочность такого метода, на самом деле , скажем при автонумерации документов можно запросто получить дубликаты номеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 12:23:14 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
можно использовать calculate max() без последствий типа дублирования уникального номера, я поступаю так: DO WHILE .t. WAIT WINDOW NOWAIT [Ïîïûòêà äîáàâëåíèÿ çàïèñè....] ResultCreate=FCREATE('append') IF ResultCreate>0 EXIT ENDIF ENDDO WAIT CLEAR CALCULATE MAX(IdRec) TO MaxIdRec INSERT INTO Test (IdRec,...) VALUES (MaxIdRec+1,...) =FCLOSE(ResultCreate) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 12:42:04 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
Сорри, вклеивал просмотрел, что получились крокозяблы :-), в строке с WAIT WINDOW NOWAIT 'Попытка добавления записи' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 12:45:14 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
Hi, PaulWist ! Метод не может быть порочен или непорочен... Просто к каждой задаче нужно подходить индивидуально. Бывают и локальные версии. Бывают и жесткие ограничения на доступ к информации, когда только один человек имеет право ее править. Нельзя же каждый раз пытаться создавать решение "на века", "на все случаи жизни". Все равно все учесть невозможно. А иногда, как мне кажется, например, в данном случае, можно попытаться сделать все попроще. Хотя, полностью согласен, что в других случаях - такая простота может оказаться и совершенно неуместна. Поэтому наверно и не бывает универсальных решений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 13:34:47 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
CrispyHi, PaulWist ! Метод не может быть порочен или непорочен... Просто к каждой задаче нужно подходить индивидуально. Бывают и локальные версии. Бывают и жесткие ограничения на доступ к информации, когда только один человек имеет право ее править. Нельзя же каждый раз пытаться создавать решение "на века", "на все случаи жизни". Все равно все учесть невозможно. А иногда, как мне кажется, например, в данном случае, можно попытаться сделать все попроще. Хотя, полностью согласен, что в других случаях - такая простота может оказаться и совершенно неуместна. Поэтому наверно и не бывает универсальных решений. Даже не знаю, что и сказать. Пожалуй отвечу цитатой Леса Пинтера: "Ошибок не бывает в природе, есть ситуации для которых программист не предусмотрел проверку" , исходя из такого тезиса, необходимо делать ф-ий программы, которые в дальнейшем приносили бы меньше головной боли. PS если мои слова вызвали у Вас чувство обиды, тогда прошу прощения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 13:50:27 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
2WORKSNS оригинально. тоже способ .... это в смысле идеи а сам цикл где файл создается... короче я бы над ним поработал по крайней мере на первый взляд я бы всё таки на вашем месте выбрал блокировочку строки в таблице только не таблицы а строки в ней причем табличка не эта а соседняя и сама функция calculate вряд ли здесь умесна имхо так как файл имеет идекс по ключевому полю,что для таблиц логично ожидать, то ... правильно юзаем : go top или go bottom по ситуации и подбираем искомый максимум Но опять же кто как любит работать "Изящным движение руки брюки превращаются в шорты" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 14:29:35 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
2Crispy извените ради бога... но вы зря обижаетесь здесь у вас врагов нет. Слишком уж всё виртуально. А в споре рождается истина Код ваш скопировал потому что писать лень, а не потому что поддеть хотел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 14:34:19 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
2PaulWist : Да нет, думаю, все было вполне корректно. :) Единственное, что я пытался сказать - всего лишь - о сущностях Окамы :) В остальном же полностью согласен. Кстати, собственные программы Леса Пинтера, которые мне довелось однажды посмотреть в одной из его книг, честно говоря, произвели на меня впечатление... - своей убогостью мысли :). Хотя, конечно же, это только мое личное мнение - на данный момент. 2leaf : OK! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 14:38:13 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
2 Leaf Не спорю, кому что нравится, какая ситуация и так далее :-), я просто подкинул идею как приостановить других пока один толкает данные в таблицу, но меня такой способ не подводил. Если насчет скорости, то мне не приходилось работать с очень большими справочниками :-). И у Calculate есть все же небольшой плюс - он не зависит от корректности индекса и наличия оного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 19:41:24 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
Hi WORKSNS! Способ (с блокировкой) также не работает при использовании буферизации и/или представлений (писать же программу, даже НЕ сетевую, без использования этих механизмов - это конечно порочная практика, даже во времена FPD делали "эмуляцию" этих полезнейших вещей через SCATTER/GATHER или временные таблицы/курсоры). Теоретически можно "перенести" формирование кода на момент физической записи (написав не в пример более сложный код в точке сохранения конечно), однако практически всегда легче использовать подход NewID. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2005, 02:43:08 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
Hi, Igor Korolyov ! Igor Korolyov /topic/145680&hl=newid- я вообще не пользуюсь AUTOINC по ряду причин, и ничего :) А интересно, что - вместо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2005, 14:42:00 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
Дык, Игорь вроде написал ;-) Igor Korolyov...однако практически всегда легче использовать подход NewID.Я прав, Игорь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2005, 16:44:56 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
Или у вас уже сплошь КС со своими сиквенсами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2005, 16:46:12 |
|
||
|
Проблема помогите!
|
|||
|---|---|---|---|
|
#18+
Можно просто поставить в поле праймери индекса табдицы default=reccount() и после аппенда делать replace sklad with 'склад'+alltr(str(id)). Тогда точно не будет совпадающих номеров складов Но тут уж такой прикол получится: если есть 3 склада и удалишь второй, то потом склад2 уже не создашь - только склад4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2005, 20:27:33 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33154302&tid=1593878]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
200ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 559ms |

| 0 / 0 |
