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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2008, 07:09   #1
Rain9
 
Регистрация: 28.10.2008
Сообщений: 9
Вопрос Как скопировать или быстро просмотреть таблицу с LookUp?

Здравствуйте.

Пишу на C++ builder программу для работы с базой посещений больницы на MS Access. База представляет собой набор таблиц, местами связанных, местами нет.
Смысл моей работы заключается в том, что я беру данные из нескольких таблиц(около пяти), например день рождения, гражданство, город проживания и прочее, исходя из которых мне нужно подсчитать статистику посещения людей(т.е. сколько людей приходило в такой-то месяц, сколько из них до 15 лет, сколько из них русские и.т.п.)

Я делал цикл по таблице (while (!(Table2==Eof))), в которой есть все необходимые для подсчета поля. Часть из этих полей подставлялось из других таблиц с помощью LookUP. Проблема заключается в том, что прогон одной записи в таблице занимает около половины секунды, т.е. чтобы просмотреть к примеру 1599 записей, требуется 5 минут (это очень долго). Эта задержка происходит из-за подставления данных из других, связанных по mastersource таблиц.
Поэтому у меня появилась идея создать новую таблицу и запихнуть в нее все данные, чтобы она уже ни на что не ссылалась. В частности я хотел сделать это используя компонент BatchMove. Но, как оказалось, этот компонент копирует данные из таблицы кроме тех, что подставлены с помощью LookUP.
Что теперь делать, ума не приложу. Нужно либо быстро просмотреть таблицу в которой есть lookUp поля из MasterSource-связанных таблиц либо найти способ скопировать все данные, включая подставленные, в новую, независимую таблицу.
Rain9 вне форума Ответить с цитированием
Старый 28.10.2008, 07:51   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Может лучше это всё сделать посредством SQL?
Выполняете запрос типа:
select count(*)
from peoples
where nationality = 'русский'
И получаете количество русских людей, записанных в табличке peoples. И никаких while и т.п. мудрить не нужно
pu4koff вне форума Ответить с цитированием
Старый 28.10.2008, 09:06   #3
Rain9
 
Регистрация: 28.10.2008
Сообщений: 9
По умолчанию

А потом в полученной отфильтрованной таблице считать RecordCount?...Это мысль, спасибо.

А в SQL запросе будут работать условия с подставленными полями? Хотя, собственно, и не нужно по идее..

Последний раз редактировалось Rain9; 28.10.2008 в 09:25.
Rain9 вне форума Ответить с цитированием
Старый 28.10.2008, 12:33   #4
Rain9
 
Регистрация: 28.10.2008
Сообщений: 9
По умолчанию

Ммм короче довольно сложно создать запрос, потому что есть, к примеру текстовые поля из которых нужно выдерать первый символ...подробности по ссылке

http://programmersforum.ru/showthrea...326#post151326

кто, может, пож-ста помогите 8-)
Rain9 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно найти папку быстро но как? zotox Помощь студентам 3 21.09.2008 13:35
Как просмотреть содержимое dll Shavminator Общие вопросы Delphi 7 12.07.2008 14:11
Как быстро переверннуть(отразить) изображение? Paul Hindenburg Мультимедиа в Delphi 2 10.01.2008 12:51
Как отсортировать НД по Lookup-полю? Schumacher БД в Delphi 4 21.06.2007 14:07
Как уменьшить картинку быстро но без изменения палитры Joker_kpi Общие вопросы Delphi 2 04.06.2007 23:49