Модераторы: Akina

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Помогите начинающему, Очередная проблема 
:(
    Опции темы
Depeche_14
Дата 11.2.2005, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 23.1.2005

Репутация: нет
Всего: нет



Есть такая проблема: Существуют три таблицы: 1-ая - Личные данные, с полями "Код", "ФИО", "Улица", "Дом"; 2-ая - Улицы, с полями "Код", "Название улицы"; 3-я - Дома, с полями "Код", "Номер дома". Все таблицы естественно связаны между собой. Таблицы "Улицы" и "Дома" - это таблицы справочники. Нужно это для того, чтобы потом формировать отчеты по названию улицы и номера дома.
Как мне сделать форму (тип формы - ленточный), в которой выводятся поля: ФИО, Адрес. Причем в поле Адрес должны быть объединены данные из таблиц Улицы и Дома (в смысле название улицы и номер дома). Форма должна работать только в режиме отображения данных. И еще вопрос: можно ли создать в этой форме поле поиска? К примеру начинаю вводить в это поле начальные буквы фамилии, а текущая запись формы "перескакивает" на соответствующую подходящую по буквам фамилию.
Спасибо большое заранее.

PM MAIL   Вверх
lovermann
Дата 11.2.2005, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 28.12.2004
Где: Прага

Репутация: нет
Всего: 8



А на каком языке это надо реализовывать?
PM WWW ICQ   Вверх
Akina
Дата 11.2.2005, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Depeche_14 @ 11.2.2005, 02:37)
3-я - Дома, с полями "Код", "Номер дома".

чего???
Цитата(Depeche_14 @ 11.2.2005, 02:37)
Как мне сделать форму (тип формы - ленточный), в которой выводятся поля: ФИО, Адрес. Причем в поле Адрес должны быть объединены данные из таблиц Улицы и Дома (в смысле название улицы и номер дома).

Код

select [Личные данные]![ФИО], [Улицы]![Название улицы] & [Дома]![Номер дома] as [Адрес]
from [Личные данные]
inner join [Улицы] on [Личные данные]![Улица] = [Улицы]![Код]
inner join [Дома] on  [Личные данные]![Дом] = [Дома]![Код]

Цитата(Depeche_14 @ 11.2.2005, 02:37)
можно ли создать в этой форме поле поиска?

да, можно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ustas
Дата 11.2.2005, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 6.12.2004

Репутация: нет
Всего: нет



Ленточные формы на основе запроса из ответа Akina можно быстро сделать с помощью Автоформы, чтобы поля были в режиме просмотра в свойствах каждого поля указываешь блокировка - да, ну а поле поиска, надо дружить с VBA (определись какого вида оно должно быть и пиши обработчик событий)
PM MAIL   Вверх
iopp
Дата 13.2.2005, 18:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А для поиска сделать фильтр: несвязанный edit положить на форму, а в его обработчике change
название_формы_на_которой_edit_лежит.Form.Filter = "(поле like ('" + filt.Text + "%'))"
название_формы_на_которой_edit_лежит.Form.FilterOn = True

  Вверх
Akina
Дата 14.2.2005, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(iopp @ 13.2.2005, 19:14)
для поиска сделать фильтр: несвязанный edit положить на форму, а в его обработчике

Если реализовывать указанную выше схему с самостоятельным построением текста запроса - источника данных формы, лучше именно в него добавить WHERE и сделать REQUERY. Идеологически правильнее.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Depeche_14
Дата 14.2.2005, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 23.1.2005

Репутация: нет
Всего: нет



Цитата(Akina @ 11.2.2005, 09:48)

select [Личные данные]![ФИО], [Улицы]![Название улицы] & [Дома]![Номер дома] as [Адрес]
from [Личные данные]
inner join [Улицы] on [Личные данные]![Улица] = [Улицы]![Код]
inner join [Дома] on  [Личные данные]![Дом] = [Дома]![Код]

Ввожу такой код как вы сказали, а при попытке сохранения запроса выдается сообщение: "Ошибка синтаксиса (пропущен оператор) в выражении запроса '[Личные данные]![Улица] = [Улицы]![Код] INNER JOIN [Дома] ON [Личные данные]![Дом] = [Дома]![Код]'.
А вот если убираю вторую инструкцию INNER JOIN и все, что за ней следует, то вроде бы запрос работает, вот только приходится вручную вводить номер дома, и у всех ФИО он становится одинаковым... Как быть?
PM MAIL   Вверх
Akina
Дата 14.2.2005, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Depeche_14
Дата 14.2.2005, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 23.1.2005

Репутация: нет
Всего: нет



Сейчас попробую
Добавлено @ 13:42
Блин что-то не получается...
PM MAIL   Вверх
Akina
Дата 14.2.2005, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Depeche_14 @ 14.2.2005, 14:35)
что-то не получается

Покажи, как поставил скобки, и приведи свое объяснение почему именно так.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Depeche_14
Дата 14.2.2005, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 23.1.2005

Репутация: нет
Всего: нет



SELECT [Личные данные]![ФИО], [Улицы]![Название улицы] & [Дома]![Номер дома] AS [Адрес]
FROM [Улицы] INNER JOIN ([Дома] INNER JOIN [Личные данные] ON [Дома]![Код] = [ЛичныеДанные]![Дом]) ON [Улицы]![Код] = [Личные данные]![Улица];

Вот сейчас вроде получилось, только, честно говоря, не понял как. Я нигде не могу найти синтаксис инструкции INNER JOIN. Буду признателен, если просвятите
PM MAIL   Вверх
Akina
Дата 14.2.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Depeche_14 @ 14.2.2005, 18:32)
Я нигде не могу найти синтаксис инструкции INNER JOIN

Открываешь конструктор запросов. Правый клик - режим SQL. Набираешь JOIN, ставишь курсор в сетедину, нажимаешь F1.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Depeche_14
Дата 14.2.2005, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 23.1.2005

Репутация: нет
Всего: нет



[QUOTE=Akina,14.2.2005, 17:41][/QUOTE]
Открываешь конструктор запросов. Правый клик - режим SQL. Набираешь JOIN, ставишь курсор в сетедину, нажимаешь F1.[/QUOTE]
Может, у меня какой-нибудь компонент справки не установлен, но конкретно по INNER JOIN там ничего нет
PM MAIL   Вверх
Depeche_14
Дата 14.2.2005, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 23.1.2005

Репутация: нет
Всего: нет



Цитата(iopp @ 13.2.2005, 18:14)
А для поиска сделать фильтр: несвязанный edit положить на форму, а в его обработчике change
название_формы_на_которой_edit_лежит.Form.Filter = "(поле like ('" + filt.Text + "%'))"
название_формы_на_которой_edit_лежит.Form.FilterOn = True

Т.е. я обычным образом создаю на форме поле. Какому событию сопоставить указанный код? И как будет выглядеть поиск записи?
PM MAIL   Вверх
Akina
Дата 15.2.2005, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Depeche_14 @ 14.2.2005, 23:14)
Какому событию сопоставить указанный код?

LostFocus, Validate, KeyPress(vbEnter)... это уже ТЕБЕ решать

Цитата(Depeche_14 @ 14.2.2005, 23:14)
как будет выглядеть поиск записи?

Код

Form.RecordSource = "построенный с учетом введенного фильтра запрос"
Form.Requery


Цитата(Depeche_14 @ 14.2.2005, 21:09)
конкретно по INNER JOIN там ничего нет

Цитата(MS)
Операция INNER JOIN
Объединяет записи из двух таблиц, если связующие поля этих таблиц содержат одинаковые значения.

Синтаксис
FROM таблица_1 INNER JOIN таблица_2 ON таблица_1.поле_1 оператор таблица_2.поле_2

Дополнительные сведения
Операцию INNER JOIN можно использовать в любом предложении FROM. Это самые обычные типы связывания. Они объединяют записи двух таблиц, если связующие поля обеих таблиц содержат одинаковые значения.

Операцию INNER JOIN можно использовать с таблицами «Отделы» и «Сотрудники» для отбора всех сотрудников каждого отдела. Для отбора же всех отделов (в том числе тех, в которых нет ни одного сотрудника) или всех сотрудников (в том числе тех, кто не приписан ни к одному отделу) следует использовать операцию LEFT JOIN или RIGHT JOIN, которая создает внешнее объединение.

Попытка объединить поля Memo или объекта OLE приведет к возникновению ошибки.

Допускается объединение любых двух числовых полей подобных типов. Например, поле счетчика можно объединить с полем типа «Длинное целое». Однако нельзя объединить типы полей Single и Double.

Следующая инструкция SQL объединяет таблицы «Типы» и «Товары» по полю «КодТипа»:

SELECT Категория, Марка
FROM Типы INNER JOIN Товары
ON Типы.КодТипа = Товары.КодТипа
;

В предыдущем примере поле «КодТипа» используется для объединения таблиц, однако оно не включается в результат выполнения запроса, поскольку не включено в инструкцию SELECT. Чтобы включить связующее поле (в данном случае поле Типы.КодТипа) в результат выполнения запроса, следует включить имя этого поля в инструкцию SELECT.

Чтобы связать несколько предложений ON в инструкции JOIN, используйте следующий синтаксис:

SELECT поля
FROM таблица_1 INNER JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_1 AND
ON таблица_1.поле_2 оператор таблица_2.поле_2) OR
ON таблица_1.поле_3 оператор таблица_2.поле_3)];


Операции JOIN могут быть вложенными; в таком случае используйте следующий синтаксис:

SELECT поля
FROM таблица_1 INNER JOIN
(таблица_2 INNER JOIN [( ]таблица_3
[INNER JOIN [( ]таблица_X [INNER JOIN ...)] 
ON таблица_3.поле_3 оператор таблица_X.поле_X)]
ON таблица_2.поле_2 оператор таблица_3.поле_3) 
ON таблица_1.поле_1 оператор таблица_2.поле_2;


Операции LEFT JOIN или RIGHT JOIN могут быть вложены в операцию INNER JOIN, но операция INNER JOIN не может быть вложена в LEFT JOIN или RIGHT JOIN.




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.1543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.