Member 12561559 Ответов: 1

Отображение юникода в Microsoft reporting


После перехода с VB6 на Vb.NET за последние 12 месяцев или около того я начал переносить наши устаревшие отчеты Crystal Reports 8.5 в Microsoft Reporting (VS2015) - однако многие наши отчеты отображают русский, китайский, арабский и другие международные наборы символов.

Мы медленно переходим от SQL2000 (да, он такой старый) к более новой версии SQL Server, как только проект будет завершен, но до тех пор мне приходится переносить разделы проекта в .NET (я медленно изучаю C#, делая это) - но я только что наткнулся на камень преткновения в чем-то, от чего я не могу получить решение, и это (и я не могу поверить, что он не поддерживается сразу же, так что это должен быть я), и это MS Reporting не поддерживает Unicode для этих других наборов символов. Я либо пропустил что-то ослепительно очевидное с MSR, либо Microsoft сбросила огромный лязг.

Я попробовал изменить шрифт (у меня есть стандартные шрифты, установленные через Win10, которая является моей операционной системой разработки) и попробовал MS Gothic UI и Segui UI - gothic имел частичный успех, некоторые китайские иероглифы были преобразованы, но частичный недостаточно хорош. Кажется, у меня нет MS Arial Unicode - просто Arial, но я бы подумал, что эти другие именованные шрифты "UI" будут поддерживать его (я могу заставить winforms правильно отображать эти символы в Datagridview, поэтому я знаю, что шрифт поддерживает то, что мне уже нужно).

Поэтому обычно мой код вызывает RDLC, иногда с параметрами, иногда без них. Пример кода приведен ниже. SQL вводится через набор данных, поэтому он является динамическим внутри приложения. Я могу просматривать китайский/русский язык напрямую через Средство просмотра запросов SQL 2000.

Dim ReportViewerScreen As New Reporting

                            ReportViewerScreen.Show()
                            ReportViewerScreen.ReportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local
                            ReportViewerScreen.ReportViewer1.Reset()
                            ReportViewerScreen.ReportViewer1.LocalReport.DataSources.Clear()
                            ReportViewerScreen.ReportViewer1.LocalReport.ReportEmbeddedResource = "MyReport.rdlc"

                            Dim sReportDataSource = New Microsoft.Reporting.WinForms.ReportDataSource()
                            sReportDataSource.Name = "DataSet1"
                            sReportDataSource.Value = ds.Tables(0)
                            ReportViewerScreen.ReportViewer1.LocalReport.DataSources.Add(sReportDataSource)
                            ReportViewerScreen.ReportViewer1.LocalReport.EnableExternalImages = True
                            ReportViewerScreen.ReportViewer1.LocalReport.EnableHyperlinks = True

                            ReportViewerScreen.ReportViewer1.RefreshReport()
                            ReportViewerScreen.ReportViewer1.Show()


Я надеялся, что будет какая-то команда или метод, которые я пропустил, чтобы заставить это работать, 100% в любом наборе символов. Поля Ntext Fields (и nvarchar) в SQL2000 все имели N' вставок/обновлений, поэтому я знаю, что символы правильны (и видны) в SQL2000, как и мое предыдущее утверждение выше. Пожалуйста, помогите! Спасибо

Что я уже пробовал:

изменение шрифтов, поиск в Google unicode поддержка microsoft reporting

[no name]

Пожалуйста, сообщите нам, на какую версию sql server происходит ваша миграция.

Richard Deeming

Хранятся ли ваши данные в виде nvarchar, или как varchar с определенной сортировкой?

Member 12561559

nvarchar для небольших полей, таких как имена, ntext для больших блоков текстов (менее 3000 символов), но на разных языках, Что касается сортировки, я предполагаю, что это все, что по умолчанию (британский английский). Я только что попробовал накормить вручную вставленный кусочек китайского языка (выглядит нормально) . vb.net в качестве параметра текстовое поле должно идти прямо в отчет, минуя любые данные sql server - и оно все равно выходит в квадратах, так что его определенно ничто не связывает с сортировкой на SQL.

1 Ответов

Рейтинг:
1

Member 12561559

Я получил это работает. Мне пришлось пойти по пути Arial MS Unicode, поэтому мои отчеты теперь должны выглядеть иначе, чем шрифт, который я использовал в своем приложении. Вы могли бы подумать, что пользовательский интерфейс Segui будет совместим, тем более что он, похоже, использует символы unicode, как я использовал его в datagridview. Спасибо Microsoft, нет.