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


Заполнение полей подтаблицы


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

#21 lenar

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина

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

Просмотр сообщенияCbCoder (05 Ноябрь 2015 - 14:25) писал:

1. Не понял причем тут слово "сортировка". Сортировка - это порядок (например, сортировка в порядке возрастания дат), он выбирается в настройках таблицы. Судя же по вашим фразам, вы имели ввиду "фильтр", т.к. пишете про ее соответствие полю в родительской таблицы, что для понятия "сортировка" - нонсенс.
2. По-моему вы просто не понимаете принцип работы подтаблиц. В режиме родительской записи, в подтаблице отображаются записи, связанные с родительской по полю связи с ней, а не по каким-то полям из родительской таблицы. Т.е. например, если Счета сделать подтаблицей Контрагентов, то заходя в контрагента, увидим все счета, связанные с ним через поле связи "На кого" (т.к. это поле связи счета с контрагентом). Иных способов работы подтаблиц не существует.
1. Согласен, вместо "сортировка" лучше применить слово "фильтр"
2. Я это понимаю. А Вы поняли в чем вопрос состоит?

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


#22 CbCoder

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

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

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

Если понимаете, то странно ставите задачу. У вас в любом случае, как я уже сказал, должно быть поле связи с родительской в подтаблице. Тогда как вы хотите фильтрацию по полям партнера и месяца, что напрямую невозможно. Хотя можно конечно попробовать создавать связь со статистикой автоматически, например при добавлении заявки искать строку в статистике с таким же месяцем и партнером (а если ее еще нет - то добавлять) и прописывать в заявке поле связи с этой строкой. Тогда ваша статистика будет отображать нужные заявки.

#23 lenar

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина

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

Просмотр сообщенияCbCoder (05 Ноябрь 2015 - 16:18) писал:

Хотя можно конечно попробовать создавать связь со статистикой автоматически, например при добавлении заявки искать строку в статистике с таким же месяцем и партнером (а если ее еще нет - то добавлять) и прописывать в заявке поле связи с этой строкой. Тогда ваша статистика будет отображать нужные заявки.
Это именно то что мне надо. В подтаблице "заявки" есть поля "месяц" и "связь с статситика" - поля связи с родительской таблицей "Статистика".
Дайте, пожалуйста, подсказку по коду или алгоритм решения.
Как перебирать строки статистики через вычисление в таблице заявки?

Сообщение отредактировал lenar: 09 Ноябрь 2015 - 12:55


#24 CbCoder

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

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

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

Что значит "перебирать"? Есть понятие "запрос к БД", с помощью него обращаетесь к таблице Статистика с условием "месяц такой-то и партнер такой-то". Если нашли - берете из найденной строки ее id и проставляете в поле связи. Если нет - добавляете запись, получаете id новой записи и также прописываете его в поле связи.

#25 lenar

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина

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

Просмотр сообщенияCbCoder (09 Ноябрь 2015 - 13:09) писал:

Что значит "перебирать"? Есть понятие "запрос к БД", с помощью него обращаетесь к таблице Статистика с условием "месяц такой-то и партнер такой-то". Если нашли - берете из найденной строки ее id и проставляете в поле связи. Если нет - добавляете запись, получаете id новой записи и также прописываете его в поле связи.

Добрый вечер!
Задача все та же.
Набрал код:
  $res = sql_query("SELECT id AS statid
		  FROM ".DATA_TABLE."261
		  WHERE status = 0
			AND f4531 = ".$line['f4561']."
			AND f4511 = ."$line['Партнер']['raw']);
		  
$row = sql_fetch_assoc($res);
$line['Связь с "Статистика"'] = $row['statid'];
Выдает ошибку:

Цитата



Не могу разобраться в чем ошибка. Подскажите, пожалуйста.

#26 CbCoder

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

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

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

Точку не там поставили. Посмотрите на строку выше и поймёте.

#27 lenar

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина

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

Просмотр сообщенияCbCoder (12 Ноябрь 2015 - 16:37) писал:

Точку не там поставили. Посмотрите на строку выше и поймёте.
Теперь выдает такую ошибку:

Цитата


4: AND f4531 = ".$line['f4561']."
5: AND f4511 = ".$line['f1750']['raw']);
6:

Ошибка SQL запроса:
SELECT id AS statid FROM f_data261 WHERE status = 0 AND f4531 = янв.15 AND f4511 = 2
Unknown column 'янв.15' in 'where clause'

На код:
  $res = sql_query("SELECT id AS statid
		  FROM ".DATA_TABLE."261
		  WHERE status = 0
			AND f4531 = ".$line['Месяц']."
			AND f4511 = ".$line['Партнер']['raw']);
		  
$row = sql_fetch_assoc($res);
$line['Связь с "Статистика"'] = $row['statid'];
Что это значит?

Сообщение отредактировал lenar: 12 Ноябрь 2015 - 22:47


#28 CbCoder

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

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

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

Собственно все видно из текста ошибки. У вас текстовое значение в запросе ("янв.15") не в кавычках. Причем в данном случае должны быть одинарные кавычки, т.к. в двойных сам текст запроса.


$res = sql_query("SELECT id AS statid
                  FROM ".DATA_TABLE."261
                  WHERE status = 0
                        AND f4531 = '".$line['Месяц']."'
                        AND f4511 = ".$line['Партнер']['raw']);

$row = sql_fetch_assoc($res);
$line['Связь с "Статистика"'] = $row['statid'];


#29 lenar

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина

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

Просмотр сообщенияCbCoder (13 Ноябрь 2015 - 09:19) писал:

Собственно все видно из текста ошибки. У вас текстовое значение в запросе ("янв.15") не в кавычках. Причем в данном случае должны быть одинарные кавычки, т.к. в двойных сам текст запроса.


$res = sql_query("SELECT id AS statid
				  FROM ".DATA_TABLE."261
				  WHERE status = 0
						AND f4531 = '".$line['Месяц']."'
						AND f4511 = ".$line['Партнер']['raw']);

$row = sql_fetch_assoc($res);
$line['Связь с "Статистика"'] = $row['statid'];
Спасибо большое!





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

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