澳门新葡亰平台游戏网站VFP与其他应用程序的集成

作为一个数据库软件,Visual FoxPro
5.0不仅具有管理它本身数据的功能,还可以与其他应用程序集成,获取其他应用程序提供的数据。另外,通过Visual
FoxPro 5.0,还可以将表或视图中的数据与Microsoft
Word文档合并,产生邮件合并文档或者通过通用型字段嵌入或链接其他OLE对象。1.导入数据所谓导入数据,就是指从另一个应用程序复制数据,然后在Visual
FoxPro 5.0中创建一个新表,并用源文件的数据填充该表。在Visual FoxPro
5.0中,可以导入多种文件类型的数据。如果想使用FoxPro或dBASE文件中的表,可以直接打开并使用它们而不必导入。Visual
FoxPro 5.0将询问你是否把表转换为Visual FoxPro
5.0格式。一旦将表从以前的版本转换成最新版本,就不能再用以前的版本打开。在导入数据时,既可以使用“导入向导”,也可以使用“导入”对话框。2.把数据追加到已有的表在执行导入操作时,除了将数据导入到一个新表以外,你还可以将它导入到一个已有的文件中。在选择将数据导入到一个已有的文件时,Visual
FoxPro
5.0将把数据追加到已有文件的后面。除了使用“导入向导”将要导入的数据追加到已有的文件以外,还可以使用“追加来源”对话框追加数据。在使用“追加来源”对话框追加数据时,首先应从“浏览”窗口中打开要追加记录的表。默认情况下,Visual
FoxPro
5.0将源文件中所有记录和字段都追加到当前打开的表中,但是使用“追加来源”选项,可以指定要追加哪些字段或记录。3.导出数据在Visual
FoxPro 5.0中,不仅可以从其他应用程序中导入或追加数据,而且还可以把Visual
FoxPro
5.0表中存储的数据导出到另一种格式的文件中,供其他应用程序使用。所谓导出,就是指把数据从Visual
FoxPro 5.0表复制到其他应用程序所用的文件中。在Visual FoxPro
5.0数据库中,可以将数据存储为多种文件类型。在Visual FoxPro
5.0中,可以使用“导出”对话框导出数据。在导出数据时,既可以导出指定表中的全部字段和记录,也可以只导出其中的一部分。用户可以定义要导出哪些字段和记录。4.创建邮件合并文件我们知道,在Word中使用“工具”菜单中的“邮件合并”功能,可以将标准文本与单一信息的列表链接成新的文档,包括套用信函、带地址的信封、电子邮件和传真文档。在Visual
FoxPro
5.0中,利用“邮件合并向导”同样也可以完成上述功能。“邮件合并向导”实际上是将Visual
FoxPro 5.0和Microsoft Word两种应用程序集成在一起,使得Microsoft
Word能够共享Visual FoxPro
5.0表或视图中包含的数据,利用这些数据打印一批相同格式的文档。在日常生活中,这种方法是很有用的。5.嵌入或链接OLE对象上述几种方法都只能使Visual
FoxPro
5.0静态地共享其他应用程序生成的数据。为了能够动态地共享其他应用程序生成的数据,Visual
FoxPro
5.0还提供了嵌入或链接数据的方法。嵌入和链接数据的方法是通过通用型字段实现的,用户可以通过通用型字段在表或表单中嵌入或链接其他应用程序的数据,同时仍用那些应用程序维护这些数据。在Visual
FoxPro 5.0中,外部数据一般都是嵌入或链接在表或表单中的。

本文循序渐进地演示如何用不同的方法将数据从 Microsoft Excel 工作表导入到
Microsoft SQL Server 数据库。

 

技术说明

本文中的示例使用以下工具导入 Excel 数据:

  • SQL Server 数据传输服务 (DTS)
  • Microsoft SQL Server 2005 Integration Services (SSIS)
  • SQL Server 链接服务器
  • SQL Server 分布式查询
  • ActiveX 数据对象 (ADO) 和 Microsoft OLE DB Provider for SQL Server
  • ADO 和 Microsoft OLE DB Provider for Jet 4.0

要求

下面的列表列出了推荐使用的硬件、软件、网络架构以及所需的 Service Pack:

  • Microsoft SQL Server 7.0、Microsoft SQL Server 2000 或 Microsoft SQL
    Server 2005 的可用实例
  • Microsoft Visual Basic 6.0(针对使用 Visual Basic 的 ADO 示例)

本文的部分内容假定您熟悉下列主题:

  • 数据传输服务
  • 链接服务器和分布式查询
  • Visual Basic 中的 ADO 开发

示例

导入与追加

本文使用的示例 SQL 语句演示了“创建表”查询。该查询通过使用
SELECT…INTO…FROM 语法将 Excel 数据导入新的 SQL Server
表。如这些代码示例所示,在继续引用源对象和目标对象时,可以通过使用
INSERT INTO…SELECT…FROM 语法将这些语句转换成追加查询。

使用 DTS 或 SSIS

可以使用“SQL Server Data Transformation Services (DTS) 导入向导”或“SQL
Server 导入和导出向导”将 Excel 数据导入到 SQL Server
表中。在逐步执行向导并选择 Excel 源表时,要记住附加美元符号 ($) 的 Excel
对象名称代表工作表(例如,Sheet1$),而没有美元符号的普通对象名称代表
Excel 指定的范围。

使用链接服务器

要简化查询,可以将 Excel 工作簿配置为 SQL Server 中的链接服务器。
有关其他信息,请单击下面的文章编号,以查看 Microsoft
知识库中相应的文章:

306397  ( )
如何:结合 SQL Server 链接的服务器和分布式查询使用 Excel

下列代码将 Excel 链接服务器“EXCELLINK”上的 Customers
工作表数据导入新的名为 XLImport1 的 SQL Server 表:

SELECT * INTO XLImport1 FROM EXCELLINK...[Customers$]

还可以通过按照以下方式使用 OPENQUERY 以全通过方式对源数据执行查询:

SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK,
    'SELECT * FROM [Customers$]')

使用分布式查询

如果不想将对 Excel 工作簿的永久连接配置为链接服务器,可以通过使用
OPENDATASOURCE 或 OPENROWSET 函数为特定目的导入数据。下列代码示例也能将
Excel Customers 工作表数据导入新的 SQL Server 表:

SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:testxltest.xls;Extended Properties=Excel 8.0')...[Customers$]

SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:testxltest.xls', [Customers$])

SELECT * INTO XLImport5 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:testxltest.xls', 'SELECT * FROM [Customers$]')

使用 ADO 和 SQLOLEDB

当通过使用 Microsoft OLE DB for SQL Server (SQLOLEDB) 在 ADO
应用程序中连接到 SQL Server
时,可以使用与“使用分布式查询”
一节中相同的“分布式查询”语法将 Excel 数据导入 SQL Server。

下列 Visual Basic 6.0 代码示例要求添加对 ActiveX 数据对象 (ADO)
的项目引用。此代码示例还演示了如何在 SQLOLEDB 连接上使用 OPENDATASOURCE
和 OPENROWSET。

    Dim cn As ADODB.Connection
    Dim strSQL As String
    Dim lngRecsAff As Long
    Set cn = New ADODB.Connection
    cn.Open "Provider=SQLOLEDB;Data Source=<server>;" & _
        "Initial Catalog=<database>;User ID=<user>;Password=<password>"

    'Import by using OPENDATASOURCE.
    strSQL = "SELECT * INTO XLImport6 FROM " & _
        "OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _
        "'Data Source=C:testxltest.xls;" & _
        "Extended Properties=Excel 8.0')...[Customers$]"
    Debug.Print strSQL
    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
    Debug.Print "Records affected: " & lngRecsAff

    'Import by using OPENROWSET and object name.
    strSQL = "SELECT * INTO XLImport7 FROM " & _
        "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _
        "'Excel 8.0;Database=C:testxltest.xls', " & _
        "[Customers$])"
    Debug.Print strSQL
    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
    Debug.Print "Records affected: " & lngRecsAff

    'Import by using OPENROWSET and SELECT query.
    strSQL = "SELECT * INTO XLImport8 FROM " & _
        "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _
        "'Excel 8.0;Database=C:testxltest.xls', " & _
        "'SELECT * FROM [Customers$]')"
    Debug.Print strSQL
    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
    Debug.Print "Records affected: " & lngRecsAff

    cn.Close
    Set cn = Nothing

使用 ADO 和 Jet Provider

上一节中的示例使用 ADO 和 SQLOLEDB Provider 连接到从 Excel 到 SQL
导入的目标。也可以使用 OLE DB Provider for Jet 4.0 来连接到 Excel 源。

Jet 数据引擎可以通过使用具有三种不同格式的特殊语法来在 SQL
语句中引用外部数据库:

  • [Full path to Microsoft Access database].[Table Name]
  • [ISAM Name;ISAM Connection String].[Table Name]
  • [ODBC;ODBC Connection String].[Table Name]

本节使用第三种格式创建到目标 SQL Server 数据库的 ODBC 连接。可以使用
ODBC 数据源名称 (DSN) 或者 DSN-less 连接字符串:

DSN:
    [odbc;DSN=<DSN name>;UID=<user>;PWD=<password>]

DSN-less:
   [odbc;Driver={SQL Server};Server=<server>;Database=<database>;
       UID=<user>;PWD=<password>]

下列 Visual Basic 6.0 代码示例要求添加对 ADO
的项目引用。此代码示例演示了如何使用 Jet 4.0 Provider 通过 ADO 连接将
Excel 数据导入到 SQL Server。

    Dim cn As ADODB.Connection
    Dim strSQL As String
    Dim lngRecsAff As Long
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=C:testxltestt.xls;" & _
        "Extended Properties=Excel 8.0"

    'Import by using Jet Provider.
    strSQL = "SELECT * INTO [odbc;Driver={SQL Server};" & _
        "Server=<server>;Database=<database>;" & _
        "UID=<user>;PWD=<password>].XLImport9 " & _
        "FROM [Customers$]"
    Debug.Print strSQL
    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
    Debug.Print "Records affected: " & lngRecsAff

    cn.Close
    Set cn = Nothing

也可以通过使用该语法(Jet Provider 支持)将 Excel 数据导入其他 Microsoft
Access 数据库、索引顺序存取方法 (ISAM)(“desktop”)数据库或 ODBC
数据库。

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图