![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
VirusE |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 9.12.2004 Репутация: нет Всего: нет |
Скорее всего подобное на форуме есть, но у меня интернет через мобильник, по этому лопатить все просто не могу себе позволить.
Проблема такая. Делаю Базу данных в Access, но отчеты по ней нужны в Excel (при чем не стандартный отчет). Имеем таблицу | Дата | Номер заготовки | Тип заготовки | Дефект | Дата - дата осмотра Номер - номер присваивается при производстве Тип заготовки - сортамент (размеры) Дефект - если пустое поле, то годная, если нет, описание и код (по перечню) Нужно сделать таблицы в Exele нажатием кнопки в форме в Access Табличка нужна такая: Столбцы - дата Строки количество деффектов (по виду) Типа | | Дата 1 | Дата 2 | Дата 3 | | Дефект 1 | | | | | Дефект 2 | | | | | Дефект 3 | | | | Каждый Тип заготовки на своем листе Скрипты в Access и Excel я написать могу, но Я не знаю как (и не боюсь в этом сознаться): Открыть новый документ Excel (сам Excel открывается, но дальше не получается), при чем активным он должен стать после завершения создания отчета). Вносить данные в этот документ, подразумевается (управление данными в ячейке Exele командой из Access. В принципе, как выделить данные из базы я знаю Алгоритм приблизительно такой (знак вопроса, там, где я не знаю, как сделать) 1 Открываем форму для указания месяца и года 2 Открываем Пустую книгу и присваеваем ей имя (год/месяц выборки + дата составления) (?) 3 Запрос к БД - узнаем типы Заготовок в этом месяце 4 Запускаем цикл по каждому типу заготовки 4.1 Создаем лист с именем соответствующим типу заготовки (?) 4.2 Запрос к БД - узнаем Виды дефектов за этот месяц по этому типу заготовки. 4.3 Запускаем цикл по каждому виду дефекта 4.3.1 Создаем в Exele строку с именем дефекта (пустое поле - годная) (?) 4.3.2 Запрос в БД - узнаем даты осмотров (еще не решил делать по всем датам или только по имеющимся) 4.3.3 Цикл по датам 4.3.3.1 Создаем заголовок столбца с датой 4.3.3.2 Запрос в БД - поиск количества записей по дате, дефекту, сорту 4.3.3.3 Присваиваем получившееся значение ячейке. (?) Принцип понятен. непонятно только, как обращаться к Excel из Access Я конечно мог бы и сам разобраться, но время жмет. PS. И еще подскажите верный синтаксис UPDATE в скрипте, вносить данные в таблицу могу, а исправлять не получается. Set con = Application.CurrentProject.Connection Set rs = CreateObject("ADODB.Recordset") stSql = "SELECT * FROM [Таблица] " stSql = stSql & "WHERE [Значение1]=" & A & " AND [Значение2]=" & B rs.Open stSql, con, 1 При присвоении stSql запроса "Delete" работает а "update" нет. |
|||
|
||||
VirusE |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 9.12.2004 Репутация: нет Всего: нет |
Вроде во все разобрался (нашел ошибку в коде), но появился вопрос с форматированием ячеек.
Частично работает, но многое - нет. Не обрабатывается: Выравнивание текста, границы ячеек. (Код делал в Excel через запись макроса и вставлял (подкорректировав) в свой. Это сообщение отредактировал(а) VirusE - 9.2.2007, 21:52 |
|||
|
||||
bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Так вот просто подсказать не видя кода очень тяжело. Попробуй следующий метод: сделай лист настроек. В нем определенным ячейкам присвой нужный формат. Потом копируй формат (опять же макросом код запиши) на лист данных в нужную область ячеек. Этот метод гораздо гибче.
|
|||
|
||||
VirusE |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 9.12.2004 Репутация: нет Всего: нет |
Код приблизительно такой:
Dim ExcelApp As Object Dim NewWorkbook As Object Dim NewSheet As Object Set ExcelApp = CreateObject("Excel.Application") On Error Resume Next ExcelApp.UserControl = True ExcelApp.Workbooks.Add Set NewWorkbook = ExcelApp.ActiveWorkbook ... Сдесь запрос к базе данных (поиск типов детали) и начало цикла по ним ... NewWorkbook.sheets.Add Set NewSheet = NewWorkbook.ActiveSheet NewSheet.Name =" Значение типа детали из запроса " With NewSheet .Range("A7:A12").NumberFormat = "@" 'Выполняется .Cells(7, 1) = "n/n" 'Выполняется .Range("A7:A8").Merge 'Выполняется .Range("A7:A8").HorizontalAlignment = xlCenter 'НЕ выполняется .Range("A7:A13").LineStyle = xlContinuous 'НЕ выполняется Selection.Borders(xlDiagonalDown).LineStyle = xlNone ' и далее НЕ выполняется но и ошибки не выдает (думаю считает параметры типа xlNone, xlContinuous не определенными (при проверке по строчно показывает их =empty???)) Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End With Я не совсем понял про лист настроек, нужно его создать и сохранить, а потом каждый раз при запуске копировать формат или записать макрос при его создании? В принципе я делал лист с настройками ячеек, и записывал при этом макрос, но вот его то код и не работает. |
|||
|
||||
bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
:-) какой ты веселый.
напиши в начале модуля Option Explicit и код даже не выполниться! Потому что константы xlCenter и пр. определены только в Excel. Выхода отсюда 2-а: 1. добавить в mdb ссылку (Reference) на Excel.exe 2. объявить исопльзуемые константы (типа Long, елси не ошибаюсь). Значения их можно получить в окне отладки (Ctrl+G) в Excel. Например: ?xlCenter PS: чтобы при создании модулия редактор всегда вставлял Option Explicit необходимо в окне редактора выбрать Tools->Options. В открывшемся окне поставить галочку напротив Requare Variable Declaration, а с пункта Auto Syntax Check можно убрать - чтобы он надоедающее окошко не показывал, но красным цветом код с ошибкой выделять будет. |
|||
|
||||
VirusE |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 9.12.2004 Репутация: нет Всего: нет |
То что это константы, я уже понял, даже узнал типы и знычения (Valueв цифирях) (в помощи к VBA Excel есть перечень групп констант, их имена и значения). Пробывал вместо констант забивать цифры, но не пошло, есть подозрение, что числовые значения тоже отличаются. Помучаю еще.
![]() А веселый такой я потому, что программирую по необходимости, по причине большой лени, не во всех делах начальство любит автоматизацию (и спец проги не предоставляет, а отчет по нескольким сотням а то и тысячам записей делать не весело), первая прога была полностью в EXCEL, но там все записи в одной таблице и просто по циклу сортировались по разделам отчета, и страницы форматировались. Но работала она **** долго. Вот сейчас доделываю вторую, в Access. |
|||
|
||||
VirusE |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 9.12.2004 Репутация: нет Всего: нет |
Новая проблема, прошу срочно помочь если кто-то имел с этим дело.
В вышеуказанном отчете нужно сделать диаграмму, Опробывал много вариантов, но не получается ее форматировать. Вариант первый диаграмма вставляется в книгу, назначаются диапозон данных, имена и т.п. Но после назначения листа (.Location где она должна быть), контроль над ней пропадает (нужно изменить расположение на листе и размер). Если диаграмма вставляется сразу в лист, контролянет вообще, но зато размеры, те которые требуются.
Как правильно написать обращение к диаграме в EXCEL из макроса в Access Задолбался, два дня пробывал различные варианты Это сообщение отредактировал(а) VirusE - 5.3.2007, 09:55 |
|||
|
||||
bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Вариант с шаблоном (xlt) не подходит? Т.е. создаешь диаграму, настраиваешь и сохраняешь как шаблон. А в коде создаешь новый документ на основании шаблона, только впечатываешь данные и определяешь диапазон данных для диаграммы.
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Модератор: Используйте тег Код
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
VirusE |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 9.12.2004 Репутация: нет Всего: нет |
А пример можно? (как это сделать)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "MS Access" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS Access | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |