Добрый день!
Опишу здесь решение "полуавтоматического" перехода с версии 2015.2.0.0 на 2016.1.7.0.
Напомню, суть в том, что даты были обычные, стали Nullable. Да, в новой версии добавили флаг StiOptions.Dictionary.UseNullableDateTime, и выключив его можно было бы пока избежать всего нижеописанного. Однако, поразмыслив, мы пришли к выводу, что это неизбежно, т.к., в частности в Oracle всё равно используются DateTime<Nullable>.
Итак, суть метода. У нас есть база данных на Oracle. В таблице Reports хранятся все отчёты в виде Blob'ов, но это не меняет сути, если они у вас расположены в какой-нибудь директории (тогда надо просто делать рекурсивно):
1) Копируем все отчёты из рабочей базы данных из таблицы Reports в резервную базу данных в такую же таблицу;
2) Запускаем простую программу (см. вложение), которая делает следующее:
В цикле "пробегает" по всем blob'ам (отчётам .mrt по факту) и для каждого отчёта делает такие манипуляции:
На каждой страницы (StiPage) находим все компоненты типа StiText и StiBand и меняем в них текст ".ToShortDateString()" на ".Value.ToShortDateString()".
3) Сохраняем любым способом все blob'ы из таблицы Reports, чтобы поиском проверить содержат ли они строки .ToString("dd/MM/yy") и подобные, чтобы заменить их, соответственно на .Value.ToString("dd/MM/yy"). Но надо смотреть какие это поля, т.е. они должны быть DateTime<Nullable>;
4) Флаг StiOptions.Dictionary.UseNullableDateTime делаем равным True где-то в программе.
Собственно всё. Даллее, мы просто поменяли ссылки в проекте (References) на новые dll'ки, перекомпилировали проект, и заменили таблицу (уже изменённую) Reports в основной базе (скопировав из резервной, уже с изменениями).
Можно, сделать примерно так же, путём "прямого" парсинга .xml (mrt) файлов и поиска тех же строк, а так же замены строк, скажем, для изменения типа колонок с таких <value>ORD_DATE,System.DateTime</value> на <value>ORD_DATE,System.Nullable`1[System.DateTime]</value>. Однако, это менее "правильный" способ.
К тому же, я понимаю, что поля у вас могут быть не только или вообще не в StiText, а например, в колонках кросстаба или любых других компонентах.
То есть, как и говорил Алексей
нет простого решения для данной задачи.
Но суть именно такая.
P.S. Примитивный проект, что во вложении можно легко адаптировать к любому SQL провайдеру или написать рекурсивный поиск по директориям.
Зачем вообще всё это нужно? Очень просто, чтобы не править 196 отчётов вручную при переходе на новую версию отчётной системы.