|
|
#1 |
|
Участник
|
Каждую ночь, в 3 часа, мне в папку копируют свежий файл с неизвестным именем, который приходится искать косвенными методами) В том числе по дате. И при наложении фильтра на таблицу File.SETRANGE(Date, TODAY) в таблице этот файл то есть, то его нет. Т.е. программа отрабатывает в 4 часа, доходит до этой строки, потом я делаю FINDFIRST и вывожу результат в лог. В таблице пусто. Утром проверяю, файл лежит на месте, время у него 3 часа, все как положено. Запускаю свою программу, она его находит) Я думал во времени косяк, что его еще нет на момент ее запуска, но по часам сходится, у файла стоит 3:00, программа запускается в 4:00.
Никто не сталкивался с такой бедой?) |
|
|
|
|
#2 |
|
Участник
|
мб так поможет: тыц, или так: тыц-тыц, лично у меня без проблем работает конструкция:
Код: SELECTLATESTVERSION;
CLEAR(FileTable);
FileTable.RESET;
FileTable.SETFILTER(Path, ImportPath);
FileTable.SETRANGE("Is a file", TRUE);
IF FileTable.FINDSET THEN BEGIN
REPEAT
...
UNTIL FileTable.NEXT = 0
END;
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
|
|
|
#3 |
|
Участник
|
В смысле установить еще какие-то фильтры? Не, не помогает, я и так накладываю несколько фильтров. Сейчас примерно так написано:
Код: ff.WRITE('1');
f.SETRANGE(Path, '\\users\_MD');
IF f.FINDFIRST THEN
ff.WRITE('2');
f.SETRANGE("Is a file", TRUE);
IF f.FINDFIRST THEN
ff.WRITE('3');
f.SETRANGE(Date, TODAY);
IF f.FINDFIRST THEN
REPEAT
ff.WRITE(f.Name+' '+FORMAT(f.Date));
UNTIL f.NEXT=0;
IF f.FINDFIRST THEN
ff.WRITE('4'); |
|
|
|
|
#4 |
|
Участник
|
сорь, совсем забыл пару строк сверху забрать, в ответе подправил добавив это:
Код: SELECTLATESTVERSION; CLEAR(FileTable); FileTable.RESET; ...
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
|
|
|
#5 |
|
Участник
|
Да, CLEAR и RESET не делал, ибо смысла вроде в них нет... попробую сегодня)
SELECTLATESTVERSION вот эту функция я искал, но не нашел... может поможет. Спасибо за советы. |
|
|
|
|
#6 |
|
Участник
|
Цитата:
Код: ...
repeat
files.setrane(path, 'c:\');
files.find('-');
files.setrange(path, 'c:\foo\bar\');
if files.find('-') then
movefile;
until foo = bar;
...
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
|
|
|
#7 |
|
Участник
|
Видители, если программа не может в одной директории по какой-то причине найти существующий файл, то как бы нет гарантии, что она найдет файл в другой директории...
Или это не для того, чтобы что то найти, а просто туда сюда надо поперемещаться?) Я просто смысла не понимаю таких плясок с бубном и как это должно работать) |
|
|
|
|
#8 |
|
Участник
|
Цитата:
Сообщение от smoyk
Видители, если программа не может в одной директории по какой-то причине найти существующий файл, то как бы нет гарантии, что она найдет файл в другой директории...
Или это не для того, чтобы что то найти, а просто туда сюда надо поперемещаться?) Я просто смысла не понимаю таких плясок с бубном и как это должно работать)
__________________
Как только вы проиграете, все ваши прошлые победы забудут. |
|
|
|
|
#9 |
|
Участник
|
Тоже сталкивался с проблемой, когда NAV не мог найти файл. Действительно, помогает перед своим поиском сходить в папку C:
Вот мой код, который ищет файл с именем компании в каталоге экспорта и делает инкремент к последнему найденному имени: Код: IF COPYSTR(ExportPath, STRLEN(ExportPath), 1) <> '\' THEN ExportPath += '\';
Folder.SETRANGE(Path,'c:\');
IF Folder.FINDFIRST THEN;
Folder.SETRANGE(Path, ExportPath);
Folder.SETRANGE("Is a file",TRUE);
Folder.SETFILTER(Name, '@' + STRSUBSTNO('%1-Export-%2.xml',Company.Name,'*'));
IF Folder.FINDLAST THEN ExportName := INCSTR(Folder.Name)
ELSE ExportName := STRSUBSTNO('%1-Export-%2.xml',Company.Name,FORMAT(1, 0, '<Integer,4><Filler Character,0>'));
XMLDoc.save(ExportPath + ExportName); |
|
|