Автонумерация.. как исправить
#1
Отправлено 27 Январь 2012 - 00:00
Подскажите пожалуйста, как в таблице, поля (с автонумерацией) удалить N- строк, чтобы позже забить новые с теми же номерами.
Удаляю (и из удаленных тоже), а они продолжают нумероваться, как будто удаления не произошло.
Например:
Было 32 строки, удалил 10, осталось 22. Создаю новую запись, она имеет номер 33 (надо 23)
Спасибо.
#3
Отправлено 28 Январь 2012 - 01:40
В поле Номер снята опция автонумерация
В вычисление по отображению поля добавлен код:
if (!$line['Номер']) { $sqlQuery = "SELECT max(`f437`) AS maxNUM FROM `".DATA_TABLE."43` WHERE (`status`<>'2' AND YEAR(`add_time`)= YEAR(CURDATE()))"; $result = mysql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR); $row = mysql_fetch_assoc($result); $line['Номер']=$row['maxNUM']+1; }, где f437 - внутреннее имя поля Номер в таблице Счета (DATA_TABLE 43).
Нумерация начинается с 1 ежегодно.
Новая запись будет иметь номер=максимальный среди активных или архивных+1.
Удаленные записи исключены (`status`!='2' ).
При необходимости поле Номер можно отредактировать.
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
#4
Отправлено 28 Январь 2012 - 05:43
Fatal error: Unknown column 'Номер' in 'field list'
UPDATE f_data91 SET `Номер`='2' WHERE id='12'
in /home/fm2/public_html/include/functions1.php on line 185
Вычисление:
if (!$line['Номер']) {
$sqlQuery = "SELECT max(`f1267`) AS maxNUM FROM `".DATA_TABLE."91` WHERE (`status`<>'2' AND YEAR(`add_time`)= YEAR(CURDATE()))";
$result = mysql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR);
$row = mysql_fetch_assoc($result);
$line['Номер']=$row['maxNUM']+1;
}
Линк на поле:
/edit_field.php?table=91&field=1267
Поле Номер = число, автонумерация снята
#5
Отправлено 28 Январь 2012 - 07:57
andibrag (28 Январь 2012 - 01:40) писал:
В поле Номер снята опция автонумерация
В вычисление по отображению поля добавлен код:
if (!$line['Номер']) { $sqlQuery = "SELECT max(`f437`) AS maxNUM FROM `".DATA_TABLE."43` WHERE (`status`<>'2' AND YEAR(`add_time`)= YEAR(CURDATE()))"; $result = mysql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR); $row = mysql_fetch_assoc($result); $line['Номер']=$row['maxNUM']+1; }, где f437 - внутреннее имя поля Номер в таблице Счета (DATA_TABLE 43).
Нумерация начинается с 1 ежегодно.
Новая запись будет иметь номер=максимальный среди активных или архивных+1.
Удаленные записи исключены (`status`!='2' ).
При необходимости поле Номер можно отредактировать.
#6
Отправлено 28 Январь 2012 - 12:25
arsenal (28 Январь 2012 - 07:57) писал:
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
#7
Отправлено 28 Январь 2012 - 12:34
#8
Отправлено 06 Март 2012 - 14:08
опции "запрещать дублирование значений" и "автонумерация" сняты
все вычисления, связанные с полем, отключены
если в поле внести изменения (поменять номер) и этот номер уже задействован - происходит сдвижка всей нумерации
в итоге у меня изменились номера всех документов и восстановить это без бумажных дубликатов реальная проблема
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
#9
Отправлено 11 Март 2012 - 09:52
#10
Отправлено 11 Март 2012 - 11:13
Разработчик (11 Март 2012 - 09:52) писал:
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
#11
Отправлено 15 Март 2013 - 15:09
Как я думаю, у меня программа не видит текущий год, но дату счета ставит правильную.
#12
Отправлено 15 Март 2013 - 15:35
#13
Отправлено 15 Март 2013 - 16:26
Цитата
Какой именно код?
#14
Отправлено 16 Март 2013 - 12:41
andibrag (28 Январь 2012 - 01:40) писал:
В поле Номер снята опция автонумерация
В вычисление по отображению поля добавлен код:
if (!$line['Номер']) { $sqlQuery = "SELECT max(`f437`) AS maxNUM FROM `".DATA_TABLE."43` WHERE (`status`<>'2' AND YEAR(`add_time`)= YEAR(CURDATE()))"; $result = mysql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR); $row = mysql_fetch_assoc($result); $line['Номер']=$row['maxNUM']+1; }, где f437 - внутреннее имя поля Номер в таблице Счета (DATA_TABLE 43).
Нумерация начинается с 1 ежегодно.
Новая запись будет иметь номер=максимальный среди активных или архивных+1.
Удаленные записи исключены (`status`!='2' ).
При необходимости поле Номер можно отредактировать.
Или есть еще какой-то?
#15
Отправлено 18 Март 2013 - 12:27
#16
Отправлено 18 Март 2013 - 15:12
Я больше склоняюсь к изменению самой КБ при обновлении.
#17
Отправлено 18 Март 2013 - 17:07
Цитата
Никакое изменение в КБ не могло повлиять на данный код, он тривиальный и использует нативные функции PHP. По крайней мере я не вижу в нем ничего, что могло само по себе сбить вашу нумерацию. Все таки рекомендую проверить по логам изменение даты счетов.
#18
Отправлено 21 Март 2013 - 00:33
#19
Отправлено 21 Март 2013 - 08:20
А ошибка была в автонумерации номера (радио батон сам перескочил). Не знаю почему, но видимо после обновления она каким-то непонятным образом сама поставилась. Сам до этого я туда не лазил.
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 анонимных