Я предоставляю поддержку приложений для устаревшего приложения VisualFoxPro. У пользователей приложения, похоже, проблема с запуском отчета. В отчете выполняется сравнение данных из базы данных (MS SQL SERVER) и локального файла (xxPAY.dbf) и отображается отчет. Пользовательский интерфейс для запуска отчета требует, чтобы пользователь вводил месяц и год, и соответственно изменился путь для xxPAY.DBF. Например,Ошибка сетевого диска или путь UNC для пути к файлу
Если пользователь вводит 201501, путь будет P: /xx/2015/01/xxPAY.dbf. Если пользователь войдет в 201402, путь станет P: /xx/2014/02/xxPAY.dbf
Привод P: это сетевой диск, а также приложение запускается как администратор. При отладке программы путь кажется прекрасным всегда, но я получаю сообщение об ошибке «P: /xx/2015/01/xxPAY.dbf» не найден. Однако, если я предоставляю путь UNC «\ ServerName \ xx \ 2015 \ 01 \ xxPAY.dbf», отчет генерирует штраф. Любые мысли, что может быть причиной такого поведения. Я не уверен, если требуется код, но я отправлю его здесь в любом случае: -
IF !FILE('P:\IMPORT\Wei-cosmts\'+ ;
LEFT(ALLT(STR(thisform.yyyymm,6,0)),4)+'\'+ ;
RIGHT(ALLT(STR(thisform.yyyymm,6,0)),2)+'\'+ ;
lsPeriod+'pay.dbf')
=MESSAGEBOX('Can not find '+'P:\IMPORT\Wei-cosmts\'+ ;
LEFT(ALLT(STR(thisform.yyyymm,6,0)),4)+'\'+ ;
RIGHT(ALLT(STR(thisform.yyyymm,6,0)),2)+'\'+ ;
lsPeriod+'pay.dbf'+'. '+CHR(13)+CHR(13)+'Comparison report can not run.',16)
RETURN .F.
ENDIF
Одна из проблем, которые я вижу с последующим подходом UNC-пути, заключается в том, что при каждом перемещении сервера потребуется изменение кода. Кажется, что запуск командной строки в качестве администратора и сопоставление диска с помощью команды «net use P: \\ servername \ folder» может решить проблему. Но это то, что мне нужно будет попробовать. –
На практике большинство людей будут избегать жестко закодированных строк пути в своем коде в любом случае, т. Е. Сохранить их в файле конфигурации «config» где-то в папке «Профиль пользователя% AppData%», например. В VFP вы действительно можете использовать внешний файл 'config.fpw' или более масштабируемое место, такое как XML, INI и т. Д. Или даже TXT-файл. Создание динамически отображаемого диска во время выполнения вряд ли вызовет проблемы, поскольку это функция конечного пользователя, доступно только несколько писем, и вы не можете знать, существует ли «P» на определенном клиенте –