Вопросы по Ado
Public cn As New ADODB.Connection
Public rs As New ADODB.Recordset
Подключаемся. Далее нужно:
1) Заполнить List1 списком всех стобцов
2) Заполнить List2 значением одного из столбцов.
3) Связать данные из базы с отчетом. Это вообще возможно. Или DataReport работает только с DataEnvironment. И вообще - c чем лучше работать: с DataEnvironment или ADO. Или еще с чем?:
Блин, хоть убей - сам не могу сделать и инфы по этому поводу найти не могу.
Помоги с данной конкретной задачей и киньтесь ссылочной на пособие по этому поводу. Можно на аншлийском, но по делу.
Большое спасибо.
1) Заполнить List1 списком всех стобцов
C первым разобрался:
Dim fd As ADODB.Field
For Each fd In rs.Fields
List2.AddItem fd.Name
Next fd
Со вторым тоже:
Do While Not rs.EOF
List1.AddItem rs!Title
rs.MoveNext
Loop
Имеем:
Public cn As New ADODB.Connection
Public rs As New ADODB.Recordset
нужно:
3) Связать данные из базы с отчетом. Это вообще возможно. Или DataReport работает только с DataEnvironment. И вообще - c чем лучше работать: с DataEnvironment или ADO. Или еще с чем?:
Если групп в отчете нет (а это редкость), то можно просто в источник данных DataReport рекордсет сунуть. Если есть группы, то надо мутить вложенные command в DataEnvironment, на каждом уровне с большей детализацией и передачей значений групп на нижний уровень. Потом в DataReporter по контекстному меню берешь структуру отчета по command верхнего уровня.
Я так подозреваю, SHAPE-рекордсет можно DataReporter-у сунуть, но не пробовал.
P.S. Недавно как раз ковырялся с DataReporter - за 3 часа методом тыка разобрался как групповые отчеты делать, только глючит часто. Раньше как-то все в Word, Excel данные загонял через ихнюю объектную модель.
Если групп в отчете нет (а это редкость), то можно просто в источник данных DataReport рекордсет сунуть. [QUOTE]
Что-то я не могу разобраться. Вроде все правильно делаю, но ничего не выходит. Можешь пример привести.
Можешь пример привести.
Это код управления отчетом DataReport1
Dim cmd As New ADODB.Command
Dim rec As ADODB.Recordset
Dim conn As New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DB.mdb"
conn.Open
Set cmd.ActiveConnection = conn
cmd.CommandText = "SELECT Books.Name, Authors.Name As AuthorName FROM Books LEFT JOIN Authors ON Books.Author=Authors.ID"
Set rec = cmd.Execute
Set DataReport1.DataSource = rec
DataReport1.Show vbModal
Set rec = Nothing
conn.Close
End Sub
В самом DataReport1 я в PageHeader вставил RptLable Название и Автор
В Detail вставил 2 поля RptTextBox, в DataField свойстве указал имена полей Name и AuthorName соответственно.
Можно и программно манипулировать контролами отчета:
DataReport1.Sections("Section1").Controls("Text2").DataField = "AuthorName"
А можно теперь пример отчетов с группами? Можешь не писать здесь, а просто выслать мне исходник. Вместе с другими исходниками работы с БД, если не сложно. Хочется посмотреть, что и как делают профи.
[email]hasuhands@mail.ru[/email]
Спасибо большое - все работает.
А можно теперь пример отчетов с группами? Можешь не писать здесь, а просто выслать мне исходник. Вместе с другими исходниками работы с БД, если не сложно. Хочется посмотреть, что и как делают профи.
[email]hasuhands@mail.ru[/email]
Коды реального проекта выложить не могу по различным соображениям. Я тут накидал маленький проектик. Кстати, на дизайнер DataReporter можно с окна DataEnvironment переносить(Drag-n-Drop) поля в соответствующие секции отчета - гораздо быстрее чем в ручную набирать.
Коды реального проекта выложить не могу по различным соображениям. Я тут накидал маленький проектик. Кстати, на дизайнер DataReporter можно с окна DataEnvironment переносить(Drag-n-Drop) поля в соответствующие секции отчета - гораздо быстрее чем в ручную набирать.
Спасиб большое. Буду разбираться.