更新程序目录

Updating A Program's Directory

我有一个使用表单的程序。表格指向 c:\filepath1 中的文件,如 main.prg 中所述(设置 defa,设置路径)。我制作了文件的测试副本,更改了 main.prg 中的路径,表单仍然引用旧路径中的文件。我不想以所有形式重新创建所有数据环境。我怎样才能避免这样做?如有任何帮助,我们将不胜感激。

大小姐。

当使用Dataenvironment 且DataEnvironment 表中记录的路径存在时,则无论当前路径是什么,都会使用该路径。如果您根本不想接触数据环境(甚至以编程方式),那么您必须删除该路径(例如重命名)。

附带说明:我有:

UpdateDE(this)

在我的 DataEnvironment.BeforeOpenTables 方法中。在 UpdateDE.prg 中,我有代码循环 DE 中的所有游标并将它们的路径设置为我想用作 "current".

的路径

编辑:这是一个示例 UpdateDE.prg:

Lparameters toDE
Do setups && prg keeping common "set" entries
Local Array aDEMembers[1]
Local lnMembers,ix,lcMembers
If !(Type('oApp')='O' And !Isnull(m.oApp))
  Public oApp
  oApp = Createobject('myApp')
Endif
lnMembers = Amembers(aDEMembers,m.toDE,2)
For ix=1 To m.lnMembers
  With Evaluate('toDe.'+aDEMembers[m.ix])
    If Lower(.BaseClass) == 'cursor'
      If Atc(oApp.cAppDBC,.Database) > 0
        .Database = Addbs(oApp.cAppDataPath)+oApp.cAppDBC
      Else
        .CursorSource = Addbs(oApp.cAppDataPath)+Justfname(.CursorSource)
      Endif
    Endif
  Endwith
Endfor

Define Class myApp As Custom
  cAppDBC = 'myDatabase.dbc'
  cAppDataPath=Fullpath('data')
  cCurPath = ''
  Procedure Init
    This.cCurPath = Set('path')
    If File('dbparam.dbf') && a small dbf that holds path to current data folder
      Select dataLoc From dbparam Where locType == 'DATABASE' Into Array arrDataLoc
      If _Tally > 0
        This.cAppDataPath = arrDataLoc
        Set Path To (arrDataLoc[1]+';'+This.cCurPath)
      Endif
      Use In 'dbparam'
    Endif
  Endproc
  Procedure Destroy
    Set Path To (This.cCurPath)
  Endproc
Enddefine

我最终重命名了默认路径,然后浏览了程序中的所有屏幕,然后重新编译。谢谢您的帮助。我确实理解它并且可能是另一个很好的解决方案。