Смена статуса заказа
#1
Отправлено 26 Май 2017 - 16:02
В таблице есть поле статус: Принято, В работе, Исполнено
В подтаблице тоже есть поле статус.
Как реализовать так, что бы при каждой смене статуса в подтаблице при добавлении записи менялся статус в основной таблице?
Возможно ли это реализовать?
#2
Отправлено 26 Май 2017 - 18:00
#3
Отправлено 29 Май 2017 - 13:51
CbCoder (26 Май 2017 - 18:00) писал:
Подскажите, где именно прописать? В поле статус основной таблицы или в поле статус подтаблицы?
Поле статус основной таблиц выбрать текст?
---------------------------------------------------------------------
Поле статус основной таблицы выбрал текст. В конструкторе вставил вычисление ниже.
Название подтаблицы "Работа по заявке" - тип список
В конструкторе основной таблицы прописал следующее:
$line['Работа по заявке']['Статус выполнения'] = $line['Статус']
Получил ошибку:
Error generated:
/var/www/u111111111111/data/www/mysite.ru/include/functions1.php(563) : data_update()
/var/www/u111111111111/data/www/www/mysite.ru/include/functions1.php(647) : form_event_recurs()
/var/www/u111111111111data/www/www/mysite.ru/fields.php(2185) : calc_line()
Ошибка SQL запроса:
UPDATE cb_data250 SET Работа по заявке='' WHERE id=2
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'по заявке='' WHERE id=2' at line 1
Вот это пример рассматриваемый Вами тоже подходит, только не понял где именно прописать?
Ссылка на тему: https://clientbase.r...?showtopic=7586
Сообщение отредактировал Valerii: 29 Май 2017 - 17:12
#4
Отправлено 30 Май 2017 - 10:18
#5
Отправлено 31 Май 2017 - 09:22
Ошибка системы.
Error generated:
/var/www/u1111111/data/www/mysite.ru/include/functions1.php(563) : data_update()
/var/www/u1111111/data/www/mysite.ru/include/functions1.php(647) : form_event_recurs()
/var/www/u1111111/data/www/mysite.ru/view_line2.php(2957) : calc_line()
Ошибка SQL запроса:
UPDATE cb_data260 SET Работа по заявке='' WHERE id=2
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'по заявке='' WHERE id=2' at line 1
Сообщение отредактировал Valerii: 31 Май 2017 - 11:02
#6
Отправлено 31 Май 2017 - 11:05
#7
Отправлено 31 Май 2017 - 13:52
CbCoder (31 Май 2017 - 11:05) писал:
Так это своя таблица. Новая.
Написал в техподдержку. Не помогли. Сказали пишите на форум, хотя и доступ давал )))
В основной таблице есть поле "Статус", тип ставлю текст.
Далее в связанной подтаблице с названием "Работа по заявке" создаю поле с названием "Стасус выполнения". Тип ставлю список и прописываю статусы Принято, Исполнено.
Далее в конструкторе вычислений в поле "Статус выполнения", в подтаблице "Работа по заявке" пишу вот это выражение:
$line['Работа по заявке']['Статус выполнения'] = $line['Статус']
Далее ставлю условие изменение поля статус выполнения.
В итоге ничего не происходит.
Если поставить условие отображение, то происходит ошибка описаная выше.
------------------------------------------------
Результат я хотел бы получить следующий, что бы при каждом изменении статус в подтаблице изменялся статус в основной таблице. Точнее получается по последней записи.
Поэтому и обратил внимание на эту тему с Вашим ответом. Может этот код как то поможет.
Сообщение отредактировал Valerii: 31 Май 2017 - 14:32
#8
Отправлено 31 Май 2017 - 15:11
Прочитайте еще раз внимательно:
CbCoder (30 Май 2017 - 10:18) писал:
Если непонятно что это за поле, зайдите в настройки полей вашей подтаблицы и сделайте скриншот. Я вам укажу его.
Еще раз код повторю: $line['поле связи с основной']['Статус'] = $line['Статус выполнения']; От вас нужно только поле связи и всё.
#9
Отправлено 31 Май 2017 - 15:17
Valerii (31 Май 2017 - 13:52) писал:
Обойдитесь без редактора. Он Вам не поможет. Откройте вычисление и вставьте туда этот код. Предварительно заменив XXX YYY ZZZ на соответствующие числовые значения. Цифры 999999 замените на ID Подтаблицы
/*****************Обозначения, принятые в коде * fXXX - поле "Статус" в таблице основной таблице * fYYY - поле связи подтаблицы с основной * fZZZ поле "Статус" в подтаблице * символы XXX YYY XXX - это ID соответствующих полей. Смотим их в настройках * Вы хотите чтобы при изменении поля "Статус" в ПОСЛЕДНЕЙ записи подтаблицы * присваивался полю "статус" в Основной * Для этого сначала нужно проверить, а явлляется ли редактируемая запись подтаблицы * последней. Если да, то выполняем код * ******************************************/ $linked_id = $line['id'];//Это ID записи редактируемой в Подтаблице $main_id = $line['fYYY']['id'];// Это ID записи в Основной таблице /********Найдем последнюю в подтаблице**********/ $sql_max = " SELECT MAX(id) as max_id FROM `".DATA_TABLE."999999` WHERE `fYYY` = ".$main_id." AND `status`=0 /****Исключим удаленные****/ "; $res_max=sql_query($sql_max); while($row_max=sql_fetch_assoc($res_max)) $max_linked_id = intval($row_max['max_id']); if($linked_id == $max_linked_id)//Наша редактируемая и есть последняя запись {//Присвоим значение Статуса Основной таблице $line['fYYY']['fXXX'] = $line['fZZZ']; }
Сообщение отредактировал maksn: 31 Май 2017 - 15:57
#10
Отправлено 31 Май 2017 - 16:15
CbCoder (31 Май 2017 - 15:11) писал:
Прочитайте еще раз внимательно:
Если непонятно что это за поле, зайдите в настройки полей вашей подтаблицы и сделайте скриншот. Я вам укажу его.
Еще раз код повторю: $line['поле связи с основной']['Статус'] = $line['Статус выполнения']; От вас нужно только поле связи и всё.
ipb.global.registerReputation( 'rep_post_33305', { domLikeStripId: 'like_post_33305', app: 'forums', type: 'pid', typeid: '33305' }, parseInt('0') );
#11
Отправлено 31 Май 2017 - 16:28
maksn (31 Май 2017 - 15:17) писал:
/*****************Обозначения, принятые в коде * fXXX - поле "Статус" в таблице основной таблице * fYYY - поле связи подтаблицы с основной * fZZZ поле "Статус" в подтаблице * символы XXX YYY XXX - это ID соответствующих полей. Смотим их в настройках * Вы хотите чтобы при изменении поля "Статус" в ПОСЛЕДНЕЙ записи подтаблицы * присваивался полю "статус" в Основной * Для этого сначала нужно проверить, а явлляется ли редактируемая запись подтаблицы * последней. Если да, то выполняем код * ******************************************/ $linked_id = $line['id'];//Это ID записи редактируемой в Подтаблице $main_id = $line['fYYY']['id'];// Это ID записи в Основной таблице /********Найдем последнюю в подтаблице**********/ $sql_max = " SELECT MAX(id) as max_id FROM `".DATA_TABLE."999999` WHERE `fYYY` = ".$main_id." AND `status`=0 /****Исключим удаленные****/ "; $res_max=sql_query($sql_max); while($row_max=sql_fetch_assoc($res_max)) $max_linked_id = intval($row_max['max_id']); if($linked_id == $max_linked_id)//Наша редактируемая и есть последняя запись {//Присвоим значение Статуса Основной таблице $line['fYYY']['fXXX'] = $line['fZZZ']; }
Спасибо огромное Вам!!!! Всё работает просто замечательно!!!!
Спасибо, благодарю, СПАСИБО!!!!
#12
Отправлено 31 Май 2017 - 17:14
#13
Отправлено 31 Май 2017 - 18:22
CbCoder (31 Май 2017 - 17:14) писал:
Вариант maksn я не проверял, но даже если он верный, то излишне сложен, имхо. Мой гораздо проще.
Без учета этого условия ваш вариант подойдет. Но если нужно, чтобы статус менялся при редактировании именно последней записи, то нет.
Сообщение отредактировал maksn: 31 Май 2017 - 18:23
#14
Отправлено 01 Июнь 2017 - 09:19
maksn (31 Май 2017 - 18:22) писал:
Без учета этого условия ваш вариант подойдет. Но если нужно, чтобы статус менялся при редактировании именно последней записи, то нет.
В словах автора темы этого не увидел, но возможно это подразумевалось, спорить не буду.
Количество пользователей, читающих эту тему: 7
0 пользователей, 7 гостей, 0 анонимных