Программы "Простой софт" www.prostoysoft.ru

ВНИМАНИЕ! РЕКЛАМНЫЕ СООБЩЕНИЯ И ГИПЕРССЫЛКИ В ФОРУМЕ ЗАПРЕЩЕНЫ (посты удаляются автоматически)
Текущее время: 27.11.2024 15:53

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Отправка e-mail по триггеру
СообщениеДобавлено: 01.08.2013 13:55 
Не в сети

Зарегистрирован: 06.02.2011 16:42
Сообщения: 19
Добрый день

Столкнулся с еще одним интересным нюансом.
Уже давно настроил отправку e-mail сообщений (тестовое рассылка поздравления с ДР без проблем доходит куда надо :)

Но вот когда я делаю триггер на отсылку при создании записи (см. скрин) то он отправляет не на запрашиваемый в запросе e-mail, а как будто на рандомный (или из буфера берет последний используемый... не понятно)

В таком виде запрос вообще не работает:
Email: select UserEmail from tblUsers where tblUsers.UserName =<UserName>
Subject: Произведен платеж ID [ID] по счету № [InvoiceNumberCalc] (№ основного: [InvoiceNumberCalc2]).
Message: [PaymentDate] (год/месяц/день) по указанным счетам был произведен платеж на сумму [ItogCalc] руб. Контрагент: [ClientCalc]. Примечание платежа: [PaymentNotes]

Хотя в хелпе написано "Для связи с полями текущей записи используются угловые скобки. "

В чем может быть проблема?


Вложения:
screen.png
screen.png [ 7.06 КБ | Просмотров: 63666 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка e-mail по триггеру
СообщениеДобавлено: 01.08.2013 17:52 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
В параметре "Email" триггера только разработчик может сказать поддерживаются ли выражения или нет.

P.S. Кстати, где вы нашли поле UserEmail в таблице tblUsers (демо БД) ??
Попробуйте так (при условии, что выражения поддерживаются):
Email: FORMULA: (SELECT Email FROM tblUsers WHERE UserName = <UserName>)

P.P.S. Наверно, отсылка писем при удалении записи не имеет особого смысла...

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка e-mail по триггеру
СообщениеДобавлено: 01.08.2013 19:04 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
EmailTo: SELECT UserEmail FROM tblUsers WHERE UserName = <CurrentUser>
Должно работать.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка e-mail по триггеру
СообщениеДобавлено: 02.08.2013 09:15 
Не в сети

Зарегистрирован: 06.02.2011 16:42
Сообщения: 19
OMEN писал(а):
> P.S. Кстати, где вы нашли поле UserEmail в таблице tblUsers (демо БД) ??
> Попробуйте так (при условии, что выражения поддерживаются):
> Email: FORMULA: (SELECT Email FROM tblUsers WHERE UserName = <UserName>)
>
У меня уже перестроенная БД и есть поле tblUsers.UserEmail

> P.P.S. Наверно, отсылка писем при удалении записи не имеет особого смысла...
Согласен, достаточно только при добавлении и изменении.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка e-mail по триггеру
СообщениеДобавлено: 02.08.2013 09:22 
Не в сети

Зарегистрирован: 06.02.2011 16:42
Сообщения: 19
Ivan писал(а):
> EmailTo: SELECT UserEmail FROM tblUsers WHERE UserName = <CurrentUser>
> Должно работать.

А как мне сделать чтобы почта отправлялась не на почту <текущего пользователя>, а на почту пользователя, который указан как менеджер в записи платежа.

Т.е. у меня есть:
заполненные qdfPayments.UserName и tblUsers.UserName с tblUsers.UserEmail

В представлении qdfPayments я создал триггер, описанный выше и по логике при создании записи в qdfPayments отрабатывает запрос "select UserEmail from tblUsers where tblUsers.UserName =[UserName]" т.е. он должен взять значение UserName из новой записи в qdfPayments, на основании него слазить за tblUsers.UserEmail и отправить туда мыло. Но "что-то пошло не так" (с)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка e-mail по триггеру
СообщениеДобавлено: 02.08.2013 10:20 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
EmailTo: [Имя поля емейла менеджера]

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка e-mail по триггеру
СообщениеДобавлено: 02.08.2013 11:40 
Не в сети

Зарегистрирован: 06.02.2011 16:42
Сообщения: 19
Ivan писал(а):
> EmailTo: [Имя поля емейла менеджера]

А если оно храниться в другой таблице tblUsers?
А триггер привязан к qdfPayments где связь с tblUsers есть только по полю UserName


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка e-mail по триггеру
СообщениеДобавлено: 02.08.2013 12:04 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Имя поля, запрос в другую таблицу, а также возможность сперва вывести поле из другой таблицы в эту таблицу и затем его использовать. Все это возможные варианты.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка e-mail по триггеру
СообщениеДобавлено: 02.08.2013 12:50 
Не в сети

Зарегистрирован: 06.02.2011 16:42
Сообщения: 19
Ivan писал(а):
> Имя поля, запрос в другую таблицу, а также возможность сперва вывести поле
> из другой таблицы в эту таблицу и затем его использовать. Все это возможные
> варианты.

Последний вариант усложняет представление так как встраивает дополнительный запрос в него на вывод доп. поля.
А вот вариант с запросом как раз и хочу настроить. Подскажите как его правильно сформировать согласно описанным полям в двух таблицах?
Как уже писал ранее
Email: select UserEmail from tblUsers where tblUsers.UserName = [UserName] - некорректно работает
Email: select UserEmail from tblUsers where tblUsers.UserName =<UserName> - не работает вовсе
под =[UserName] или =<UserName> я понимаю qdfPayments.UserName так как в этом представлении должен срабатывать триггер при добавлении записи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка e-mail по триггеру
СообщениеДобавлено: 02.08.2013 13:03 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Вы напишите точные названия ваших таблиц и полей, учавствующих в данной задаче, прежде чем спрашивать конкретное SQL-выражение.
Можно также предоставить скриншот.
Может быть, это вам надо:

EmailTo: SELECT UserEmail FROM tblUsers WHERE UserName = <UserName>

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка e-mail по триггеру
СообщениеДобавлено: 02.08.2013 13:54 
Не в сети

Зарегистрирован: 06.02.2011 16:42
Сообщения: 19
Ivan писал(а):
> Вы напишите точные названия ваших таблиц и полей, учавствующих в данной задаче,

Поподробнее
1. Есть qdfPayments в ней есть хранимое поле qdfPayments.UserName где при создании записи выбираются значения из tblUsers.UserName (руками либо при автозаполнении схожих полей при выборе привязанного документа)
2. Есть tblUsers где соответственно есть хранимые поля tblUsers.UserName и tblUsers.UserEmail
3. В представлении qdfPayments я создал триггер (см. первый скрин) который при создании записи запрашивает tblUsers.UserEmail
Результаты его работы я отписал в первом посте.

> EmailTo: SELECT UserEmail FROM tblUsers WHERE UserName = <UserName>

Попробовал так, выдает ошибку (см. скрин 2)
При этом в таблице tblUsers все в порядке (см. скрин 3)


Вложения:
screen2.png
screen2.png [ 2 КБ | Просмотров: 63627 ]
screen3.jpg
screen3.jpg [ 56.24 КБ | Просмотров: 63627 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка e-mail по триггеру
СообщениеДобавлено: 02.08.2013 14:40 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Попробуйте так:
EmailTo: SELECT UserEmail FROM tblUsers WHERE UserName = '<UserName>'

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка e-mail по триггеру
СообщениеДобавлено: 02.08.2013 18:29 
Не в сети

Зарегистрирован: 06.02.2011 16:42
Сообщения: 19
OMEN писал(а):
> Попробуйте так:
> EmailTo: SELECT UserEmail FROM tblUsers WHERE UserName = '<UserName>'

Работает.
А подскажите что значит такое двойное обрамление поля '<UserName>' , а то ранее с ним не сталкивался в вашей программе (ни в хелпе ни на форуме)?
Спс.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка e-mail по триггеру
СообщениеДобавлено: 02.08.2013 19:00 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Недавно был изменен подход к использованию кавычек в SQL-запросах в триггерах. Если ранее приложение само в автоматическом режиме обрамляло некоторые типы (дата, текст, например) полей, то сейчас эта обязанность возложена на программиста-администратора, что является более логичным, гибким и правильным (если необходимо по контексту, вы сами вставляете кавычки какие вам нужны). Это позволило избавиться от лишних кавычек в письмах, отсылаемых по триггеру(ранее значение даты в тексте письма или в сообщениях отображалось так: '2 августа 2013г.', т.е. в кавычках), а также в сообщениях пользователям (в триггерах).

В ранних версиях ваш запрос сработал бы.

P.S. На простом языке такой двойное обрамление означает, что тип заключенного в кавычки поля является текстовым (посмотрите сами тип поля UserName в таблице tblUsers и вы все поймете).

Возможно, Иван что-то дополнит по этому поводу.

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB