Всем привет! Подскажите, кто в курсе, пожалуйста!
Необходимо создать отчет в Access с помощью Visual Basic. Искал в Инете - путного описания методов так и не нашел.
Завтра прогу сдавать... %0
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
15 октября 2009 в 18:04
смотрите в сторону метода CreateReport и читайте соответствующие разделы справки. там все просто.
15 октября 2009 в 19:02
Очередное спасибо, Леонид! Щас будем взрывать мозг…
15 октября 2009 в 19:05
я вернулся, время от времени проверяю комментарии. мне можно задавать вопросы.
15 октября 2009 в 20:05
тут пока такой вопрос, по другой теме:
каким методом можно удалить существующую таблицу?
Пробовал вот так:
Dim ActAvto As String
ActAvto = Forms!Форма1!ПолеСоСписком11.Value
CurrentDb.TableDefs.Delete ActAvto
грит "Элемент не обнаружен в данном семействе"
15 октября 2009 в 21:05
скорее всего в поле ПолеСоСписком11 содержится неверное имя.
другой вариант – таблица была добавлена не через TableDefs текущего запущенного акцесса. в таком случае TableDefs.Refresh вам в помощь.
16 октября 2009 в 9:03
Разобрался!
Еще вопрос: В поле со списком я сохраняю имена таблиц, создаваемых программно. После перезагрузки акцесса список стирается. Подозреваю, что нужно использовать свойство ControlSource.
Подскажите синтаксис, плз, если я прав!
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. очевидно, что если вы это осилили, то знаете, как это можно сохранить.
итог:
я неправильно понимаю понятие "сохраняю имена таблиц".
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. Как это правильно делается пока не нашел… Подскажите синтаксис, пожалуйста!
20 октября 2009 в 14:01
Так, здесь разобрался:
Forms!Форма1!ПолеСоСписком11.RowSourceType = "Table/Query"
Forms!Форма1!ПолеСоСписком11.RowSource = "Список"
работает
20 октября 2009 в 21:00
>> Теперь требуется каким-то образом вывести их в ComboBox'е. Видимо, надо изменить свойство RowSource. Как это правильно делается пока не нашел… Подскажите синтаксис, пожалуйста!
во-первых, названия таблиц – во множественном поле, а название полей, как правило, в единственном. то есть таблица "Таблицы", а поле в ней – "Таблица".
во-вторых, таблица без ключа вроде как и не таблица вовсе.
в-третьих, строки в ключах не использовать – медленно сравнивается.
в-четвертых, автоинкрементное поле в ключе не использовать
и, собственно, ответ на ваш вопрос – вам не нужно изменять свойство RowSource, если вы его уже задали в конструкторе. после rstCurr.Update вам достаточно будет сказать Forms!Форма1!ПолеСоСписком11.Requery.
ваш способ стоит больше.
ЗЫ: странно, что вообще заработало:
>> я сохраняю в табицу "Спмсок"
>> Forms!Форма1!ПолеСоСписком11.RowSource = "Список"