好吧 虽然一直习惯性的App.Path做为程序所在的路径,直到遇到问题才知道,app.path是返回的是程序的工作目录比方说我用了 CommonDialog控件的 CommonDialog1.ShowOpen 
那么就是打开的哪,App.Path 就返回的哪,并不是 程序所在的路径……可悲的是 还要连接数据库 & App.Path & "\db1.mdb;Persist Security Info=False"这时候数据库连接就出错了数据库连接有肯定不能使用绝对位置的 怎么解决啊?

解决方案 »

  1.   

    很简单啊  多放几个CommonDialog控件
    不同事件调用不同的CommonDialog控件
    当然返回值 肯定不能相同
      

  2.   

    笨。
    设个全局变量appPath, 程序开始运行时就把app.path永久记录在appPath中,然后使用appPath获取路径不就行了。
      

  3.   

    lz的概念可能理解有误,如果打开的是exe文件,app.path返回的就是exe所在的文件夹路径,如果打开的是工程,app.path返回的是工程所在的文件夹路径,和CommonDialog1.ShowOpen的路径无关
      

  4.   

    2楼的答案貌似能解决我的问题
    可是 在控件内使用apppath后 发现不单单是app.path 是在 Adodc控件下出现的问题
    因为 Adobc1 中
    属性
    ConnectionString  Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;Persist Security Info=False这个还是相对值 还是寻找工作路径……
    怎么把这个值用 apppath固定了?
      

  5.   

    是吗 要是真是这样子 那程序就是正确的呀现在明显就是 CommonDialog1.ShowOpen 打开哪个文件夹 傻X程序 就喊 “我在那个文件夹下面找不到db1.mdb呀” 我真想给他说句 远在天边 近在眼前……工作路径 不 一定返回 程序所在路径
      

  6.   

    刚测试了一下,这个问题只会发生在新建一个工程,而这个工程从来就没有存过盘时,保存你的工程再试。另外还可以在form_load里加CommonDialog1.InitDir = App.Path试一下,根本用不着什么全局变量。我只测试的sp6的对话框,其它的没有测试。
      

  7.   

    加了语句 CommonDialog1.InitDir = App.Path 还是一样的问题
    现在就是
    一使用CommonDialog1控件
    Adobc1控件就在CommonDialog1操作过的文件夹下连接db1.mdb 好吧 我发现不是app.path的问题了Adobc1属性
    ConnectionString Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;Persist Security Info=False
      

  8.   

    看来楼主真是个生手。
    把你要的语句写成:
    "ConnectionString Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & appPath & "\db1.mdb" & ";Persist Security Info=False"另外,楼上有人说到IDE运行与exe运行的问题,只要在运行时先写上以下两句:
    appPath=app.path
    appPath="d:\appexe"   '这是你的exe生成时存放的目录只要在生成exe时屏蔽掉以上第二句即可。-------------------------------------------------
    我自己的程序往往要用到很多主目录下的文件,我都是这样用的,很简单也好用。
      

  9.   

    刚又试了几遍 发现App.path就是没有问题的 是我理解错了
    就是
    Adobc1属性 用相对路径
    ConnectionString Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;Persist Security Info=False
    的问题现在每次 使用文件操作之后 写一句
    Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & welcome.appPath & "\db1.mdb;Persist Security Info=False"还是有问题 虽然不会立马报错 但是关闭程序的时候 还是一样的问题。
      

  10.   

    终于知道什么问题了引用:---------------------------------
    咳咳 
    初学者的问题,N年前我也遇到同样的问题 
    每次调用commondialog 后 
    执行下面两句,把路径切换回来就行了 
    ChDrive Left(App.Path, 1) 
    ChDir App.Path 
    -----------------------------------------嘿嘿 麻烦大家了哈