Перейти к содержимому


Вычмсления в одной таблице.


Сообщений в теме: 11

#1 Feaire

    Активный участник

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 15 Ноябрь 2015 - 14:43

Добрый день.
Создаю таблицы где я вывожу связсь с раздела счета -оплаченно (она у меня включает НДС.), так вот это связь хотим выводить как оплаченно без НДС а так же сделать дополнительую ячейку где будем переодится смма в ЕВРО по курсу скажим который мы укажем.
Каким образом это сделать?

#2 Feaire

    Активный участник

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 15 Ноябрь 2015 - 14:50

Так тут понял, вопрос теперь в дргом.
Как сделать ячеку которая будет считать сумму всех записией из подченной таблицы?
К примеры я вывел пять счетов в поддеченную таблицу и хочу в главную вывести общею сумму?

Сообщение отредактировал Feaire: 15 Ноябрь 2015 - 15:20


#3 Feaire

    Активный участник

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 15 Ноябрь 2015 - 22:20

Для того что бы было понятно, что нужно, прилогаю скрин.
У меня есть две так сказать табоицы
Первая отчет финансовый а в ней открыте счета.
В таблице открыте счета я вывожу счета те кторые мне нужно выбирая по номеру счета и вывожу связи.
Далее в главное таблице я хочу сделать что бы в граффе Всего оплаченно выводилась сумма ЕВРО ОПЛАЧЕННО.
И конечно при добавлении или удалии записей сумма менялось в зависимости от кличесвто.

Прикрепленные изображения

  • Прикрепленное изображение: Скриншот 2015-11-15 21.14.21 (3).png


#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Ноябрь 2015 - 09:32

Примеры такого вычисления есть в документации и в стандартной конфигурации, например в таблице Позиции счета, если не ошибаюсь.

#5 Feaire

    Активный участник

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 16 Ноябрь 2015 - 10:32

Добрый день, я это нашел но не получается сделать.:
// Получаем сумму содержимого полей "Сумма" таблицы "Позиции счета", где поле "Счет" равно номеру счета.
$sqlQuery = "SELECT sum(f810) as summa FROM ".DATA_TABLE."74 WHERE status=0 AND f807='".$line['Счет']['ID']."'";
$res = sql_query($sqlQuery);
$row = sql_fetch_array($res);
$summa = $row['summa'];
// Заносим полученную сумму в поле "Сумма" родительской таблицы, обращаясь через поле связи "Счет"
$line['Счет']['Сумма'] = $summa ;

Вот это было в документации. Но как применить к моей таблице я так и не понял.
f810 - Это я так понимаю в моем случаю будет Всего оплаченно
Далее 74 это я так и непонял где посмотерть относительно моей таблицы которую я вывел.
f807 - (поле связь указывающее на счет в таблице "Позиции счета".) - вот это я тоже не понял что указвать в моем случаи, уазывать ячейку номера счета?
.$line['Счет']['ID']."'";
так же в моем случаи что именно тут заменять?

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Ноябрь 2015 - 11:28

f810 - Это я так понимаю в моем случаю будет Всего оплаченно

Нет, это поле в подтаблице, по которому идет суммирование, т.е. в вашем случае "Евро оплачено", как я понял. 810 - это id данного поля.

Далее 74 это я так и непонял где посмотерть относительно моей таблицы которую я вывел

А это id подтаблицы (точнее, таблицы по которой создана подтаблица, т.е. "Открытие счета"), увидеть можно в адресной строке (параметр table), когда переходите в настройки или отображение таблицы.

f807 - (поле связь указывающее на счет в таблице "Позиции счета".) - вот это я тоже не понял что указвать в моем случаи, уазывать ячейку номера счета?

Опять же, переходите в настройки таблицы "Открытие счета", и смотрите поле связи (как правило оно идет первым по порядку). 807 - это его id, а вместо 'Счет' в $line['Счет']['ID'] указываете его имя.

#7 Feaire

    Активный участник

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 16 Ноябрь 2015 - 12:14

Спасибо, стало более мение понятно. Однако выдает ошибку все равно.
И так вот такой код у меня теперь стал:
// Получаем сумму содержимого полей "ЕВРО ОПЛАЧЕННО" таблицы "Открытие счета", где поле "№" равно номеру счета.
$sqlQuery = "SELECT sum(f5350) as summa FROM ".DATA_TABLE."350 WHERE status=0 AND f5290='".$line['№']['ID']."'";
$res = sql_query($sqlQuery);
$row = sql_fetch_array($res);
$summa = $row['summa'];
// Заносим полученную сумму в поле "Сумма" родительской таблицы, обращаясь через поле связи "Счет"
$line['№']['Всего оплаченно'] = $summa ;

Но выдает такую ошибку:

Ошибка системы.

Error generated:
/home/asahyd/base.asahyd.ru/docs/include/functions1.php(549) : data_update()
/home/asahyd/base.asahyd.ru/docs/include/functions1.php(629) : form_event_recurs()
/home/asahyd/base.asahyd.ru/docs/fields.php(1916) : calc_line()
Ошибка SQL запроса:
UPDATE cb_data340 SET №='' WHERE id=1
Unknown column '№' in 'field list'



В приложении скрины из таблиц

Прикрепленные изображения

  • Прикрепленное изображение: Скриншот 2015-11-16 11.11.50.png
  • Прикрепленное изображение: Скриншот 2015-11-16 11.12.13.png


#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Ноябрь 2015 - 12:38

А что за поле "№" ? По логике это должно быть поле "Связь с "Отчет финансовый"", оно и по названию подходит (такое имя генерируется автоматически при создании подтаблицы), и по порядку оно первое. Замените "№" на него.

PS: к тому же у вас в запросе стоит именно f5290, т.е. поле "Связь с "Отчет финансовый"", что правильно. Странно что потом вы используете "№".

#9 Feaire

    Активный участник

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 16 Ноябрь 2015 - 12:48

// Получаем сумму содержимого полей "ЕВРО ОПЛАЧЕННО" таблицы "Открытие счета", где поле "№" равно номеру счета.
$sqlQuery = "SELECT sum(f5350) as summa FROM ".DATA_TABLE."350 WHERE status=0 AND f5290='".$line['Связь с "Отчет финансовый"']['ID']."'";
$res = sql_query($sqlQuery);
$row = sql_fetch_array($res);
$summa = $row['summa'];
// Заносим полученную сумму в поле "Сумма" родительской таблицы, обращаясь через поле связи "Счет"
$line['Связь с "Отчет финансовый"']['Всего оплаченно'] = $summa;

Однако все равно ошибка, видимо, что то не так опять идет.

Error generated:

/home/asahyd/base.asahyd.ru/docs/include/functions1.php(549) : data_update()

/home/asahyd/base.asahyd.ru/docs/include/functions1.php(629) : form_event_recurs()

/home/asahyd/base.asahyd.ru/docs/fields.php(1916) : calc_line()

Ошибка SQL запроса:
UPDATE cb_data340 SET Связь с \Отчет финансовый\='' WHERE id=1
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=1' at line 1


#10 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Ноябрь 2015 - 12:53

Вы вычисление в какой таблице разместили? Ошибка явственно говорит о том, что в данной таблице таких полей нет (что "№", что "Связь с "Отчет финансовый"").

Подозреваю что засунули его в таблицу "Отчет финансовый", тогда подобное вычисление должно быть в подтаблице (что очевидно, исходя из используемых в коде полей), т.е. в данном случае - в "Открытии счета".

#11 Feaire

    Активный участник

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 16 Ноябрь 2015 - 13:04

Могу ли я вам дать доспут что бы глянули?
Все равно, не работает, теперь ошибок нет но не сумирет.

#12 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Ноябрь 2015 - 13:21

Я не занимаюсь проверкой вычислений, только консультацией. Проверьте еще раз все поля, суть я уже всю подсказал.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных