我正在为传统的VisualFoxPro应用程序提供应用程序支持。应用程序的用户似乎在运行报表时遇到问题。该报告运行数据库(MS SQL SERVER)和本地文件(xxPAY.dbf)中的数据之间的比较,并显示该报告。用于运行报告的用户界面要求用户输入月份和年份,并相应地更改xxPAY.DBF的路径。 E.g
如果用户输入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
答案 0 :(得分:0)
如果UNC路径有效,我建议使用它。
FWIW,旧的“映射驱动器”功能无论如何都是无用的,只是“真实”(UNC)网络地址的最终用户表示。在您的特定情况下,我猜测当前的Windows用户在IDE中进行调试时可能有一个用户,而运行时用户(即“运行方式”管理员帐户)可能没有。
在您的代码中,您不需要将计算出的路径字符串连接两次,例如:
Local lcFile
lcFile = "\\ServerNameOrIP\sharedFolder\" + ;
LEFT(ALLT(STR(thisform.yyyymm,6,0)),4)+'\'+ ;
RIGHT(ALLT(STR(thisform.yyyymm,6,0)),2)+'\'+ ;
lsPeriod+'pay.dbf'
If Not File(m.lcFile, 1)
MessageBox(m.lcFile + " not found")
...