|   |   | 
| 
 | Перебор строк из таблицы 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"; | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |