[ОТВЕТИТЬ]
05.01.2015 17:59
Aligator
 
Вопрос собственно состоит в том, чтобы нарисовать ценник, где бы из маркетинговой акции в Супермаг+ бралась информация по дате начала, завершения и цены на время проведения акции, при этом текущая розничная цена должная быть второй строкой перечеркнутая.


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

До сих пор цены можно было брать с SMPRICEHISTORY, но тут Акта переоценки начала акции еще нет, соответственно в истории цена еще не записана. Плюс не знаю как с маркетинговой акции вырвать дату начала и конца в ценник.
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1384.png
Просмотров: 1003
Размер:	12.5 Кб
ID:	4261   Нажмите на изображение для увеличения
Название: Image 1386.png
Просмотров: 1085
Размер:	22.9 Кб
ID:	4262  
06.01.2015 10:13
OlegON
 
Вопрос не понял. Неизвестна структура БД?
06.01.2015 10:31
Aligator
 
Цитата:
OlegON Вопрос не понял. Неизвестна структура БД?
Вопрос в помощи написания 2-х запросов для выборки дат с Маркетинговой акции и предстоящей цены на время проведения акции, т.к. самостоятельно нет навыков написания запросов. Если вопрос задан неверно прошу прощения.
06.01.2015 15:36
BotMan
 
а в SMSPEC не будут видны эти цены??? к сожалению мы не пользуемся такими документами, у нас тупо скидка на группу товара или по артикулу и не могу у себя глянут.
06.01.2015 16:13
BotMan
 
создал у себя болванку, что-то вытянул.

Код:
select itemprice, trunc(ac.datebegin), trunc(ac.dateend) from smspec sp, smcard crd, smauctions ac
where sp.doctype = 'MA'
and sp.article = crd.article
and sp.article = &art
and sp.docid = ac.id
я чайник, так что проверяй.

возможно придется добавить row_number() over ( )
06.01.2015 17:01
Aligator
 
Цитата:
BotMan создал у себя болванку, что-то вытянул.

Код:
select itemprice, trunc(ac.datebegin), trunc(ac.dateend) from smspec sp, smcard crd, smauctions ac
where sp.doctype = 'MA'
and sp.article = crd.article
and sp.article = &art
and sp.docid = ac.id
я чайник, так что проверяй.

возможно придется добавить row_number() over ( )
А вот эту строчку and sp.article = &art может так проверять? :
and sp.article = supermag.russianspell.PriceCardString ('P_ARTICLE')

?
Просто пока что ничего не вывелось в ценник..
06.01.2015 17:06
BotMan
 
для ценника возможно нужно обозвать все таблицы supermag.smcard и т.д.
и я просто показа этим запросом где это находится.
07.01.2015 19:04
BotMan
 
кидани сюда ценник, завтра глянем
08.01.2015 10:09
Aligator
 
Цитата:
BotMan кидани сюда ценник, завтра глянем
учусь пользоваться форумом
Вложения
Тип файла: rar price_card_s_111.rar (3.2 Кб, 174 просмотров)
08.01.2015 17:11
BotMan
 
я с Fastreport не помогу 8(
09.01.2015 17:23
Aligator
 
Цитата:
BotMan я с Fastreport не помогу 8(
Жаль.
Буду ждать свободных желающих помочь склепать запросы, самостоятельны попытки ограничены незнаниями программирования.
10.01.2015 00:11
vdm
 
Вырезал запрос из ценника в reports и порезал (в оригинале много лишнего).
- используется svpricecard, т.е. предварительно должна отработать стандартная процедура ценников loadpricecard
- выдать гранты на все таблицы запроса для SUPERMAG_FN_CARD_PRINTPRICER
- акции берутся только в розовой галке, с датой старта больше текущей
- акционная цена - за одну единицу, может понадобиться умножение на коэффициент, если ценник за несколько штук
- есть переменная :P_LOC, в fastreport ee нужно или запросу передавать параметром (не помню как) или вставить в текст запроса прямой склейкой +Report.GetParameterValue("P_LOC")+
Код:
SELECT	t_pr.article article,
			t_pr.name name,
			t_pr.cardcomment cardcomment,
			t_pr.country country,
			t_pr.price price,
			sp.itemprice price_ma,
			t_pr.qtyprint qtyprint,
			t_pr.unitname unitname,
			t_pr.isscale isscale,
			t_pr.plu plu,
			d.id ma_id,
			TRUNC (au.datebegin) ma_datebegin,
			TRUNC (au.dateend) ma_dateend
	 FROM supermag.svpricecard t_pr,
			supermag.smdocuments d,
			supermag.smspec sp,
			supermag.smauctions au
	WHERE t_pr.article = sp.article
			AND d.doctype = 'MA'
			AND d.id = sp.docid
			AND d.doctype = sp.doctype
			AND t_pr.article = sp.article
			AND d.id = au.id
			AND d.doctype = au.doctype
			AND d.docstate = 2
			AND au.datebegin >= TRUNC (SYSDATE)
			AND :P_LOC IN (SELECT locid
					  FROM supermag.smauctionatoms am
					 WHERE am.aucid = d.id AND am.doctype = d.doctype)
ORDER BY ma_id, article;
12.01.2015 11:23
Aligator
 
Цитата:
vdm Вырезал запрос из ценника в reports и порезал (в оригинале много лишнего).
Прошу прощения, не могли б вы скинуть ваш отредактированный ценник, я вставляю в свой и получаю только ошибки...
12.01.2015 11:30
Mtirt
 
Куда вставляете? Какие ошибки?
12.01.2015 11:31
vdm
 
Я ж говорю, у меня oracle reports, у вас fastreport, потестить мне не на чем.
Покажи свой код, получаемые ошибки.
12.01.2015 11:56
Aligator
 
Цитата:
vdm Я ж говорю, у меня oracle reports, у вас fastreport, потестить мне не на чем.
Покажи свой код, получаемые ошибки.
Добавил новый источник запроса:


получаю вот такую ошибку при попытке отобрать любые значения вашего запроса:

Код:
2015.01.12 (Monday) 10:56:29
----- Прерывание работы программы -----
сообщение: "Неправильный результат из-за исключения, возникшего во время операции.  См. описание исключения в InnerException."
исключение: System.Reflection.TargetInvocationException
источник: System
метод: Void RaiseExceptionIfNecessary()
   в System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
   в Sm.Core.RunWorkerCompletedEventArgs`1.get_Result()
   в Sm.FastReports.Domain.FastReportDomainPanel.<>c__DisplayClass2.<RunSingleReport>b__0(Object sender, RunWorkerCompletedEventArgs`1 e)
----- Причина исключения, уровень вложения 1 -----
сообщение: "TextFixedPrice: Error in expression: MA.PRICE"
исключение: System.Exception
источник: FastReport.Engine
метод: System.String CalcAndFormatExpression(System.String, Int32)
   в FastReport.TextObjectBase.CalcAndFormatExpression(String expression, Int32 expressionIndex)
   в FastReport.TextObject.GetData()
   в FastReport.BandBase.GetData()
   в FastReport.Engine.ReportEngine.PrepareBand(BandBase band, Boolean getData)
   в FastReport.Engine.ReportEngine.AddToOutputBand(BandBase band, Boolean getData)
   в FastReport.Engine.ReportEngine.ShowBand(BandBase band, Boolean getData)
   в FastReport.Engine.ReportEngine.ShowBand(BandBase band, BandBase outputBand, Single offsetX, Single offsetY)
   в FastReport.Engine.ReportEngine.RenderBandAcrossThenDown(DataBand dataBand, Int32 rowCount)
   в FastReport.Engine.ReportEngine.RenderMultiColumnBand(DataBand dataBand, Int32 rowCount)
   в FastReport.Engine.ReportEngine.ShowDataBand(DataBand dataBand, Int32 rowCount)
   в FastReport.Engine.ReportEngine.RunDataBand(DataBand dataBand, Int32 rowCount, Boolean keepFirstRow, Boolean keepLastRow)
   в FastReport.Engine.ReportEngine.RunDataBand(DataBand dataBand)
   в FastReport.Engine.ReportEngine.RunBands(BandCollection bands)
   в FastReport.Engine.ReportEngine.RunReportPage(ReportPage page)
   в FastReport.Engine.ReportEngine.RunReportPages()
   в FastReport.Engine.ReportEngine.RunReportPages(ReportPage page)
   в FastReport.Engine.ReportEngine.Run(Boolean runDialogs, Boolean append, ReportPage page)
   в FastReport.Report.Prepare(Boolean append)
   в Sm.FastReports.Domain.FastReportDomainModel.ExecuteReport(Report report, String reportFile, List`1 commonParameters, List`1 objectParameters, Int32 moduleRole, Int32 functionRole)
   в Sm.FastReports.Domain.FastReportDomainPanel.Report_DoWork(Object sender, TaskWorkEventArgs`3 e)
   в Sm.Core.TaskWorker`3.OnDoWork(DoWorkEventArgs e)
   в Sm.Core.TaskWorkerBase.InternalBackgroundWorker.OnDoWork(DoWorkEventArgs e)
   в System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1393.png
Просмотров: 630
Размер:	32.9 Кб
ID:	4273  
12.01.2015 12:23
Aligator
 
Цитата:
vdm Я ж говорю, у меня oracle reports, у вас fastreport, потестить мне не на чем.
Если нужно - могу предоставить свой демо стенд на тестирование...если есть время конечно
12.01.2015 12:31
Mtirt
 
Надо не добавлять новый источник, а заменить запрос в существующем PriceCards.
И обращаться к нему.
12.01.2015 13:04
Aligator
 
Цитата:
Mtirt Надо не добавлять новый источник, а заменить запрос в существующем PriceCards.
И обращаться к нему.
Взял стандартный price_card_example.frx, заменил в нем все, при выводе ценника выбивает:

Цитата:
2015.01.12 (Monday) 12:03:46
----- Прерывание работы программы -----
сообщение: "Неправильный результат из-за исключения, возникшего во время операции. См. описание исключения в InnerException."
исключение: System.Reflection.TargetInvocationException
источник: System
метод: Void RaiseExceptionIfNecessary()
в System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
в Sm.Core.RunWorkerCompletedEventArgs`1.get_Result()
в Sm.FastReports.Domain.FastReportDomainPanel.<>c__DisplayClass2.<RunSingleReport>b__0(Object sender, RunWorkerCompletedEventArgs`1 e)
----- Причина исключения, уровень вложения 1 -----
сообщение: "ORA-01008: не все переменные привязаны
"
исключение: System.Data.OracleClient.OracleException
источник: Sm.BusinessServer
данные: соединено с: База даных=DEMO91; Пользователь=supermag
текст команды: SELECT t_pr.article article,
t_pr.name name,
t_pr.cardcomment cardcomment,
t_pr.country country,
t_pr.price price,
sp.itemprice price_ma,
t_pr.qtyprint qtyprint,
t_pr.unitname unitname,
t_pr.isscale isscale,
t_pr.plu plu,
d.id ma_id,
TRUNC (au.datebegin) ma_datebegin,
TRUNC (au.dateend) ma_dateend
FROM supermag.svpricecard t_pr,
supermag.smdocuments d,
supermag.smspec sp,
supermag.smauctions au
WHERE t_pr.article = sp.article
AND d.doctype = 'MA'
AND d.id = sp.docid
AND d.doctype = sp.doctype
AND t_pr.article = sp.article
AND d.id = au.id
AND d.doctype = au.doctype
AND d.docstate = 2
AND au.datebegin >= TRUNC (SYSDATE)
AND :P_LOC IN (SELECT locid
FROM supermag.smauctionatoms am
WHERE am.aucid = d.id AND am.doctype = d.doctype)
ORDER BY ma_id, article
тип команды: Text
метод: Boolean ReadBuffer(System.Collections.ObjectModel.ReadOnlyCollection`1[TRecord] ByRef)
в Sm.BusinessServer.BackgroundReaderBase`1.ReadBuffer(ReadOnlyCollection`1& result)
в Sm.FastReports.Server.FastReportBO.Sm.FastReports.Link.IFastReportBO.FillTableDataNext(BusinessOperation businessOperation, ReadOnlyCollection`1& dataTable)
в Sm.FastReports.SupermagFastReportConnection.<>c__DisplayClass8.<FillTableData>b__5(IFastReportBO bo)
в Sm.BusinessServer.LocalServer.LocalClient`1.Do(Action`1 action)
в Sm.FastReports.SupermagFastReportConnection.TransactedBusinessObject.Do(Action`1 action)
в Sm.FastReports.SupermagFastReportConnection.FillTableData(DataTable table, String selectCommand, CommandParameterCollection parameters)
в FastReport.Data.DataConnectionBase.FillTable(TableDataSource source)
в FastReport.Data.TableDataSource.LoadData(ArrayList rows)
в FastReport.Data.DataSourceBase.Init(Relation relation, String filter, SortCollection sort, Boolean useAllParentRows)
12.01.2015 13:07
Mtirt
 
:P_LOC надо определить как переменную запроса и связать с переменной в отчете.
Мы недавно обсуждали здесь, как это сделать.
12.01.2015 13:23
Aligator
 
Цитата:
Mtirt :P_LOC надо определить как переменную запроса и связать с переменной в отчете.
Мы недавно обсуждали здесь, как это сделать.
вот так связал (сам догадался):


и ценник отработал...но пустой лист почему-то
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1395.png
Просмотров: 593
Размер:	5.3 Кб
ID:	4274  
12.01.2015 13:48
vdm
 
Проверяешь то точно на артикулах из не стартовавшей акции?
12.01.2015 13:56
Mtirt
 
И при этом акция в розовой галочке? Или в черновике?
12.01.2015 14:53
Aligator
 
Акция стартует к примеру 19-го числа, находится в розовом статусе

Пробовал и со стартовавшей, аналогично.
12.01.2015 15:05
Mtirt
 
1. Я бы, чтобы исключить проблему с параметрами поменяла имя параметра в запросе с P_LOC на что-нибудь другое...
2. А можешь где-нибудь проверить, выполняется ли запрос и выдает ли он строки?
13.01.2015 11:05
Aligator
 
Цитата:
Mtirt 1. Я бы, чтобы исключить проблему с параметрами поменяла имя параметра в запросе с P_LOC на что-нибудь другое...
2. А можешь где-нибудь проверить, выполняется ли запрос и выдает ли он строки?
если запускаю этот запрос в тоде - тоже показывается пустой отчет :
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1399.png
Просмотров: 586
Размер:	56.9 Кб
ID:	4275  
13.01.2015 11:45
Mtirt
 
Потому как svpricecard не заполнена... Там темповая таблица.
Так не проверить, это я сглупила.
13.01.2015 14:39
Mtirt
 
Попробуй такой запрос:
Код:
SELECT  t_pr.article article,
      t_pr.name name,
      t_pr.cardcomment cardcomment,
      t_pr.country country,
      t_pr.price price,
      (select sp.itemprice  from supermag.smspec sp, supermag.smdocuments d, supermag.smauctions au 
      where sp.doctype='MA' and sp.doctype=d.doctype and sp.docid=d.id 
      and au.doctype=d.doctype and au.id=d.id and d.docstate>=2 AND au.datebegin >= TRUNC (SYSDATE)
      AND &P_LOC IN (SELECT locid
            FROM supermag.smauctionatoms am
           WHERE am.aucid = d.id AND am.doctype = d.doctype) and sp.article=t_pr.Article)price_ma,
      t_pr.qtyprint qtyprint,
      t_pr.unitname unitname,
      t_pr.isscale isscale,
      t_pr.plu plu,
      (select d.id from supermag.smspec sp, supermag.smdocuments d, supermag.smauctions au 
      where sp.doctype='MA' and sp.doctype=d.doctype and sp.docid=d.id 
      and au.doctype=d.doctype and au.id=d.id and d.docstate>=2 AND au.datebegin >= TRUNC (SYSDATE)
      AND &P_LOC IN (SELECT locid
            FROM supermag.smauctionatoms am
           WHERE am.aucid = d.id AND am.doctype = d.doctype) and sp.article=t_pr.Article) ma_id,
      (select TRUNC (au.datebegin) from supermag.smspec sp, supermag.smdocuments d, supermag.smauctions au 
      where sp.doctype='MA' and sp.doctype=d.doctype and sp.docid=d.id 
      and au.doctype=d.doctype and au.id=d.id and d.docstate>=2 AND au.datebegin >= TRUNC (SYSDATE)
      AND &P_LOC IN (SELECT locid
            FROM supermag.smauctionatoms am
           WHERE am.aucid = d.id AND am.doctype = d.doctype) and sp.article=t_pr.Article) ma_datebegin,
      (select TRUNC (au.dateend)from supermag.smspec sp, supermag.smdocuments d, supermag.smauctions au 
      where sp.doctype='MA' and sp.doctype=d.doctype and sp.docid=d.id 
      and au.doctype=d.doctype and au.id=d.id and d.docstate>=2 AND au.datebegin >= TRUNC (SYSDATE)
      AND &P_LOC IN (SELECT locid
            FROM supermag.smauctionatoms am
           WHERE am.aucid = d.id AND am.doctype = d.doctype) and sp.article=t_pr.Article) ma_dateend
   FROM supermag.svpricecard t_pr
13.01.2015 18:12
Aligator
 
Цитата:
Mtirt Попробуй такой запрос:
Итого в ценник не появляется все что касается МА:



для примера показал, что МА сделал от магазина и от ЦО с участием магазина (в разные даты)
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1402.png
Просмотров: 509
Размер:	46.3 Кб
ID:	4276   Нажмите на изображение для увеличения
Название: Image 1401.png
Просмотров: 470
Размер:	1.1 Кб
ID:	4277  
13.01.2015 18:55
Mtirt
 
Выложи ценник, как он есть сейчас. Я завтра повожусь с ним, если будет время...


Опции темы


Часовой пояс GMT +3, время: 11:18.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.