从.NET在Visual FoxPro中创建临时表

时间:2018-01-23 10:08:07

标签: .net visual-foxpro

如何使用OLEDB连接从.NET代码在VisualFoxPro中创建临时表?

2 个答案:

答案 0 :(得分:1)

一种可能的方法(至少在VB.Net中)是创建VFP对象(假设您在工作站/服务器上安装了VFP),然后使用VFP“Native”命令。

例如:

Dim oVFP As Object
oVFP = CreateObject("VisualFoxPro.Application")
oVFP.DoCmd( <VFP Command1 goes here> )
oVFP.DoCmd( <VFP Command2 goes here> )
oVFP.DoCmd( <VFP Command3 goes here> )
' --- when done close VFP Object ---
oVFP.Quit()
oVFP = Nothing

祝你好运

答案 1 :(得分:0)

你到底是什么意思?&#34; temp&#34;表?您是否需要它在磁盘上保留,或者在您保持打开状态(存在或不存在磁盘持久性且对连接唯一)时保持在磁盘上是否存在?

如果要创建一个在磁盘上保留的表和\或其他用户可以访问的表,那么只需使用&#34;创建表...(...)&#34; SQL调用。例如:

using (var con = new OleDbConnection(@"Provider=VFPOLEDB;Data Source=c:\temp"))
{
    var sql = @"create table myTemp free (
    id int,
    dummy char(10),
    when datetime
    )";
    con.Open();
    new OleDbCommand(sql,con).ExecuteNonQuery();
    con.Close();
}

其他类型的&#34; temp&#34; table被称为&#34; cursor&#34;在VFP世界中,根据您的确切需求,可能会以不同的方式创建,或者可能根本不需要(后者通常是这种情况)。我不知道直接创造这种方式的方法。您可以将其创建为派生游标,或者通常需要在数据库中使用&#34; SetResultSet()&#34;呼叫。

另一种方式,你可以&#34;排序&#34;使用VFP命令就像使用VFP一样,是ExecScript()函数,需要执行一堆代码。但是,如果从VFP内部调用,则有许多命令和函数可以与ExecScript()一起使用,但VFPOLEDB不支持它们。不幸的是,没有正确的不受支持和支持的命令\功能列表(有些列为实际上没有支持,有些列为不支持但实际上支持 - 如果你有足够的话,它更多的是试错和耐心)。

如果您可以详细说明您要做的事情,那么答案可能会更简单(或更难)。