Всем привет! Подскажите, кто в курсе, пожалуйста!
Необходимо создать отчет в Access с помощью Visual Basic. Искал в Инете – путного описания методов так и не нашел.
Завтра прогу сдавать… %0
Всем привет! Подскажите, кто в курсе, пожалуйста!
Необходимо создать отчет в Access с помощью Visual Basic. Искал в Инете – путного описания методов так и не нашел.
Завтра прогу сдавать… %0
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
23 октября 2009 в 22:05
form.section(sectionid).height
23 октября 2009 в 7:05
Тут разобрался. Сейчас дела обстоят вот так:
For Each fld In rs.Fields
' Create new text box control and size to fit data.
Set txtNew = CreateReportControl(rpt.Name, acTextBox, _
acDetail, , fld.Name, lngLeft)
txtNew.SizeToFit
lngLeft = lngLeft + 1000
Next
Теперь другая проблема: Строки выводятся в отчет через очень большие промежутки. Как настроить отступ?
23 октября 2009 в 6:05
Подскажите, кто знает, плз!!!
Как сделать так, что бы данные в отчете отображались в табличной форме а не в столбец.
У меня сейчас вот так, и данные в отчете отображаются в один столбец (((:
For Each fld In rs.Fields
' Create new text box control and size to fit data.
Set txtNew = CreateReportControl(rpt.Name, acTextBox, _
acDetail, , fld.Name, lngLeft, lngTop + 200)
txtNew.SizeToFit
lngTop = lngTop + txtNew.Height + 25
Next
21 октября 2009 в 10:04
Имена таблиц я сохранял вот так:
Dim rstCurr As DAO.Recordset
Dim dbsCurr As Database
Set dbsCurr = Access.CurrentDb
Set rstCurr = dbsCurr.OpenRecordset("Список", dbOpenDynaset)
rstCurr.AddNew
rstCurr.Fields("Таблица").Value = TabName
rstCurr.Update
А связовал поле со списком с этой таблицей вот так:
Public Sub ПолеСоСписком11_GotFocus()
Forms!Форма1!ПолеСоСписком11.RowSourceType = "Table/Query"
Forms!Форма1!ПолеСоСписком11.RowSource = "Список"
End Sub
Работает и так И этого достаточно. Спасибо за комментарии!
С навигацие и добавлением/изменением/удалением данных в программе вроде все, закончил. Теперь осталось разобраться как делать отчеты. Буду изучать CreateReport…
20 октября 2009 в 21:00
>> Теперь требуется каким-то образом вывести их в ComboBox'е. Видимо, надо изменить свойство RowSource. Как это правильно делается пока не нашел… Подскажите синтаксис, пожалуйста!
во-первых, названия таблиц – во множественном поле, а название полей, как правило, в единственном. то есть таблица "Таблицы", а поле в ней – "Таблица".
во-вторых, таблица без ключа вроде как и не таблица вовсе.
в-третьих, строки в ключах не использовать – медленно сравнивается.
в-четвертых, автоинкрементное поле в ключе не использовать
и, собственно, ответ на ваш вопрос – вам не нужно изменять свойство RowSource, если вы его уже задали в конструкторе. после rstCurr.Update вам достаточно будет сказать Forms!Форма1!ПолеСоСписком11.Requery.
ваш способ стоит больше.
ЗЫ: странно, что вообще заработало:
>> я сохраняю в табицу "Спмсок"
>> Forms!Форма1!ПолеСоСписком11.RowSource = "Список"
20 октября 2009 в 14:01
Так, здесь разобрался:
Forms!Форма1!ПолеСоСписком11.RowSourceType = "Table/Query"
Forms!Форма1!ПолеСоСписком11.RowSource = "Список"
работает
20 октября 2009 в 12:01
На данный момент ситуация такая: имена таблиц я сохраняю в табицу "Спмсок", которая имеет одно поле "Таблицы":
Dim rstCurr As DAO.Recordset
Dim dbsCurr As Database
Set dbsCurr = Access.CurrentDb
Set rstCurr = dbsCurr.OpenRecordset("Список", dbOpenDynaset)
rstCurr.AddNew
rstCurr.Fields("Таблицы").Value = TabName
rstCurr.Update
Теперь требуется каким-то образом вывести их в ComboBox'е. Видимо, надо изменить свойство RowSource. Как это правильно делается пока не нашел… Подскажите синтаксис, пожалуйста!
16 октября 2009 в 21:03
эм. ControlSource содержит строку, определяющую, что будет значением элемента управления. то есть это может быть название поля в рекордсете формы или вызов функции, возможно, с передачей значений некоторых полей рекордсета формы (при использовании функции поле становится нередактируемым, так что отбрасываем).
я, правда, не понимаю, что означает "В поле со списком я сохраняю имена", поскольку у поля со списком нет такой возможности. список поля со списком может быть заполнен несколькими методами (см. справку по RowSourceType):
1. Table/Query (Default)
The data is from a table, query, or SQL statement specified by the RowSource setting.
2. Value List
The data is a list of items specified by the RowSource setting.
3. Field List
The data is a list of field names from a table, query, or SQL statement specified by the RowSource setting.
4. User-defined RowSourceType function
Microsoft Access calls the function repeatedly to get the information it needs.
я не знаю, какой из вариантов ваш, но попробую угадать:
1. Table/Query. данные в таблицах не теряются при перезагрузке акцесса, так что не подходит.
2. Value List. добавление происходит редактированием свойства RowSource, так что вряд ли мог возникнуть вопрос по поводу сохранения между перезагрузками акцесса.
3. FieldList. структура таблиц не меняется при перезагрузке акцесса, так что не подходит.
4. User-defined RowSourceType function. очевидно, что если вы это осилили, то знаете, как это можно сохранить.
итог:
я неправильно понимаю понятие "сохраняю имена таблиц".
16 октября 2009 в 9:03
Разобрался!
Еще вопрос: В поле со списком я сохраняю имена таблиц, создаваемых программно. После перезагрузки акцесса список стирается. Подозреваю, что нужно использовать свойство ControlSource.
Подскажите синтаксис, плз, если я прав!
15 октября 2009 в 21:05
скорее всего в поле ПолеСоСписком11 содержится неверное имя.
другой вариант – таблица была добавлена не через TableDefs текущего запущенного акцесса. в таком случае TableDefs.Refresh вам в помощь.
15 октября 2009 в 20:05
тут пока такой вопрос, по другой теме:
каким методом можно удалить существующую таблицу?
Пробовал вот так:
Dim ActAvto As String
ActAvto = Forms!Форма1!ПолеСоСписком11.Value
CurrentDb.TableDefs.Delete ActAvto
грит "Элемент не обнаружен в данном семействе"
15 октября 2009 в 19:05
я вернулся, время от времени проверяю комментарии. мне можно задавать вопросы.
15 октября 2009 в 19:02
Очередное спасибо, Леонид! Щас будем взрывать мозг…
15 октября 2009 в 18:04
смотрите в сторону метода CreateReport и читайте соответствующие разделы справки. там все просто.