文件& # 39;phd.prg& # 39;不存在

本文关键字:不存在 prg phd 文件 | 更新日期: 2023-09-27 18:15:32

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

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

当我运行查询从"test. exe"中选择数据时。Dbf "会抛出异常

文件的博士学位。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;

文件& # 39;phd.prg& # 39;不存在

由于您正在从数据库容器中打开表,因此我会检查所讨论的表是否有一些与之相关的触发器。如果那些触发者在寻找外部博士。在路径中不可见的PRG文件,这可能会阻塞它。但你只是做一个select * from,所以这应该不是问题。无论如何要再次检查。"博士"这个名字。你对Prg有印象吗?数据库中是否有这个名称引用的存储过程可能导致问题?

FoxPro曾经有一个名为PhDbase的插件,它提供了在备忘录字段中的快速搜索和其他一些功能。我很确定实现它的程序叫做Phd。并且连接它需要调用索引标记中的程序(函数)。

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

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

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

这是一篇老文章,但我最近有机会使用这样的系统。如果你想正常使用数据库,并且找不到PhDBase,那么使用这个方法:

1。将应用程序的运行目录设置为DBC/DBF所在的目录:

SET DEFAULT TO "C:'your path"
  • 创建博士。目录下的PRG文件,内容为:

    LPARAMETERS param1, param2, param3, param4, param5, param6, param7, param8,Param9, param10, param11, param12, param13, param14, param15, param16,param17、param18 param19, param20

    返回.T。

  • 我终于得到了它的工作,似乎有新的oledb驱动程序的问题,所以我现在使用ODBC驱动程序"Microsoft Visual FoxPro driver"。很难找到,但经过多次搜索,我在这里找到了这个司机。VFODBC

    public DataTable GetYourData2(string textquery)
            {
                using (OdbcConnection conn = new OdbcConnection("Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;Exclusive=No;Collate=Machine;NULL=NO;DELETED=YES;BACKGROUNDFETCH=NO;SourceDB=e:/"))
                    {
    
                    OdbcDataAdapter ODA = new OdbcDataAdapter();
                    OdbcCommand ODC = new OdbcCommand(textquery, conn);
                    ODA.SelectCommand = ODC;  
                    conn.Open();
                    ODA.Fill(YourResultSet);
                    return YourResultSet;   
                }
    
        }
    

    谢谢你的支持。