Имя: Пароль:
1C
1С v8
Перебор строк из таблицы 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
http://catalog.mista.ru/public/57426/

в запрос условие воткни и будет счастье :)
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";
Основная теорема систематики: Новые системы плодят новые проблемы.