Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Добавление значения с SQL запросом в подвал печатной формы : Супермаг Плюс (Супермаг 2000)

22.11.2024 21:22


12.05.2016 15:46
Всем доброго дня.

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

Для вывода метки формулу я написал:
SQL код:
(select z.PARAMVALUE 
         from supermag.SMDOCPROPS z
        where z.DOCTYPE = 'P_DOC_TYPE'
        and z.docID =  'P_DOC_ID'
        and z.ParamName = 'CustomLabels.Doverennost') Doverennost, 
Но как вывести её именно в ReportSummary, ведь там выводятся только тексты и значения типа GetTotalValue ...?

Печатная форма тоже во вложении
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1863.png
Просмотров: 373
Размер:	21.3 Кб
ID:	7394   Нажмите на изображение для увеличения
Название: Image 1864.png
Просмотров: 347
Размер:	23.4 Кб
ID:	7395  
Вложения
Тип файла: rar nacl_inout.rar (14.6 Кб, 78 просмотров)
12.05.2016 15:52
Сам SQL запрос рабочий - проверял в жабе, при вводе тип документа WO и номера выводит значения верно, результат в скрине.
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1865.png
Просмотров: 340
Размер:	15.3 Кб
ID:	7397  
12.05.2016 16:26
Если пытаюсь в форме прописать запрос в виде:
SQL код:
              // вывод метки документа
      sSQL = SqlFormat("SELECT "+
        "z.PARAMVALUE"+
        " from supermag.SMDOCPROPS z"+
        " where z.DocType = {0:S}"+
        " and z.DocID = {1:S}"+
        " and z.ParamName = 'CustomLabels.Doverennost'",
        Report.GetParameterValue("P_DOC_TYPE"),
        Report.GetParameterValue("P_DOC_ID")
        );
      host.TableDataSourcePreInit("DocSMDOCPROPS", sSQL); 
Получаю ошибку:
Код:
2016.05.12 (Thursday) 16:25:44 1.33.0.0 sp4  Sm.Main ( NDOCWO )
----- Прерывание работы программы -----
сообщение: "Неправильный результат из-за исключения, возникшего во время операции.  См. описание исключения в 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 -----
сообщение: "Ссылка на объект не указывает на экземпляр объекта."
исключение: System.NullReferenceException
источник: Sm.FastReports
метод: Void TableDataSourcePreInit(System.String, System.String)
   в Sm.FastReports.RepHost.TableDataSourcePreInit(String sourceName, String sourceSQL)
   в FastReport.ReportScript._StartReport(Object sender, EventArgs e)

...подскажите пожалуйста где я мог затупить?
12.05.2016 17:25
Ну а сам запрос в Data Sources - Connection - DocSMDOCPROPS создан?

Вообще одно поле проще добавить в DocHead.
Там в запрос добавь поле doverka
Код:
...
        cl.ID CheckClient,
        d.commentary doverka
        from supermag.SMDocuments d, 
...
И в скрипт где dochead формируется свой подзапрос вставь.
Код:
...
          ",to_number(null) CheckClient"+
          ",'blablabla' doverka"+
          " FROM supermag.SVDocumentsRep d"+
...
На форме в любом месте в текстовом поле пиши [DocHead.doverka].
Работает.
13.05.2016 10:38
Цитата:
vdm Ну а сам запрос в Data Sources - Connection - DocSMDOCPROPS создан?
Итого, получилось вот так в запросах:
SQL код:
      // вывод метки документа
      sSQL = SqlFormat("SELECT "+
        "z.PARAMVALUE,"+
        "(select z.PARAMVALUE"+
        "  from supermag.SMDOCPROPS z "+
        " where z.DocType = {0:S}"+
        " and z.DocID = {1:S}"+
        "and z.ParamName='CustomLabels.Doverennost_date') Doverennost_date "+
        " from supermag.SMDOCPROPS z"+
        " where z.DocType = {0:S}"+
        " and z.DocID = {1:S}"+
        " and z.ParamName = 'CustomLabels.Doverennost'",
        Report.GetParameterValue("P_DOC_TYPE"),
        Report.GetParameterValue("P_DOC_ID")
        );
      host.TableDataSourcePreInit("DocSpecMetki", sSQL); 
при этом в Data sourses создан DocSpecMetki с описанием:

SQL код:
SELECT ''PARAMVALUE,
'' Doverennost_date
FROM dual 
Всё хорошо, всё выводится, но никак не могу добиться чтобы Doverennost_date было в форме в формате 'DD.MM.YY' - подскажите плиз.
13.05.2016 10:57
to_char(Doverennost_date, 'dd.mm.yy')
13.05.2016 11:04
Цитата:
Alexei to_char(Doverennost_date, 'dd.mm.yy')
в Data sourses добавлять DocSpecMetki с описанием?:
SQL код:
SELECT ''PARAMVALUE,
to_char(Doverennost_date, 'dd.mm.yy')
FROM dual 
если да - то ругается на ошибку (см картинку)
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1867.png
Просмотров: 322
Размер:	17.2 Кб
ID:	7398  
13.05.2016 11:37
Покажи описание поля где выводится дата и результат, в каком виде сейчас дату выдает.
13.05.2016 11:59
Цитата:
vdm Покажи описание поля где выводится дата и результат, в каком виде сейчас дату выдает.
В картинках
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1868.png
Просмотров: 343
Размер:	57.2 Кб
ID:	7399   Нажмите на изображение для увеличения
Название: Image 1869.png
Просмотров: 350
Размер:	35.7 Кб
ID:	7400  
13.05.2016 12:13
SQL код:
// вывод метки документа
      sSQL = SqlFormat("SELECT "+
        [B]"to_char(z.PARAMVALUE,'DD.MM.YYYY'),"+[/B]
        "(select z.PARAMVALUE"+
        "  from supermag.SMDOCPROPS z "+
        " where z.DocType = {0:S}"+
        " and z.DocID = {1:S}"+
        "and z.ParamName='CustomLabels.Doverennost_date') Doverennost_date "+
        " from supermag.SMDOCPROPS z"+
        " where z.DocType = {0:S}"+
        " and z.DocID = {1:S}"+
        " and z.ParamName = 'CustomLabels.Doverennost'",
        Report.GetParameterValue("P_DOC_TYPE"),
        Report.GetParameterValue("P_DOC_ID")
        );
      host.TableDataSourcePreInit("DocSpecMetki", sSQL); 
вот так
Часовой пояс GMT +3, время: 21:22.

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