Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2010, 12:36   #1
vlad_stv
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 22
Вопрос Определение имени таблицы динамично

Существует некая форма,которая выполняет поиск по записям любой таблицы,поля в таблицах имеют одинаковые имена,а вот имя таблицы всегда разное.как в простой форме где исп только sql,организовать механизм определения имени таблицы?

Код запроса использованный формой:

SELECT *FROM Shpak
WHERE ADR Like "*" & Forms!Form111!pole_vvoda1 & "*"
And ADR Like "*" & Forms!Form111!pole_vvoda8 & "*"
And KN Like "*" & Forms!Form111!pole_vvoda2 & "*"
And RI Like "*" & Forms!Form111!pole_vvoda3 & "*"
And KAT Like "*" & Forms!Form111!pole_vvoda4 & "*"
And VID Like "*" & Forms!Form111!pole_vvoda5 & "*"
And SOBST Like "*" & Forms!Form111!pole_vvoda6 & "*"
And CHZU_NUM Like "*" & Forms!Form111!pole_vvoda7 & "*";
vlad_stv вне форума Ответить с цитированием
Старый 27.02.2010, 12:46   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте vlad_stv.
а стоит ли организовывать "определения имени таблицы"?
проще искать сразу во всех таблицах одновременно, ведь такую возможность SQL предоставляет (UNION).
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 27.02.2010, 12:56   #3
vlad_stv
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 22
По умолчанию

т.е. Вы хотите сказать,организовать такой метод который будет искать во всех открытых в данный момент таблицах? если да,то не подскажите как это сделать?
vlad_stv вне форума Ответить с цитированием
Старый 27.02.2010, 13:20   #4
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

"во всех открытых в данный момент таблицах" - формулировка не совсем верна, верно будет так : "во всех таблицах текущей БД, заданных в запросе на объединение".
единственное уточнение, действительно ли число полей и их имена во всех таблицах абсолютно одинаковы ?
Если нет потребуются имена всех полей и в дюбом случае имена таблиц.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 27.02.2010, 13:41   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

не дождавшись доп. информации выкладываю "подсказку как это сделать"

конечно можно обращаться в запросе MS Access и к объектам (полям формы), "напрягая" при этом ядро JET для конвертации, но гораздо "безобиднее" предоставлять для JET данные уже полученные функцией, благо SQL MS Access допускает интеграцию VBA функций. Создайте модуль и поместите в него подобный код
Код:
public function strField(i%) as string
	strField = Forms!Form111("pole_vvoda" & i) & "" ' Forms!Form111 - реальное имя формы
	strField = "'*" + strField + iif(len(strField)=0,"'","*'")
end function
после создания функции запрос (источник формы) может выглядеть так:
Код:
select * 
from (
	SELECT *, 'Shpak' as f
	FROM Shpak
	union
	SELECT *, 'Shpak1' as f
	FROM Shpak1
	union
	SELECT *, 'Shpak2' as f
	FROM Shpak2) T 
WHERE 
	ADR Like strField(1)
	And ADR Like strField(8)
	And KN Like strField(2)
	And RI Like strField(3)
	And KAT Like strField(4)
	And VID Like strField(5)
	And SOBST Like strField(6)
	And CHZU_NUM Like strField(7)
(ShpakN имена таблиц отображаемые в дополнительном поле F) может только в случае абсолютно одинаковых имен полей, иначе конструкция должна быть несколько иной.
примерно так.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 27.02.2010, 13:54   #6
vlad_stv
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 22
По умолчанию

принцип работы будет такой:база приходит в район в ней лежит одна единственная таблица,люди приходят и хотят узнать определенную инфу которая лежит в таблице.Задача:скомпилить форму которая работала бы с любой из этих таблиц.Поля абсолютно одинаковы.
т.е. "Shpak" это пример названия,и оно(название) может быть каким угодно,но состоять из одного слова на анг.
vlad_stv вне форума Ответить с цитированием
Старый 27.02.2010, 14:05   #7
vlad_stv
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 22
По умолчанию

и еще один скромный вопрос.Как располагать модуль,его подключать к форме?

силенок пока мало((,сам еще не могу понять
vlad_stv вне форума Ответить с цитированием
Старый 27.02.2010, 14:10   #8
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Возможно проще выложить на этой странице архив с Вашим файлом, чем задавать воросы на каждом этапе? (если информация конфиденциальна избавьте БД от реальных данных)
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 27.02.2010, 14:27   #9
vlad_stv
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 22
По умолчанию

в самой мал таблице 70тыс записей в 14 полях-прятать данные будет очень долго
vlad_stv вне форума Ответить с цитированием
Старый 27.02.2010, 21:36   #10
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Удалите часть данных, сожмите БД средствами MS Access (меню Сервис / Служебные программы / Сжать и восстановить...) и упакуйте в архив. Размер файла (архива) ~200Kb, вполне приемлем для выкладывания на форуме.
Без образца помощь Вам оказана, скорее всего не будет.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определение пола по имени Psaf Microsoft Office Excel 4 18.02.2010 16:14
Определение типа таблицы (родительская/дочерняя) PavluxaF БД в Delphi 0 16.02.2010 21:52
Определение имени пользователя из сервиса Garacio_cain Общие вопросы Delphi 2 10.12.2009 17:17
Заполнение таблицы и поиск имени Gwynbleidd Общие вопросы C/C++ 0 12.10.2008 16:43