Я сталкиваюсь с чрезвычайно странной проблемой, о которой сообщает мой пользователь: Отчет Crystal Reports печатает пустые страницы за определенную точку. Мое устранение неполадок несколько сократилось, но в то же время показало некоторые непоследовательные результаты.
Здесь низкий уровень:
- Приложение представляет собой приложение VB.NET, используя .NET 4.
- В решении есть несколько отчетов Crystal Report, и для отображения и печати любого отчета используется одна форма.
- Какой отчет для отображения обрабатывается через бэкэнд кода и назначается объекту формы CrystalReportViewer перед тем, как показывать форму.
- Для отчета о проблеме источник данных поступает из SQL-запроса, запускаемого в коде, а затем назначается в качестве источника данных отчета, а затем отчет присваивается как источник отчетов для объекта CRV в форме.
- Принтер этикеток подключается через USB к соответствующему компьютеру, а установщик используется для предоставления драйверов.
- Если это имеет значение, это принтер для этикеток Citizen CLP-7201e.
Код, который присваивает источнику данных отчету, следующий:
myCommand = New SqlClient.SqlCommand(strSQL, conPlanning)
myCommand.ExecuteNonQuery()
Da = New SqlClient.SqlDataAdapter(myCommand)
Da.Fill(dsData, "TempPrintLabels")
rptPrintLabels.SetDataSource(dsData.Tables(0))
rptPrintLabels.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Portrait
frmReports.rptViewer.ReportSource = rptPrintLabels
frmReports.Show()
strSQL
- это базовый оператор SQL, основанный на том, какой отчет выбран из этой конкретной формы. SQL-запрос отчета - SELECT * FROM TempPrintLabels
.
Вот основная информация. Отчет генерируется отлично, а для отчетов с ~ 100 ярлыками он отлично печатает. Странность возникает, когда отчет превышает этот предел; это где-то в диапазоне этикеток 95-120. Кажется, что это непротиворечиво. Отчет будет печататься, пока он не достигнет определенного момента. В то время для остальной части отчета он ничего не будет печатать, кроме пробелов. Там будет столько пробелов, сколько должно быть оставшихся страниц. Если вы снова запустите задание в том месте, где начались пробелы, он отлично отпечатывается.
Когда я смотрю на этот отчет в CrystalReportViewer, он выглядит хорошо; все ярлыки отображаются правильно. Когда я печатаю его в PDF или текстовом файле, все страницы есть. Таким образом, отчет и генерация печати, похоже, работают со мной.
Я думал, что это принтер. Чтобы проверить это, я напечатал 185-страничное задание в формате PDF, а затем распечатал его на принтере. Это напечатано абсолютно нормально.
Я затрудняюсь объяснить это или даже диагностировать это дальше. В форме для печати нет кода; он использует объект CrystalReportViewer для обработки всего. Если бы это был объект CRV, печать в PDF должна была дать мне пустые страницы. Это не так. Если это был принтер, он должен был начать печатать пробелы из PDF прямо в том же месте, что и печать непосредственно с объекта CRV. Это не так.
Что еще я могу найти?