Открытие xls-файла на терминале
0 (0)
Открытие xls-файла на терминале ( Alex_MMM 20.01.2006 08:16 )
5(1)Добрый день !
Не могу открыть xls-файл на терминале с помощью вот такой конструкции:
Var sfile1="$proc.xls";
Var sfile="$proc_n.xls";
CopyFile(sfile1,sfile,true);
If (IsStandAlone ()) // двухзвенка
If ((ValType (ex) != V_UNDEF) and (ex.Visible == False))
ob = ActiveX ("Excel.Application",NULL,False);
else
ob = ActiveX ("Excel.Application",NULL,True);
end ;
else // трехзвенка
ex = CreateObject ("rsax", "TRsAxServer", "RsAxServer", False) ;
ob = ex.CreateComObject ("Excel.Application", True) ;
end ;
ob.Workbooks.open(sfile);
CopyFile отрабатывает, копирует файл. На ob.Workbooks.open(sfile) вылетает ошибка.
Если для sfile, sfile1 указать абсолютные пути на сервере, то все хорошо отрабатывает.
Но мне нужно, чтобы xls-файлы находились на терминале.
Что я должен указать в sfile? Не получается открыть файл с конструкцией
Var sfile1="$..\\Mac\\proc.xls".
>> ОтветитьExcel скорее всего не понимает первый символ $ ( Outcast 20.01.2006 09:12 )
5(1)А зачем так сложно... ( Denis.ua 20.01.2006 11:47 )
5(1)Попробуй такую конструкцию:
import rslx,lgs,rsexts,lgxs; shablon_address = "D:\excel.xls"; if(IsStandAlone()) ob = ActiveX ("Excel.Application",null,true); else ob = TlgActiveX ("Excel.Application",null,true); end; ob.Workbooks.Open(shablon_address);
>> ОтветитьДело в том, что для трехзвенки D:\ для СП : shablon_address = "D:\\excel.xls"; ( Outcast 20.01.2006 12:14 )
5(1)и там где term.exe диск D будет другой, или вообще может не быть :) Следовательно Excel не увидит excel.xls
>> Ответитьиспользуй UNC путь ( Шмаков Алексей 20.01.2006 12:26 )
5(1)Not specified
>> ОтветитьUNC - путь. ( Alex_MMM 20.01.2006 12:38 )
5(1)Имеешь в виду \\имя_компа\\имя_диска\\имя_файла? К сожалению, не подходит, макрос будет работать в разных доп. офисах на разных компах...
>> Ответитьдык понятно, что для разных подразделений все зачинается ( Outcast 20.01.2006 13:17 )
5(1)а все хотят свои шаблоны, со своими логотипами, формами временем работы и т.д. и т.п
Просто ввели для каждого подразделения и бригады свой каталог на серверах, если подразделение имеет выделенный сервер. Есть бригады которые сидят и доступ только по IP к СП и доступ куда-то для них не хочется делать, если канал узкий, для них локально каталог на диске C:\ в него и копируются файлы с сервера, если есть. Вот несколько функций, уже давно написанных, может быть помогут. Синхронизацию по времени и дате давно убрал, по желанию, но можно и сделать если нужно.
Import rsexts; var Path_T_IN = "C:\\DOT\\IN", TermCh = "$"; Macro GetIsRemoteOper( ) var rez = ( IsStandAlone() == false ); /* трехзвенка */ var TestDIR : TDirList; if ( rez ) /* трехзвенка, тогда проверим существует ли на локальном компьютере каталог */ TestDIR = TDirList( string( TermCh, Path_T_IN ), "D" ); rez = ( TestDIR.Count >= 1); end; return rez; End;/* Macro GetIsRemoteOper( AccRec ) */ Macro ExistFileT( FileName ) /* Функция проверяет есть, ли файл (True) на терминале или нет (False) */ If (isStandAlone() ) return ExistFile( FileName ); End; If ( SubStr( FileName, 1, 1 ) != TermCh ) FileName = string( TermCh, FileName ); End; Var DirList = TDirList( FileName, "F" ); return ( DirList.Count >= 1 ); End; /* Macro ExistFileT(FileName) */ Macro CopyFileTemplTerm( srcFile, destFile ) if (Not( ExistFileT( destFile )) ) /* по необходимости копируем */ /* Процедура копирует файл src в файл dst. */ If ( not CopyFile( srcFile, destFile, True ) ) println("Не могу скопировать ", srcFile, " \n на терминал", destFile ); return false; End; end; return true; End;
>> ОтветитьСпасибо, пригодится ... ( Alex_MMM 20.01.2006 14:55 )
5(1)Not specified
>> Ответить
Мне нужен файл на терминале... ( Alex_MMM 20.01.2006 12:36 )
5(1)А D: - это на сервере приложений. Если же ставлю shablon_address = "$D:\excel.xls", то все равно Excel не открывает файл.
>> Ответитьубери $ ( Denis.ua 20.01.2006 12:42 )
5(1)у тебя там случайно не вылазит ошибка - Ошибка выполнения : Invoke, ошибка вызова свойства/метода, на Open?
пробуй "D:\\excel.xls"
>> ОтветитьСпасибо всем, все получилось... ( Alex_MMM 20.01.2006 13:01 )
5(1)Для CopyFile использую конструкция с $, а Excel-у подаю файл уже без $.
>> Ответить
а если файлы находятся не на сервере и не на клиенте а на другой машине, то как? ( Andrew01 02.11.2016 10:20 )
5(1)path = "\\\\192.168.1.111\\file_to_patch\\*.dbf"
pr = TDirList(path, "f");
println(pr.count);
Трехзвенная архитектура, у одних файлы отображает, у других нет, на одном и том же сервере, в одной и той же сети.
С чем это связано?
>> Ответитьот доступа к шаре \\192.168.1.111\file_to_patch ( Outcast 02.11.2016 10:51 )
5(1)видимо у Вас СП (appsrv.exe) запускает startbnk.exe от разных юзеров с разным доступом к \\192.168.1.111\file_to_patch
>> ОтветитьНа одной и той же локальной машине WS05, отрабатывается данный макрос, т..е. ( Andrew01 02.11.2016 12:18 )
5(1)TDirList не выдает списков файлов.
Но если копирую папку с терминалом с другой машины WS06, там где это все работает, на машину WS05 и запустив терминал, то начинает тоже работать.
в term.ini указаны и там и там данные админа
USERNAME = Админ
DOMAIN = домен
PASSWORD = пароль
в какую сторону еще просмотреть? может быть не хватает каких то библиотек на клиентской машине?
P.S. запускает startbnk.exe от одного юзера - администратора, доступ есть ко всему, к любой машине, к любому ресурсу по сети.
>> ОтветитьБлагодарю, разобрался ( Andrew01 02.11.2016 12:26 )
5(1)надо было указать параметры в term.ini
ASKFORUSER = 1
PORT = 79
был указан ASKFORUSER = 0
>> Ответить