singlepost

Создание отчетов в Access программным путем (VB) << На главную или назад  

Всем привет! Подскажите, кто в курсе, пожалуйста!

Необходимо создать отчет в Access с помощью Visual Basic. Искал в Инете - путного описания методов так и не нашел.

Завтра прогу сдавать... %0

14 ответов в теме “Создание отчетов в Access программным путем (VB)”

Страницы: [1] 2 »

  1. 1
    Леонид Максимов ответил:

    смотрите в сторону метода CreateReport и читайте соответствующие разделы справки. там все просто.

  2. 2
    Павел Авдеев ответил:

    Очередное спасибо, Леонид! Щас будем взрывать мозг…

  3. 3
    Леонид Максимов ответил:

    я вернулся, время от времени проверяю комментарии. мне можно задавать вопросы.

  4. 4
    Павел Авдеев ответил:

    тут пока такой вопрос, по другой теме:
    каким методом можно удалить существующую таблицу?

    Пробовал вот так:

    Dim ActAvto As String
    ActAvto = Forms!Форма1!ПолеСоСписком11.Value
    CurrentDb.TableDefs.Delete ActAvto

    грит "Элемент не обнаружен в данном семействе"

  5. 5
    Леонид Максимов ответил:

    скорее всего в поле ПолеСоСписком11 содержится неверное имя.

    другой вариант – таблица была добавлена не через TableDefs текущего запущенного акцесса. в таком случае TableDefs.Refresh вам в помощь.

  6. 6
    Павел Авдеев ответил:

    Разобрался!
    Еще вопрос: В поле со списком я сохраняю имена таблиц, создаваемых программно. После перезагрузки акцесса список стирается. Подозреваю, что нужно использовать свойство ControlSource.
    Подскажите синтаксис, плз, если я прав!

  7. 7
    Леонид Максимов ответил:

    эм. 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. очевидно, что если вы это осилили, то знаете, как это можно сохранить.

    итог:
    я неправильно понимаю понятие "сохраняю имена таблиц".

  8. 8
    Павел Авдеев ответил:

    На данный момент ситуация такая: имена таблиц я сохраняю в табицу "Спмсок", которая имеет одно поле "Таблицы":

    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. Как это правильно делается пока не нашел… Подскажите синтаксис, пожалуйста!

  9. 9
    Павел Авдеев ответил:

    Так, здесь разобрался:

    Forms!Форма1!ПолеСоСписком11.RowSourceType = "Table/Query"
    Forms!Форма1!ПолеСоСписком11.RowSource = "Список"

    работает

  10. 10
    Леонид Максимов ответил:

    >> Теперь требуется каким-то образом вывести их в ComboBox'е. Видимо, надо изменить свойство RowSource. Как это правильно делается пока не нашел… Подскажите синтаксис, пожалуйста!

    во-первых, названия таблиц – во множественном поле, а название полей, как правило, в единственном. то есть таблица "Таблицы", а поле в ней – "Таблица".

    во-вторых, таблица без ключа вроде как и не таблица вовсе.

    в-третьих, строки в ключах не использовать – медленно сравнивается.

    в-четвертых, автоинкрементное поле в ключе не использовать

    и, собственно, ответ на ваш вопрос – вам не нужно изменять свойство RowSource, если вы его уже задали в конструкторе. после rstCurr.Update вам достаточно будет сказать Forms!Форма1!ПолеСоСписком11.Requery.

    ваш способ стоит больше.

    ЗЫ: странно, что вообще заработало:
    >> я сохраняю в табицу "Спмсок"
    >> Forms!Форма1!ПолеСоСписком11.RowSource = "Список"

Страницы: [1] 2 »

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.