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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2009, 20:12   #1
Kingson
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 18
По умолчанию Как сохранить отсортированную таблицу

Здравствуйте, господа.
Помогите, пожалуйста, кто знает.
Проблема вот в чем.
Открываю таблицу в recordset. Сортирую ее.
А вот как сохранить ее в отсортированном виде, не знаю.
Можно, конечно, создать новую таблицу и с помощью запросов перекидать туда все по порядку, но при большом количестве записей это занимает часы.
Kingson вне форума Ответить с цитированием
Старый 12.12.2009, 20:45   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Kingson.
Вы убеждены в целесообразности такого "сохранения", я не понимаю его назначения, объясните зачем требуется такое действие?
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 13.12.2009, 14:33   #3
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

А если Вам нужно будет несколько сортировок делать, то Вы создадите столько же таблиц? Послушайте совет Евгения.
Abrakadabra вне форума Ответить с цитированием
Старый 14.12.2009, 10:40   #4
Kingson
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 18
По умолчанию

А целесообразность вот в чем.
Есть две таблицы по 1500000 записей в каждой.
Каждую из них надо отсортировать по трем колонкам.
Первая сортируется нормально, а вот на сортировку второй уже не хватает памяти. База становится больше 2GB.
Так вот, я думаю, если сбросить результат сортировки в таблицу и выгрузить его из памяти, то может и на вторую памяти хватит?

А несколько сортировок мне делать не нужно, она нужна одна.
Kingson вне форума Ответить с цитированием
Старый 14.12.2009, 18:33   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Kingson.
Вы не уловили иронию в предыдущих постах, для таблиц БД сортировка с последующим сохранением результата не нужна в принципе.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 16.12.2009, 16:41   #6
Kingson
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 18
По умолчанию

А по моему это Вы меня не поняли.
Мне надо отсортировать две таблицы и это занимает больше памяти, чем Access может себе позволить. Так вот это, на мой взгляд, единственный способ. Отсортировать сперва одну таблицу, скинуть результат в файл, отсортировать другую и потом подгрузить первую.
Kingson вне форума Ответить с цитированием
Старый 16.12.2009, 20:12   #7
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Если Ваши записи не особо секретные, выложите файл бд хотя бы с одной таблицей, думаю вашу сортировку можно сделать за секунды\доли секунды.
Abrakadabra вне форума Ответить с цитированием
Старый 16.12.2009, 20:27   #8
Kingson
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 18
По умолчанию

Одна таблица занимает ~100MB и вторая тоже.
Вам все выложить или по частям?
Как отсортировать за секунды по одной колонке я и сам знаю, а Вы попробуйте отсортировать таблицу из 1.5 млн. записей по 4-5 колонкам, а потом не выгружая ее вторую так же. И в диспетчере задач можете посмотреть с какой скоростью у Вас убывает память. А когда она будет занята на 2GB access вырубится. Вопрос-то не в том как сортировать, а в том, что огромные отсортированные таблицы не помещаются в памяти access'а. И мне приходится ради разгрузки оной вытряхивать одну из них в файл. И кстати я нашел, что можно таблицу записать в файл с помощью метода recordset.save(параметры). Работает здорово, получается .xml файл, но вот теперь вопрос, а как этот файл загрузить обратно в рекордсет?
Kingson вне форума Ответить с цитированием
Старый 16.12.2009, 21:50   #9
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Kingson.
"Для тех кто на бронепоезде":
Хранимые данные сортировать бессмысленно. Ни "1.5 млн." ни две записи находящиеся в таблице не требуют сортировки для хранения. При необходимости сформировать набор записей с определенной сортировкой обращаются не к таблице а SQL конструкции - запросу (представлению) с заданными параметрами сортировки.
А если действительно требуется "пересохранение" с определенной сортировкой (назначение которого я представить не могу) его можно заменить созданием новой таблицы выполнив подобную конструкцию:
SELECT Field1, Field2, Field3 INTO Table2 FROM Table1 ORDER BY Field1, Field2 DESC , Field3
без использования рекордсета.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 21.12.2009, 21:15   #10
Kingson
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 18
По умолчанию

Здравствуйте, Евгений.
Хорошо Вам говорить про бронепоезда, а у меня над головой висит программа, которая никак не хочет работать, хоть тресни.
А главное программа-то вроде не сложная.
Есть две таблицы, и их надо сравнить. Выделенного ключевого поля как такового нет. А есть примерно 6 столбцов, которые и выполняют его функцию (этакий комбинированный ключ). Так вот, нужно как-то пометить одинаковые записи, а так же записи где ключевой (комби) столбец одной таблицы больше столбца другой и наоборот.
Я делаю это таким образом. Загоняю таблицы в рекордсеты. Сортирую их там, а дальше построчно сравниваю. Вот тут-то и вылезает, то, о чем я писал. Отсортировать две таблицы разом невозможно (не хватает памяти).
А может я вообще все неправильно делаю? Может есть какой-нибудь другой, изящный способ решить эту задачу? Может намекнете?

Кстати за подсказку спасибо. Попробую.

Последний раз редактировалось Kingson; 21.12.2009 в 21:19.
Kingson вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сохранить картинку.... Lifefine Мультимедиа в Delphi 22 24.10.2009 11:43
Как сохранить в БД? Natssska Помощь студентам 1 11.06.2009 00:27
Как правильно сохранить данные в таблицу??? kAtenok87 PHP 4 07.05.2009 11:24
Сохранить как? InseR Общие вопросы Delphi 31 27.06.2007 16:18
Как сохранить TfontStyle Маркъ Общие вопросы Delphi 2 02.04.2007 18:41