Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопросы по работе с БД в Visual Basic

6.1K
14 октября 2004 года
hasuhands
17 / / 14.10.2004
Сейчас активно изучаю работу с БД (Access) в Visual Basic. Столкнулся с катастрофической нехваткой информации - перелистал уже две книжки с лейболом "для профи". Бестолку. Инфы по этому поводу - ноль. Везде предельно банальные вещи.

Вопросы буду постить сюда.
Итак, первое:


Код:
 
Код:
Dim dbname As String
Dim db As Database
Dim qdef As QueryDef
Dim td As TableDef
 
    Set db = OpenDatabase(dbname)
    For Each td In db.TableDefs
            List1.AddItem td.Name
    Next td



Тем самым мы получаем список табличек в базе. Вопрос, а как можно получить подобным образом имена столбцов каждой таблицы?
5.1K
14 октября 2004 года
Ashtray
41 / / 15.07.2004
Цитата:
Originally posted by hasuhands
Тем самым мы получаем список табличек в базе. Вопрос, а как можно получить подобным образом имена столбцов каждой таблицы?



Dim dbname As String
Dim db As Database
Dim qdef As QueryDef
Dim td As TableDef
Dim fd As DAO.Field

Set db = OpenDatabase(dbname)
For Each td In db.TableDefs
List1.AddItem td.Name
For q = 1 To td.Fields.Count
List2.AddItem td.Fields(i).Name
Next q
Next td

6.1K
14 октября 2004 года
hasuhands
17 / / 14.10.2004
[QUOTE]Originally posted by Ashtray


For q = 1 To td.Fields.Count
List2.AddItem td.Fields(i).Name
Next q

Цикл по q, добавляем td.Fields(i)?
Поэтому добавляется только первый элемент, но если меняю на q, при компиляции выдается ошибка "Item not found in this collection"
6.1K
14 октября 2004 года
hasuhands
17 / / 14.10.2004
Цитата:
Originally posted by hasuhands
[QUOTE]Originally posted by Ashtray


For q = 1 To td.Fields.Count
List2.AddItem td.Fields(i).Name
Next q

Цикл по q, добавляем td.Fields(i)?
Поэтому добавляется только первый элемент, но если меняю на q, при компиляции выдается ошибка "Item not found in this collection"



List2.AddItem td.Fields(i - 1).Name

Вот так работает. Почему кстати?

459
14 октября 2004 года
gacol
273 / / 12.02.2003
Цитата:
Originally posted by hasuhands


List2.AddItem td.Fields(i - 1).Name

Вот так работает. Почему кстати?


Ты имел ввиду
List2.AddItem td.Fields(q - 1).Name
Правильно. Т.к. первый элемент нулевой, следовательно q-й элемент выходит за пределы.

10
14 октября 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Ashtray
For q = 1 To td.Fields.Count
List2.AddItem td.Fields(i).Name
Next q


Обычно пишут For q = 0 To td.Fields.Count - 1.

6.1K
14 октября 2004 года
hasuhands
17 / / 14.10.2004
А как получить все имеющиеся значения какого-либо поля? То есть столбец: в нем, скажем, три фамилии. Как лучше всего получить их список.
5.1K
15 октября 2004 года
Ashtray
41 / / 15.07.2004
Цитата:
Originally posted by hasuhands
А как получить все имеющиеся значения какого-либо поля? То есть столбец: в нем, скажем, три фамилии. Как лучше всего получить их список.



Dim rst As Recordset

Set rst = db.OpenRecordset("select ...")
If rst.EOF = False Then
rst.MoveFirst
Do While rst.EOF = False
Debug.Print rst.Fields(td.Fields(i).Name).Value
rst.MoveNext
Loop
End If

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог