Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB 6.0 + Acces. Как настроить связи между таблицами? / 7 сообщений из 7, страница 1 из 1
08.01.2009, 19:28
    #35747835
VB 6.0 + Acces. Как настроить связи между таблицами?
Первый раз собрался делать БД в ВБ. Данные решил хранить в MDB-файле. Проблемы возикли сразу же. Например есть две связанные по KP (один-ко-многим) таблицы:

Предметы:
KP,Predmet
Цены:
KP,DATA,MAX,MIN

На форме есть два элемента DATA, один (видимый) с таблицей "Предметы", другой (скрытый) с таблицей "Цены". На форме есть MSFlexGrid, куда должны автоматически попадать данные из таблицы "Цены", которые соответствуют предмету выбранному в Data с таблицей "Предметы" при перемещении по его записям.
Как бы это получше реализовать?
я пытался так:
Код: plaintext
1.
2.
datCeni.RecordSource = "SELECT DATA as Дата,MAX as Максимум,MIN as Минимум from Ceni,Predmeti where ceni.KP=Predmeti.KP"
datCeni.Refresh
неполучилось
...
Рейтинг: 0 / 0
08.01.2009, 20:07
    #35747866
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB 6.0 + Acces. Как настроить связи между таблицами?
При использовании связей в запросе не пренебрегайте полным именованием таблица.поле:
Код: plaintext
datCeni.RecordSource = "SELECT b.Predmet as Предмет, a.DATA as Дата, a.MAX as Максимум, a.MIN as Минимум from Ceni a, Predmeti b where a.KP=b.KP"
...
Рейтинг: 0 / 0
08.01.2009, 20:18
    #35747882
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB 6.0 + Acces. Как настроить связи между таблицами?
А вообще-то, при перемещении сделать можно так:
- из DATA предметов берем код текущего предмета и помещаем в переменную, например, Tek_KP
- присваиваем datCeni.RecordSource = "SELECT DATA as Дата, MAX as Максимум, MIN as Минимум from Ceni where ceni.KP=" & Tek_KP
- делаем datCeni.Refresh

Также никто не запрещает вам привязать источник запроса ФлексГрида к некоей переменной, в которую вы будете помещать текущее значение кода предмета. Тогда для обновления цен будет достаточно сделать рефреш.
...
Рейтинг: 0 / 0
08.01.2009, 21:49
    #35747994
VB 6.0 + Acces. Как настроить связи между таблицами?
Уррра!!! Заработало!!! Спасибо!!!
...
Рейтинг: 0 / 0
08.01.2009, 23:21
    #35748079
VB 6.0 + Acces. Как настроить связи между таблицами?
Пытаюсь добавить в datCeni новую запись
Код: plaintext
1.
2.
3.
4.
5.
6.
datCeni.Recordset.AddNew
datCeni.Recordset.Fields("KP") = Tek_KP
datCeni.Recordset.Fields("DATA") = Date$
datCeni.Recordset.Fields("MAX") = txtNewMax
datCeni.Recordset.Fields("MIN") = txtNewMin
datCeni.Recordset.Update
ошибка "Item not found in this collection"
Что ему опять не так?!
...
Рейтинг: 0 / 0
10.01.2009, 18:25
    #35749937
AndreiКr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB 6.0 + Acces. Как настроить связи между таблицами?
Какое-то из полей рекордсета указано неправильно. К тому же MIN и MAX зарезервированные слова, возможно он не может с ними подружиться при работе метода Update.
Кстати, вам не обязательно обращаться к нужному полю, ссылаясь на элемент из коллекции Fields. Вместо datCeni.Recordset.Fields("MAX") = txtNewMax можно писать
datCeni![MAX] = txtNewMax
...
Рейтинг: 0 / 0
10.01.2009, 18:28
    #35749939
AndreiКr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB 6.0 + Acces. Как настроить связи между таблицами?
Пардон, так правильно datCeni.Recordset![MAX] = txtNewMax
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB 6.0 + Acces. Как настроить связи между таблицами? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]