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

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 536
от 24.05.2007, 23:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 260, Экспертов: 31
В номере:Вопросов: 1, Ответов: 1


Вопрос № 87643: Здравствуйте. У меня такой вопрос. Я написал программу поиска по Базе Данных в одной таблице этой Базы. т.е.: Sub Поиск_по_фамилии() Dim База, Запись As Variant Dim p As String * 20, i As Integer, признак As Boolean Set Ба...

Вопрос № 87.643
Здравствуйте.
У меня такой вопрос.
Я написал программу поиска по Базе Данных в одной таблице этой Базы.
т.е.:
Sub Поиск_по_фамилии()
Dim База, Запись As Variant
Dim p As String * 20, i As Integer, признак As Boolean
Set База = CurrentDb
Set Запись = База.OpenRecordSet("Таблица1")
...

Далее идёт собственно программа с вводом данных через InputBox.
Так вот, у меня вопрос: как здесь обратится не к одной таблице, а к нескольким? Тоэе через OpenRecordset или как ещё?
Пожалуйста, помогите! Очень срочно надо!
Отправлен: 19.05.2007, 18:14
Вопрос задал: Коблов Сергей Вячеславович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Коблов Сергей Вячеславович!
Вообще-то тут лучше SQL-запросы использовать.
Вот небольшой пример. Пусть у нас будет 2 таблицы:

tbl1:
================
Поле | Тип поля
================
idGroup | Счетчик
name | Текстовый
================

tbl2:
================
Поле | Тип поля
================
idgroup | Числовой (длинное целое)
descr | Текстовый
================

Тут будет отношение между таблицами по полю idtbl1 таблицы tbl2 и id таблицы tbl1 (таблица tbl1 будет выступать вроде как справочником с указанием категорий либо дополнительных ключевых значений (например, коды и названия групп товаров), а таблица tbl2 - сам список товаров с указанием группы, к которой он принадлежит).

Заполните их чем-то. Причем в таблице tbl2 надо в поле idtbl1 указывать только значения, содержащиеся в поле id таблицы tbl1 (код группы товара например).

Теперь код (выведем в текстовый файл все записи о товарах, например):

Sub GetRecs()
Dim cnn As ADODB.Connection 'Объект подключения к БД
Set cnn = CurrentProject.Connection 'Получаем текущее подключение

Dim sql As String 'Наш запрос: например, выбрать все товары с указанием их группы и отсортировать их
sql = "select t1.name AS Группа, t2.descr AS Товар from tbl1 t1, tbl2 t2 where t2.idgroup=t1.idgroup order by t1.name DESC"

Dim r As ADODB.Recordset 'Наш набор записей
Set r = cnn.Execute(sql) 'Получаем его

Dim iFile As Integer
iFile = FreeFile
If Len(Dir$("c:db.txt")) > 0 Then Kill "c:db.txt"
Open "c:db.txt" For Append As #iFile

Dim s1 As String
Dim f As ADODB.Field

While Not r.EOF 'Пока есть записи
s1 = vbNullString

For Each f In r.Fields
s1 = s1 & f.Name & ": " & vbTab & f.Value & vbTab
Next
s1 = s1 & vbCrLf

Print #iFile, s1
r.MoveNext
Wend

Close #iFile
r.Close
cnn.Close

Set r = Nothing
Set cnn = Nothing

Shell "notepad c:db.txt", vbNormalFocus 'Запускаем блокнот, чтобы посмотреть, чего мы там понавыбирали
End Sub

---------
Учиться никогда не поздно. Особенно программированию!
Ответ отправил: Залетин Виталий Викторович (мь!тарь) (статус: Студент)
Ответ отправлен: 19.05.2007, 19:12
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое!
В sql-запросах я вообще не разбираюсь, теперь будет повод научится


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное