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

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

28.03.2024 11:49


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 Кб, 86 просмотров)
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 Кб, 32 просмотров)
Часовой пояс GMT +3, время: 11:49.

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