Я не знаю, намеревается ли следующий фрагмент кода работать таким образом, потому что иногда мы, «как разработчики», пытаемся автоматизировать создание элемента управления отображением данных, где количество полей не контролируется и имеет похожую привязку данных, поэтому, прежде чем япросмотрите приложение, которое некоторые парни оставили:
Под ActiveReport_ReportStart()
событие:
for (Ind = 1; Ind <=CM.Length; Ind++) {
if (Ind == 1) {
Left = ((Line)rpt.Sections["PageHeader"].Controls["lnH8"]).Left + 0.05f;
} else if (Ind == 2) {
Left = ((Line)rpt.Sections["PageHeader"].Controls["lnH9"]).Left + 0.05f;
} else if (Ind == 3) {
Left = ((Line)rpt.Sections["PageHeader"].Controls["lnH10"]).Left + 0.05f;
}
TextBox TB = new TextBox();
TB.Size = ((Label)rpt.Sections["PageHeader"].Controls["tbColorway1"]).Size;
TB.Font = ((Label)rpt.Sections["PageHeader"].Controls["tbColorway1"]).Font;
TB.Width = ((Label)rpt.Sections["PageHeader"].Controls["tbColorway1"]).Width;
TB.Height = ((Label)rpt.Sections["PageHeader"].Controls["tbColorway1"]).Height;
TB.VerticalAlignment = VerticalTextAlignment.Top;
TB.Location = new System.Drawing.PointF(Left, ((Label)rpt.Sections["PageHeader"].Controls["tbColorway1"]).Top);
TB.DataField = "ColorText" + Ind + ColorwayNumber;
rpt.Sections["Detail"].Controls.Add(TB);
При предварительном просмотре не возникает ошибка компиляции, также другие поля, которые не генерируются автоматически,отображается правильно (ReporHeader, ReportFooter), но, думаю, лучше заменить этот механизм на подотчет внутри раздела подробностей, конечно, эти поля должны отображаться в разделе подробностей отчета.В любом случае я хотел бы увидеть некоторые рекомендации, потому что, если это возможно для автоматически сгенерированного текстового поля или надписей во время выполнения, мне придется объяснить боссу, почему этот код не работает, и если вместо этого я должен использовать подотчеты, мне нужно знать, какпередать параметр (по крайней мере, мне нужно работать с двумя параметрами для генерации еще одного sql-запроса для него) и какое «событие» подходит для помещения в него скрипта ..
После того, как я обнаружил, что самая важная проблемачтобы получить изменения формата отчета по количеству полей / текстовых полей, добавленных к деталям отчета во время выполнения, ограниченных возвращаемым значением sqlquery, например:
- Возвращенное значение SQLQuery = 4
- 10поля, сгенерированные для подробной строки 1
- 6 полей для строки 2
- 4 поля для строки 3
Подробные поля связаны с процедурой хранилища SQL *
Отчет будет распечатан / показан следующим образом:
//Report Init
Page 1 :
|field 1|field 2|field 3|field 4|
------------------------------------------------------
row1 | valA1 | valA2 | valA3 | valA4 |
------------------------------------------------------
row2 | valB1 | valB2 | valB3 | valB4 |
------------------------------------------------------
row3 | valC1 | valC2 | valC3 | valC4 |
------------------------------------------------------
Page 2 :
|field 1|field 2|field 3|field 4|
------------------------------------------------------
row1 | valA5 | valA6 | valA7 | valA8 |
------------------------------------------------------
row2 | valB5 | valB6 |
------------------------------------------------------
row3
------------------------------------------------------
Page 3 :
|field 1|field 2|field 3|field 4|
------------------------------------------------------
row1 | valA9 | valA10|
------------------------------------------------------
row2
------------------------------------------------------
row3
------------------------------------------------------
//End of Report
Любая помощь будет оценена
Спасибо вам большоеч