文件' phd.prg'不存在

时间:2015-10-02 05:39:57

标签: c# oledb visual-foxpro

我有一个visual fox pro 9数据库,我正在尝试从桌面应用程序连接它。

我可以从几乎所有表中获取数据,除了一个表。

当我运行查询以从" test.dbf"中选择数据时它抛出异常说法

  

文件' phd.prg'不存在

我正在使用VFP OLEDB驱动程序连接数据库。

 DataTable YourResultSet = new DataTable();
        OleDbConnection yourConnectionHandler = new OleDbConnection(
               "Provider=VFPOLEDB.1;Data Source=E:/TRACKONE.DBC;Exclusive=false;Nulls=false;");
        yourConnectionHandler.Open();

        if (yourConnectionHandler.State == ConnectionState.Open)
        {
            OleDbDataAdapter DA = new OleDbDataAdapter();

            string mySQL = "SELECT * FROM TEST.DBF";
            OleDbCommand MyQuery = new OleDbCommand(mySQL, yourConnectionHandler);


            DA.SelectCommand = MyQuery;
            try
            {
                DA.Fill(YourResultSet);

            }
            catch (OleDbException ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
            yourConnectionHandler.Close();
            return YourResultSet;

        }

        else
        {
            MessageBox.Show("Error Opening Databse");
        }

        return null;

2 个答案:

答案 0 :(得分:0)

由于您要从数据库容器中打开一个表,我会检查该表是否有一些与之关联的触发器。如果这些触发器正在寻找一些在路径中不可见的外部phd.prg文件,则可能会阻塞它。但是你只是在做一个select * from,所以这不应该是问题。无论如何要仔细检查。 “phd.prg”这个名字给你敲响了吗?数据库是否通过此名称引用在其中存储过程可能会导致问题?

答案 1 :(得分:0)

曾经有一个名为PhDbase的FoxPro插件,可以在备忘录字段和其他一些功能中快速搜索。我很确定实现它的程序叫做Phd.PRG,挂起它需要在索引标记中调用该程序(函数)。

第一种可能性是程序可用,但是在OLEDB中没有看到的文件夹中。我不知道OLEDB是否可以处理索引标记中的用户定义函数。但是,如果您可以在另一个文件夹中找到该文件,则可以尝试将其复制到与表格相同的文件夹中。

第二种可能性:如果这是旧数据且应用程序不再使用,您应该能够删除相关标记。我的猜测是你需要(或者至少想要)Visual FoxPro来完成工作。

第三种选择,虽然我不知道它是否有用。您可以使用正确的文件名创建一个虚拟程序,并将其放在正确的文件夹中。自从我使用PhdBase以来已经很长时间了,所以我不记得它的参数和返回值肯定,但你可能会尝试一个接受字符串并返回相同字符串的函数。

希望这里有所帮助。