[ОТВЕТИТЬ]
12.05.2016 15:46
Aligator
 
Всем доброго дня.

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

Для вывода метки формулу я написал:
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
Просмотров: 60
Размер:	21.3 Кб
ID:	7394   Нажмите на изображение для увеличения
Название: Image 1864.png
Просмотров: 51
Размер:	23.4 Кб
ID:	7395  
Вложения
Тип файла: rar nacl_inout.rar (14.6 Кб, 25 просмотров)
12.05.2016 15:52
Aligator
 
Сам SQL запрос рабочий - проверял в жабе, при вводе тип документа WO и номера выводит значения верно, результат в скрине.
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1865.png
Просмотров: 47
Размер:	15.3 Кб
ID:	7397  
12.05.2016 16:26
Aligator
 
Если пытаюсь в форме прописать запрос в виде:
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
vdm
 
Ну а сам запрос в 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
Aligator
 
Цитата:
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
Alexei
 
to_char(Doverennost_date, 'dd.mm.yy')
13.05.2016 11:04
Aligator
 
Цитата:
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
Просмотров: 48
Размер:	17.2 Кб
ID:	7398  
13.05.2016 11:37
vdm
 
Покажи описание поля где выводится дата и результат, в каком виде сейчас дату выдает.
13.05.2016 11:59
Aligator
 
Цитата:
vdm Покажи описание поля где выводится дата и результат, в каком виде сейчас дату выдает.
В картинках
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1868.png
Просмотров: 67
Размер:	57.2 Кб
ID:	7399   Нажмите на изображение для увеличения
Название: Image 1869.png
Просмотров: 57
Размер:	35.7 Кб
ID:	7400  
13.05.2016 12:13
denxz
 
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); 
вот так
13.05.2016 13:00
vdm
 
Дата из smdocprops все равно как текст приходит, поэтому ее или в нормальную дату конвертить или вручную разбирать строку и переставлять поля.
Проще получить как дату. В текстовом поле фастрепорт ее наверно автоматом напечатает в нормальном формате.
SQL код:
SELECT '' PARAMVALUE,
       
SYSDATE Doverennost_date
  FROM dual 
Код:
      // вывод метки документа
      sSQL = SqlFormat("SELECT "+
        "z.PARAMVALUE,"+
        "(select TO_DATE(z.PARAMVALUE, 'YYYYMMDD HH24:MI')"+
        "  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);
13.05.2016 13:55
Aligator
 
Цитата:
denxz // вывод метки документа
вот так
В вашем варианте выдаёт во такие ошибки:
Код:
2016.05.13 (Friday) 13:54:49 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 -----
сообщение: "(201,9): Error CS1525: Invalid expression term '['
   (201,10): Error CS1026: ) expected
   (201,11): Error CS1002: ; expected
   (201,11): Error CS1525: Invalid expression term ']'
   (201,12): Error CS1002: ; expected
   (201,50): Error CS1525: Invalid expression term '['
   (201,53): Error CS1002: ; expected
   (201,53): Error CS1525: Invalid expression term ']'
   (201,54): Error CS1002: ; expected
   (210,54): Error CS1002: ; expected
   (210,54): Error CS1525: Invalid expression term ','
   (210,55): Error CS1002: ; expected
   (211,45): Error CS1002: ; expected
   (211,45): Error CS1525: Invalid expression term ','
   (211,46): Error CS1002: ; expected
   (212,43): Error CS1002: ; expected
   (213,7): Error CS1525: Invalid expression term ')'"
исключение: FastReport.Utils.CompilerException
источник: FastReport.Engine
метод: Void InternalCompile()
   в FastReport.Code.AssemblyDescriptor.InternalCompile()
   в FastReport.Report.Compile()
   в 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)
13.05.2016 14:03
Aligator
 
Цитата:
vdm Дата из smdocprops все равно как текст приходит, поэтому ее или в нормальную дату конвертить или вручную разбирать строку и переставлять поля.
Проще получить как дату. В текстовом поле фастрепорт ее наверно автоматом напечатает в нормальном формате.
Ваш вариант приводит к такой ошибке:
Код:
2016.05.13 (Friday) 14:02:56 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 -----
сообщение: "Text89: Error in expression: DocSpecMetki.DOVERENNOST_DATE"
исключение: 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.ShowBandToPreparedPages(BandBase band, Boolean getData)
   в FastReport.Engine.ReportEngine.ShowBand(BandBase band, Boolean getData)
   в FastReport.Engine.ReportEngine.EndLastPage()
   в 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)
13.05.2016 14:23
Aligator
 
А если я оставляю запрос как есть:

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); 

И делаю вот такой вывод в DocSpecMetki:
SQL код:
SELECT ''PARAMVALUE,
SYSDATE Doverennost_date
FROM dual 
ругается на такую ошибку (пишет что не понимает поле как дату):

Код:
2016.05.13 (Friday) 14:23:34 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 -----
сообщение: "Text89: Error in expression: DocSpecMetki.DOVERENNOST_DATE"
исключение: 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.ShowBandToPreparedPages(BandBase band, Boolean getData)
   в FastReport.Engine.ReportEngine.ShowBand(BandBase band, Boolean getData)
   в FastReport.Engine.ReportEngine.EndLastPage()
   в 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)
----- Причина исключения, уровень вложения 2 -----
сообщение: "Строка не распознана как действительное значение DateTime."
исключение: System.FormatException
источник: mscorlib
метод: System.DateTime Parse(System.String, System.Globalization.DateTimeFormatInfo, System.Globalization.DateTimeStyles)
   в System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
   в System.Convert.ToDateTime(String value, IFormatProvider provider)
   в System.String.System.IConvertible.ToDateTime(IFormatProvider provider)
   в System.Data.Common.DateTimeStorage.Set(Int32 record, Object value)
   в System.Data.DataColumn.set_Item(Int32 record, Object value)
13.05.2016 15:13
vdm
 
Ладно, верни дату в текст
SQL код:
SELECT '' PARAMVALUE,
'' Doverennost_date
FROM dual 
и в запросе
Код:
        "(select TO_CHAR(TO_DATE(z.PARAMVALUE, 'YYYYMMDD HH24:MI'), 'DD.MM.YY')"+
13.05.2016 15:17
Aligator
 
Цитата:
vdm Ладно, верни дату в текст
SQL код:
SELECT '' PARAMVALUE,
'' Doverennost_date
FROM dual 
и в запросе
Код:
        "(select TO_CHAR(TO_DATE(z.PARAMVALUE, 'YYYYMMDD HH24:MI'), 'DD.MM.YY')"+

Всё равно вываливается в ошибку:
Код:
2016.05.13 (Friday) 15:16: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 -----
сообщение: "Text89: Error in expression: DocSpecMetki.DOVERENNOST_DATE"
исключение: 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.ShowBandToPreparedPages(BandBase band, Boolean getData)
   в FastReport.Engine.ReportEngine.ShowBand(BandBase band, Boolean getData)
   в FastReport.Engine.ReportEngine.EndLastPage()
   в 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)
13.05.2016 15:50
Aligator
 
Может можно это значение даты скопировать в некую переменную потом и преобразовать?
13.05.2016 16:44
vdm
 
Х/з, у меня на тесте без ошибок.
Дай текущую .frx
13.05.2016 16:53
Aligator
 
Цитата:
vdm Дай текущую .frx
Во вложении
Вложения
Тип файла: rar nacl_inout.rar (14.8 Кб, 24 просмотров)
13.05.2016 17:45
vdm
 
Ошибка в формате даты в sql была, секунды нужны еще.
Код:
      "(select TO_CHAR(TO_DATE(z.PARAMVALUE, 'YYYYMMDD HH24:MI:SS'), 'DD.MM.YY')"+
Вложения
Тип файла: 7z nacl_inout.frx.7z (13.8 Кб, 15 просмотров)
13.05.2016 17:53
Aligator
 
Цитата:
vdm Ошибка в формате даты в sql была, секунды нужны еще.
Оууу, это победа, никогда б не догадался.
Благодарю.
Опции темы


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

 

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