|
Перебор строк из таблицы Access с конца | ☑ | ||
---|---|---|---|---|
0
ANDRU48
05.06.15
✎
09:15
|
Есть таблица Access (много записей), перебор сначала идет долго.
Возможно ли перебрать строки с конца таблицы или упорядочить таблицу по столбцу "Дата" по убыванию и перебирать сначала? |
|||
1
DexterMorgan
05.06.15
✎
09:17
|
Я не против
|
|||
2
sapphire
05.06.15
✎
09:19
|
Окажется потом, что перебирать и не нужно вовсе, а просто написать запрос к таблице
|
|||
3
ДенисЧ
05.06.15
✎
09:21
|
А может, не надо перебирать-то? А не датабазный подход какой-то...
|
|||
4
ANDRU48
05.06.15
✎
09:26
|
Условие: есть база Access, из неё нужно грузить в 1с.
Пока результаты: Начало загрузки... 05.06.2015 9:02:24 Загрузка завершена! 05.06.2015 9:11:03 примерно 10 мин, 4093 записей в mdb Пока вроде не так долго, но потом таблица может разрастись. |
|||
5
Fedor-1971
05.06.15
✎
09:39
|
(4) и чем поможет загрузка с конца файла если БД нужно загрузить целиком?
|
|||
6
Вася Чез
05.06.15
✎
09:43
|
(5) на всякий случай подпишусь, вдруг ТС откроет новый способ оптимизации запросов
|
|||
7
ANDRU48
05.06.15
✎
10:10
|
(5) не целиком.
Вначале, когда регистр пустой, то вся таблица загрузится, а потом в неё будут добавляться новые записи, а старые остаются, вот, чтобы старые записи не перечитывать, а брать, только новые записи по дате и измерению из регистра на конец текущей. |
|||
8
vde69
05.06.15
✎
10:13
|
||||
9
sda553
05.06.15
✎
10:15
|
(0) Подключаешь ексель лист в виде linkedTable к аксесу
Выполняешь запрос Insert into MyExcelLinkedTable(a,b,c,d) select field1,field2,field3,field4 from myAccessTable и никаких переборов сначала и с конца не надо |
|||
10
ANDRU48
05.06.15
✎
10:21
|
(8) не увидел параметра в данном примере, если не сложно ткните...
У меня: СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + ПутьКФайлу + ";"""; MBD = Новый COMОбъект("ADODB.CONNECTION"); Попытка MBD.Open(СтрокаПодключения); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; // выбираем таблицу из access ТекстСелект = "SELECT * FROM Rashod_History"; НаборЗаписей = Новый COMОбъект("ADODB.RecordSet"); Попытка НаборЗаписей=MBD.Execute(ТекстСелект); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Попытка НаборЗаписей.MoveFirst(); Исключение //табилца пустая Сообщить(ОписаниеОшибки()); НаборЗаписей.Close(); Возврат; КонецПопытки; // перебираем записи Пока НаборЗаписей.EOF()=0 Цикл |
|||
11
spectre1978
05.06.15
✎
10:21
|
(0)
select * from table order by поле_для_сортировки desc; select top не_все_а_сколько_надо_например_1000 * from table order by поле_для_сортировки desc |
|||
12
mistеr
05.06.15
✎
10:23
|
(4) > примерно 10 мин, 4093 записей в mdb
6.8 записй в секунду... У тебя там что, sleep() через каждую строчку? |
|||
13
Господин ПЖ
05.06.15
✎
10:29
|
>примерно 10 мин, 4093 записей в mdb
4093 миллиона? |
|||
14
trdm
05.06.15
✎
10:39
|
(13) Он же грузит в 1С еще.
Мало ли там какой объем записей и умеет ли от работать с транзакциями. |
|||
15
ANDRU48
05.06.15
✎
10:46
|
(11) спасибо, разобрался
ТекстСелект = "SELECT * FROM Rashod_History ORDER BY DateTime DESC"; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |