| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS Access > Упорядочить строки по дате на VBA |
| Автор: Cnoppiks 25.11.2005, 17:28 |
| Привет всем. Сори, если вопрос уже обсуждался, киньте тогда ссылку, посмотреть. Но..как упорядочить с помощью VBA строки по дате? |
| Автор: Akina 25.11.2005, 18:23 |
| Строки где? в текстовом документе, что открыт в блокноте на соседнем компьютере? |
| Автор: Cnoppiks 26.11.2005, 09:42 |
| Пардон. Конец рабочего дня сказался(. В таблице Access 2003 одним из полей является дата в виде dd.mm.yyyy Как упорядочить строки таблицы по дате? |
| Автор: Cnoppiks 28.11.2005, 18:28 |
| Нароод, подскажите!!!! Ведь не просто от нечего делать спрашиваю!!! |
| Автор: Akina 28.11.2005, 19:59 |
| Упорядочивание строк В ТАБЛИЦЕ не имеет ровным счетом никакого смысла. В принципе и независимо от обстоятельств. Потому что в реляционных БД понятия порядка записей В ТАБЛИЦЕ не существует. И вообще - работа непосредственно с таблицей, в смысле с данными в ней, более чем неразумна. Посему допустим что речь идет все-таки не о таблице, а о форме. У формы есть такая штука как источник данных. Или RowSource - если работать в модуле этой формы либо common-модуле. Так вот - независимо от того, с каким случаем мы имеем дело (статический источник данных или задается программно), нужно просто добавить в источник соответствующую сортировку. Т.е. откорректировать макет запроса-источника либо строку SQL-запроса. Как именно? Если под дата в виде dd.mm.yyyy разумеется поле в формате дата-время, просто задано такое отображение, достаточно в этой колонке макета запроса указать нужную сортировку, или в строке запроса добавить ORDER BY [Имя_этого_поля]. Если же это поле в формате "строка", то придется преобразовать его к виду, позволяющему сортировать. В макете придется добавить вычисляемое поле Right([Имя_этого_поля],4) & Mid([Имя_этого_поля],4,2) & Left([Имя_этого_поля],2) и в нем указать сортировку, а в SQL-строке соответственно добавить ORDER BY Right([Имя_этого_поля],4) & Mid([Имя_этого_поля],4,2) & Left([Имя_этого_поля],2). |
| Автор: Cnoppiks 29.11.2005, 10:08 |
| Akina Мне необходима сортировка по дате, потому что сравнение записей в двух таблицах привязано к счетчику. Можно конечно переправить код, но он и так очень громоздкий. Поэтому проще продумать упорядочивание записей по дате, т.к. сравнение происходит по датам. А вариант с запросом уже давно мной обдуман был. |
| Автор: Akina 29.11.2005, 10:57 | ||||||
Это ты уже говорил. Но ответь таки на вопрос - а у тебя есть ДАТА? или у тебя есть СТРОКА?
ась? а пояснее можно выразиться?
а что, тебя это пугает? ну вынеси его в отдельную процедуру - в целях повышения читабельности... |
| Автор: Cnoppiks 29.11.2005, 12:16 | ||||
Придираешься значит к словам?!) Ну хорошо, в таблице одним из столбцов является столбец даты, по возрастанию значений в котором надо упорядочить строки в таблице.
Данные в двух таблицах, которые необходимо сравнить - в более или менее определенном порядке. Просмотрев таблицу для поиска и, удалив значения без пары в начале второй таблицы - в двух таблицах устанавливаются счетчики. По номеру записи в первой таблице можно примерно(с шагом в 20-30 записей вверх и вниз по записям таблицы) определить во второй таблице , где искать схожее значение. Ну это вообщем, там еще куча критериев. Так вот, данные иногда не упорядочены по дате( т.е. кусок данных с такой же датой где нить в конце таблицы) и получается после сравнения куча ненайденных значений. Можно конечно провести поиск такой же даты до конца таблицы, но это займет очень много времени при подсчете,( можно конечно и по другому перестроить поиск, но времени уже нет), и если есть возможность до проведения сравнения упорядочить записи в таблицах по дате - то это облегчит конечно жизнь... Совет по облегчению читабельности кода оставлю без комментариев, с вашего разрешения |
| Автор: Akina 29.11.2005, 13:29 | ||||
Нет, пытаюсь из тебя выжать информацию. А ты упорно ее не даешь. См. аттач. Что у тебя в обведенном поле в структуре таблицы??? Добавлено @ 13:30
а тебе не приходило в голову их просто СВЯЯЗАТЬ в запросе? тогда записи без пары как бы сами отсеются. |
| Автор: Cnoppiks 29.11.2005, 13:46 | ||
Это первое чесно говоря, что пришло в голову. Но вышестоячее руководство -) сказало делать именно пошаговым перебором. Имея плачевный опыт в негативном отношении начальства к инициативе подчиненных - делаю как сказали... В обведенном поле тоже самое что и у тебя, поле Data именно в Дата/время формате. |
| Автор: Akina 29.11.2005, 15:17 | ||||
тогда
Только НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ переименовать поле Data (в какой-нить ZakazSata) и впредь НИКОГДА не использовать в качестве имен полей зарезервированные слова. |
| Автор: Cnoppiks 29.11.2005, 15:43 |
| Akina Спасибо, все таки без запроса никуда... А чтобы по возрастающим значениям из двух столбцов с временем и датой в моей таблице упорядочить строки в таблице - как это прописать в order by ? |
| Автор: Akina 29.11.2005, 16:15 | ||
а почему их ДВА? |
| Автор: Cnoppiks 29.11.2005, 16:32 | ||
Мне они даны по отдельности да и для вычисления других критериев сравнения они нужны по отдельности.. |