Отправляет email-рассылки с помощью сервиса Sendsay

Работа с MS Access

  Все выпуски  

Работа с MS Access : (020)


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Работа с MS Access

Ведущий рассылки Виктор Познев; Сайт проекта: http://msa.km.ru
 

Выпуск 020

СЕГОДНЯ В НОМЕРЕ

  1. Чайнику в помощь
  2. Новости раздела "FORUM+"
  3. Работа со стрингами и файлами
  4. Новости MSA.KM.RU
  5. Новые темы форума.

 

Чайнику в помощь

 

Своя строка менюПРОЕКТИРУЕМ МЕНЮ ПРИЛОЖЕНИЯ
Пользователям нашего приложения совсем не обязательно знать методы работы с MS Access и видеть стандартное меню Access. Попробуем разобраться как делается своя строка меню.

 

 

подробности

Новости раздела "FORUM+"

 

2 июня 2001 г.
В рубрике MS Office обновление. Добавлено: Вывести таблицу в файл *.xls с паролем.
Краткая аннотация: Как сделать так, чтобы MSAccess на открытие данного файла "allkom.xls" установливал пароль? И как автоматизировать переброс информации из запроса ?...


31 мая 2001 г.
В рубрике Files обновление. Добавлено: Экспорт в Excel в разные закладки .
Краткая аннотация: Экспорт нескольких запросов и таблиц в разные закладки одного файла Excel


31 мая 2001 г.
В рубрике QuickService обновление. Добавлено: АPI для замера быстродействия процедуры.
Краткая аннотация: Функция API, которая помогает измерять промежутки времени в миллисекундах. Можно использовать для отладки БД в целях повышения ее быстродействия


30 мая 2001 г.
В рубрике CommandBar обновление. Добавлено: Динамические меню - затягиваем гайки.
Краткая аннотация: В статье "Использование динамических меню в Access" рассматривалось, как создать меню на основе панели инструментов. Пришло несколько писем с вопросами. Отвечаем ...


30 мая 2001 г.
В рубрике CommandBar обновление. Добавлено: Использование динамических меню в Access.
Краткая аннотация: Наверняка все знакомы с ситуацией, когда в современных приложениях вид меню меняется в зависимости от, например прав доступа зарегистрировавшегося пользователя, контекста или другой ситуации.


 

Работа со стрингами и файлами

За неделю на форуме было два вопроса по работе со стрингами и файлами.
В первом случае требовалось в создаваемом текстовом файле после оговоренного слова вставить таблицу
Во втором - экспортировать текст модуля с дальнейшим форматированием (с отступами в условиях, циклах и, возможно, подсветкой).

Попробуем разобраться и опишем решение первого случая...
Инструментарий: БД Access 97
От вас требуется немного - создать (или скопировать из другой) таблицу tblMonths c любым количеством полей и содержимым

а) Экспорт поля МЕМО в текстовый файл и вставка таблицы БД в заданном месте по критерию поиска

Здесь слов поболе будет. :)

Конечно, можно установить объектную переменную, открыть или создать документ MSOffice, но...
Наверное НТМL обеспечивает  достаточно универсальный формат файла, который откроет и Word и Excel и при этом обеспечивает необходимое форматирование текста, как:
- гиперссылки
- подсветку текста
- формат букв
- рисование таблиц
- вставку изображений и объектов

Если кто сможет добавить, углубить и улучшить приведенные примеры - милости прошу, все будет опубликовано!

Итак, существует текст, на основе которого надо создать текстовой файл в формате HTML  при этом, после определенного сочетания символов (в этом примере сочетание символов "общая сумма.") должна быть сделана вставка с оформлением в виде таблицы...

Очевидно, что здесь надо использовать встроенные функции Len, InStr и Mid

Function fncExportStr2HTML()
Dim strText As String, strTempTXT As String, strTable As String

'текст для файла (для простоты поместим его в переменную)
strText = "Я продаю телекомуникационные шкафы, и есть " & _
"проблема считать их цену с комплектацией. Все шкафы разные " & _
"и комплектующие соответственно тоже к ним разные. Я сделал " & _
"меню, где выбираешь тип шкафа, и соответственно заполняется " & _
"все форма комплектующими которые подходят именно к нему, " & _
"естественно с ценой, где нужно проставить только количество, " & _
"после чего сбивается общая сумма. Может есть что то уже готовое, " & _
"a то уже два месяца бьюсь, но ничего нормального не получаеться, " & _
"мне нужен отчет а он и его выводить не хочет. Может кто поможет!!!" & _
"Заранее благодарю!!!!"

'здесь я сознательно назначаю новые переменные для лучшего понимания
Dim hFile As Long, myNameFile As String
Dim
intFind As Integer, strFind As String  

'назначаем имя выходного файла, он будет располагаться
 
'в том же каталоге, что и ваша БД 
'функция Subdir описана в разделе QuickService
 
myNameFile = Subdir & "new.html" 

'строка после которой надо вставить таблицу
 
strFind = "общая сумма." 

'строка с описанием тегов таблицы
 
'вообще говоря этой переменной можно назначить функцию с описанием таблицы
'и ее содержимого
strTable = <table border=1 width='70%'height='200'><tr><td></td></table>"

'определяем первое вхождение строки поиска в тексте
 
intFind = InStr(strText, strFind) 

'добавляем в текст strText вставку после заданных слов
 
'2 строка - часть текста до вхождения строки поиска
 
'3 строка - вставка
 
'4 строка - часть текста после строки поиска
 
strText = _
Mid(strText, 1, intFind + Len(strFind) - 1) & _ 
strTable & _
Mid(strText, intFind + Len(strFind)) 

'hFile - дескриптор (номер)файла
 
'дескрипторы файлов представляют собой целые числа
 
'однозначно идентифицирующие открытые файлы и
 
'являются основой использования функций ввода-вывода

'Freefile определяет свободный дескриптор
 
 
'это лучше, чем использовать фиксированные дескрипторы типа #1
 
hFile = FreeFile

'Создаем файл с доступом на запись  
Open
myNameFile For Output Access Write As hFile 

'Записываем строки описывающие заголовок страницы
 
Print
#hFile, "<html><body>" 

'сливаем текст в файл
 
Print
#hFile, strText 

'Записываем строки описывающие закрывающие теги страницы
 
Print
#hFile, "</body></html>" 

Close hFile 
MsgBox "Готово"
'открываем готовую страницу
Application.FollowHyperlink myNameFile, , True
End
Function



Если вы скопируете выше приведенную процедуру и Subdir   в новую базу данных, и запустите функцию fncExportStr2HTML, то в директории вашей базы данных появится файл new.html, в котором таблица будет находится после слов, которые требовалось найти... 
Чтобы  освещение первого из вопросов выглядело законченным, создадим процедуру которая опишет в HTML-файле таблицу из базы данных.

Итак создание таблицы для HTML-файла
Я решил написать процедуру, которая могла экспортировать любую таблицу в HTML-формат независимо от количества полей и записей

 вызывается она как fncCreateTableHTML("Имя_таблицы для экспорта")

Function fncCreateTableHTML(strTable As String) as String
Dim strTable As String
Dim tdf As TableDef, dbs As Database
Dim rs As Recordset, fld As Field

Set dbs = CurrentDb
Set tdf = dbs.TableDefs("tblMonths")
Set fld = tdf.Fields(0)

'записываем заголовки столбцов
For Each fld
In tdf.Fields
Debug.Print fld.Name
strTable = strTable & "<td width='120'><b><center>" & fld.Name & "</center></td>"
Next fld
strTable = "<table border=1 bordercolor='red'><tr>" & _
strTable & "</tr>"

'заполняем таблицу по строкам
Set rs = dbs.OpenRecordset(tdf.Name)
Do Until rs.EOF
strTable = "<tr>" & strTable
For Each fld
In rs.Fields
Debug.Print fld.Value
strTable = strTable & "<td>" & fld.Value & "</td>"
Next fld
strTable = strTable & "</tr>"
rs.MoveNext
Loop
rs.Close
Set dbs = Nothing
'конец таблицы
strTable = strTable & "<tr></table>"

End Function



 Теперь осталось заменить заменить строку из процедуры fncExportStr2HTML

strText = _
Mid(strText, 1, intFind + Len(strFind) - 1) & _ 
strTable & _
Mid(strText, intFind + Len(strFind)) 



на строку

strText = _
Mid(strText, 1, intFind + Len(strFind) - 1) & _ 
fncCreateTableHTML("tblMonts") & _
Mid(strText, intFind + Len(strFind)) 



Следует сказать, что вполне вероятно потребуется работать не с таблицей, а с запросом. Тогда надо объявить переменную типа QueryDef и установить переменную семейства (например:
Set qdf = dbs.QueryDefs("Имя_Запроса")
И все :)

P.S. O-ops! Чуть не забыл!
Еще два примера по работе с файлами:
1. Прочитать содержимое файла по строкам (strInput - читаемая строка, а strFileOut - имя файла )  :

Dim hFileOut As Long
hFileOut = FreeFile
Open strFileOut For Input Access Read As hFileOut
Do Until EOF(hFileOut)
Line Input #hFileOut, strInput
Debug.Print strInput

Loop

Close hFileOut



2. Открыть файл в режиме добавления (strText - текст, который вы хотите добавить, а strFile - имя файла)

Dim hFile As Long
hFile = FreeFile
Open strFile For Append Access Write As hFile
Print #hFile, strText 
Close hFile



Теперь рассмотрим экспорт модуля или поля МЕМО в текстовый файл
б) Экспорт модуля в текстовый файл

DoCmd.OutputTo acModule, "МодульБД", "MS-DOSText(*.txt)", Subdir & "text.txt", True



 Уточним, что МодульБД - модуль текущей базы данных, Subdir - функция возращающая текущий каталог, в котором находится БД, text.txt - экспортированный в файл текст модуля и параметр True означает автооткрытие этого файла

Заодно просится процедура, которая выводит все модули базы в одноименные текстовые файлы :)

Function fOutputAllModules()
Dim rs As Recordset
Dim mySQL as String
mySQL = "SELECT MSysObjects.Name FROM MSysObjects WHERE (MSysObjects.Type)=-32761;"
Set rs = CurrentDb.OpenRecordset(mySQL)
Do Until rs.EOF
DoCmd.OutputTo acModule, rs!Name, "MS-DOSText(*.txt)", _
Subdir & rs!Name & ".txt", True
rs.MoveNext
Loop
rs.Close
End Function

Продолжение следует ...

 

 

Новости MSA.KM.RU

- В связи с моим уходом в отпуск, (11.06.01-10.07.01) временно рассылка выходить не будет. До новых встреч в июле !
Заглядывайте на сайт http://msa.km.ru - обновления не прекращаются:)

Новые темы форума

- WinExecute->Access(2.0)
- свойство Input Parameters в .adp
- Запуск только одной формы без главного окошка СУБД "Microsoft Access" - не получается!
- Публично винюсь! :((
- Access2000 Слишком много кушает...
- Слетела база. ПОМОГИТЕ !!!
- GetObject->Excel из Access 2.0
- Название столбцов в две строки
- DDEInitiate("Excel","System") -> Error(282)
- MSAccess2000 как вывести таблицу или отчет в файл *.rtf или *.xls чтобы присвоить пароль?
- Как запустить макрос в другой базе данных? (-)
- Округление! Помогите!!!
- Имя объекта в переменной
- Экспорт в Excel в разные закладки
- Таблица и цвет вывода
- Вопрос про отчет
- API, которой можно засечь время (миллисек)
- Вычисления в отчете
- Дайте совет
- Сохранить вичисляемое значение
- Obracshenie iz subform to subform
- ...

Разбор матча смотри в FORUM+.


Архив Рассылки

 
Рассылка 'Работа с MS Access'

При перепечатке или любом другом публичном использовании материалов ссылка обязательна.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Relayed by Corbina
Рейтингуется SpyLog

В избранное