【问题标题】:Create temp table in Visual FoxPro from .NET从 .NET 在 Visual FoxPro 中创建临时表
【发布时间】:2018-01-23 10:08:07
【问题描述】:

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

【问题讨论】:

  • 不清楚你想达到什么目的,为什么要从临时表开始使用VFP?

标签: .net visual-foxpro


【解决方案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

祝你好运

【讨论】:

  • 几乎在每一种情况下,您都不会在用户的计算机中安装开发者工具。您是否也可以安装在服务器中,这是值得怀疑的。
【解决方案2】:

“临时”表到底是什么意思?即使在您关闭它之后,您是否需要它在磁盘上持续存在,或者在您保持它打开时仍然存在(无论是否存在磁盘持久性和唯一的连接)?

如果您想创建一个持久保存在磁盘上并且\或可供其他用户访问的表,那么您只需使用“create table ... (...)” 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();
}

其他类型的“临时”表在 VFP 世界中称为“光标”,根据您的具体需求,可能会以不同方式创建或根本不需要(通常是后者)。我真的不知道创建它的直接方法。您可以将其创建为派生游标,或者通常需要通过“SetResultSet()”调用在数据库中使用存储过程。

另一种可以“有点”像使用 VFP 一样使用 VFP 命令的方法是使用 ExecScript() 函数执行一堆代码。但是,如果从 VFP 中调用,有大量的命令和函数可以与 ExecScript() 一起使用,但 VFPOLEDB 不支持它们。不幸的是,没有正确的不支持和支持的命令\功能列表(有些被列为支持,而实际上不支持,有些被列为不支持,但实际上支持——如果你有足够的时间,这更多的是反复试验和耐心)。

如果您可以详细说明您正在尝试做什么,那么答案可能会更简单(或更难)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2019-12-07
    • 2019-01-22
    相关资源
    最近更新 更多