2015-08-07 2 views
-1

Im делает отчет через службы Reporting Services. В одном из моих текстовых полей есть выражение, которое получает параметр, который в основном представляет собой строку, которая содержит дату, например «20110410», и мне нужно преобразовать эту строку в дату, добавить/и поместить день первый, месяц, год.Добавление переменной 0 в переменную

Это уже сделано. Но дело в том, что мне нужно добавить 0 после дня и месяца, когда они ниже 10, поэтому вместо 1/4/2011 я хочу 01/04/2011.

Я не знаю, как использовать код тега, так извините, если код не отображается правильно.

=IIF(Parameters!Uperiodo.Value = "Día", 
IIF(Day(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate))<10, 
"0"+Day(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate)), 
(Day(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate)))) 
& "/" & 
Month(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate)) 
& "/" & 
Year(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate)) 
, 
Month(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate)) 
& "/" & 
Year(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate)) 
) 

Спасибо!

EDIT: Извините, я не объяснил, почему мы это делаем. Нам нужно сделать это, так как сервер, на котором должен быть загружен отчет, имеет английский формат (мм/дд/гггг).

С наилучшими пожеланиями,

+0

Метод DateTime.Parse - https://msdn.microsoft.com/en-us/library/system.datetime.parse%28v=vs.110%29.aspx – vidriduch

+2

Является ли этот код VB.NET? – Steve

+0

разобрать строку в переменную 'DateTime' (' DateTime.Parse'), просто использовать правильную строку формата 'myDt.ToString (« hh/mm/yyyy »)' не нужно для всего этого ужасного кода Mid и CDate. . Хотя почему функция 'mid' не капитализируется? Это ваш настоящий код VB? – Plutonix

ответ

1

Если это vb.net, как говорит ваш тег, вы должны действительно прочитать documentation на классы, которые вы используете. ParseExact преобразует строку в DateTime, а ToString преобразует DateTime в строку с нужным вам форматом.

Dim d As DateTime = DateTime.ParseExact("20110410", "yyyyMMdd", Nothing) 

    Console.WriteLine(d.ToString("dd/MM/yyyy")) ' 10/04/2011 

Кроме того, вы должны использовать Substring вместо середины.
И если у вас есть номер, вы можете добавить 0 необходимых.

 Console.WriteLine(4.ToString("00")) ' 04 
    Console.WriteLine(10.ToString("00")) ' 10 
+0

'Я хочу 01/04/2011', поэтому OP * вероятно * должен использовать' ToString (hh/MM/yyyy)) в зависимости от их культуры – Plutonix

+0

Этот отчет будет прочитан на сервере служб отчетов. dll, которые находятся в этом решении. Так что это было плохо для размещения тега VB.NET. –

+0

@Plutonix Спасибо, я внес изменения. –

-1

Я нашел решение.

Я знаю, что код уродливый, и недавно (1 мин. Назад :) я понял, что могу использовать «персонализированный код» внутри свойств отчета для выполнения переменных и т. Д.

Таким образом, решение было использовать & вместо +.

С наилучшими пожеланиями и спасибо за help.-

Важно Edit: В самом деле я не должен использовать IIF, мне просто нужно добавить «0» & для 1-го 9 дат и это оно.

+0

Спасибо за -1 –

Смежные вопросы