访问access,先建立数据源,
jb=sqlexec("数据源名")
然后就可以和sql server相连一样操作了。
sqlexec(jb,"select * from tablename","lsb")sele lsb
brow

解决方案 »

  1.   

    conn=createobject("adodb.connection")
    conn.connectionstring="provider=microsoft.jet.oledb.4.0;data source='d:\db1.mdb'"conn.open
      

  2.   

    对C/S,数据操作用远程视图,复杂的查询或执行存储过程用SPT.
      

  3.   

    在VFP用ADO虽可连接数据库,但ADO与VFP的控件不兼容,最好不用。
      

  4.   

    MSDN中VPF程序员指南中有三章专门讲C/S程序设计,建议精读。
      

  5.   

    这是我在网上找到的,看看大家还有没有补充:
    导入导出数据 
    导入导出数据是指利用VFP的内部转换机制由一个静态文件生成一个指定的新文件的过程。可以被转换的文件类型主要有:Excel文件、Paradox数据库文件、Lotus电子表格中的数据以及其他形式的文本文件。 导入数据是指将一个外部文本转换成一个新的DBF文件。例如:将A盘上的一个abc.xls文件转换成Example数据库下的CBA.DBF表,可用如下命令完成: import from a:\abc.xls Database Example Name cba Type xls 导出数据是指将一个打开的VFP数据表(DBF)文件转换成一个其他形式的外部文件,同时还可以使用范围或条件子句对被复制的数据进行过滤。例如: use cba copy to abc for fieldl=“aaaaa”,type xls 上述代码将CBA.DBF文件中满足条件“fieldl=,“aaaaa””的记录转换为Excel文件abc.xls。 远程视图 远程视图以视图的方式通过ODBC与外部数据源建立连接,从而达到访问或更新外部数据源的目的。它是客户/服务器体系结构中经常运用的一种访问外部数据源的方法。在VFP中建立远程视图的方式主要有两种:采用VFP中的视图向导和程序方式。在使用程序方式时,一般需要两个步骤: ● 通过ODBC与外部数据源建立一个命名连接; ● 定义视图。 建立一个远程视图后,用户就可以像调用一个自由表一样来使用它。在使用远程视图的过程中,应当注意以下几个问题: ● 远程视图只能对后台数据库进行查询、插入、更新和删除等操作,不能进行数据定义。它的事务处理只限于对本地数据库的操作,而无权管理后台数据库。 ● 尽量不要使用远程视图对后台数据库进行多表插入的操作,以免产生非法NULL值或引起数据不一致。 ● 尽量使用SQL语句完成对后台数据库的操作,以免在执行时产生二义性。 例如,我们要访问一个远程SQL Server上的my-db库中的my-tab表,可由如下的语句来完成(假定sql为已在ODBC中建立的与SQL Server 服务器的my-db数据库相连的数据源): create connection example datasource sql userid usr-1 password sqlpass /*建立一个名为example的与SQL Server服务器的连接*/ create sql view my-r-view remote connection example as select * from my -tab /*建立一个名为my-r-view的远程视图。该视图依赖于example连接,视图访问的是my-tab表中的所有字段。*/ use my-r-view /*打开my-r-view视图*/ browse /*浏览视图中的内容*/ SQL Pass Through技术 SQL Pass Through(以下简称SPT)技术能使用户直接访问ODBC函数,并把SQL语句发送给服务器执行。与远程视图相比,它能够更直接地控制后台服务器上的数据库: ● 可以使用服务器的特有功能,如存储过程和基于服务器的内部函数等; ● 可使用服务器所支持的SQL扩展功能,而且可进行数据定义、服务器管理和安全性管理等; ● 对后台数据库的更新、删除和插入等操作拥有更多控制权,对远程事务也拥有更多控制权。 该方法的缺点在于不能使用图形化的设计器,而且必须在命令窗口或程序中直接输入SQL命令。 在SPT中经常使用的函数主要有:连接管理函数(如SQLCONNECT、SQLSTRINGCONNECT、SQLDISCONNECT等)、SQL语句的执行和控制函数(如SQLEXEC、SQLMORERESULTS、SQLCOMMIT、SQLROLLBACK等)。下面给出一个应用实例来说明这些函数的使用及其参数的设定: Store sqlstringconnect(“dsn=sql; uid=usr-1; pwd=sqlpass”)to gnconnhandlc /*将连接函数的返回值存入连接句柄gnconnhandlc中) If gnconnhandlc<=0 /*当连接句柄gnconnhandlc的值小于或等于零时,表明连接失败*/ Messagebox(“建立连接失败”,16,“SQL Connect Error”) Else Sqlexec(gnconnhandlc,“select*from my-tab”) /*当连接成功后向服务器发送一个查询语句,并将返回的结果集存入一个临时表中*/ Sqlcancle(gnconnhandlc) /*停止sqlexec()的执行*/ Sqldisconnct(gnconnhandlc) /*断开与sql数据源的连接*/  Brow  /*浏览返回的结果集*/ Endif 数据库升迁 利用VFP的数据库升迁向导,可以实现将本地数据库转换为远程数据库的功能。借助这一功能,我们可以很方便地将使用VFP建立的数据库、表和视图等从本地系统迁移到另一个远程服务器上。虽然在VFP中,该方法只限于对SQL Server和Oracle Server的访问,但通过使用SQL Pass Through函数在服务器上创建远程表,然后再用VFP建立远程视图访问这些服务器上的表,我们就可以为任何远程ODBC数据源建立客户/服务器模式的应用程序。 有了这一功能,可以极大地方便客户/服务器应用程序的开发工作。用户可先在单机上开发应用程序,待基本功能模块设计调试成功后,再运用数据库升迁的方法将本地数据库、表转换到远程服务器上,并把本地视图升迁为远程视图,继而将开发调试工作的重点转移到客户机与服务器间的数据通信以及数据库服务器的管理等方面。
      

  6.   

    Visual FoxPro 6.0与大型数据库的无"数据源"连接!!(不可不看!!!)
    http://www.yesky.com/20020225/218569.shtml
      

  7.   

    (转贴)如何创建远程连接和远程视图. 
    CLOSE ALL
    SET DEFAULT TO c:\temp
    * 没有数据库视图不能存在.因此创建一个用于包含视图的数据库.
    CREATE DATABASE zdb
    * 创建一个视图使用的连接.
    CREATE CONNECTION zconn DATASOURCE sqltest USERID sa PASSWORD ""
    * 用远程连接创建视图.
    CREATE SQL VIEW zview REMOTE CONNECTION zconn AS select * from    pubs..sales
    * 打开视图并浏览结果集.
    USE zview
    BROWSE
    设置 ODBC 数据源
    DECLARE INTEGER SQLConfigDataSource IN odbccp32 INTEGER, INTEGER, STRING, STRINGlnWindowHandle=0
    lcODBCDriver='SQL Server' && DRIVER 类型
    lcODBCName='SharedData'   && 数据源名字
    lcODBCDesc='Shared Data Source' && 数据源描述
    lcODBCServer='DEVSQL'     && SQL SERVER名字
    lcODBCDatabase='Shared'   && 要连接的数据库名字** 先试图修改已有的 ODBC,如果不存在,返回 0。
    lreturn=SQLConfigDataSource(lnWindowHandle, 2, lcODBCDriver, ;
    'DSN=' + lcODBCName + CHR(0) ;
    + 'Description=' + lcODBCDesc + CHR(0) ;
    + 'Server=' + lcODBCServer + CHR(0) ;
    + 'Database=' + lcODBCDatabase + CHR(0))
    IF lreturn=0 && 不存在   ** 添加新的 ODBC
       lreturn=SQLConfigDataSource(lnWindowHandle, 1, lcODBCDriver, ;
       'DSN=' + lcODBCName + CHR(0) ;
       + 'Description=' + lcODBCDesc + CHR(0) ;
       + 'Server=' + lcODBCServer + CHR(0) ;
       + 'Database=' + lcODBCDatabase + CHR(0))
       IF lreturn=0 &&失败
          MessageBox('添加ODBC数据源失败',16,'BUFFER')
       ENDIF
    ENDIF
    删除ODBC数据源
    DECLARE INTEGER SQLConfigDataSource IN odbccp32 INTEGER, INTEGER, STRING, STRINGlnWindowHandle=0
    lcODBCDriver='SQL Server'
    lcODBCName='SharedData'
    lcODBCDesc='Shared Data Source'
    lcODBCServer='DEVSQL'
    lcODBCDatabase='Shared'**先修改,或者其是否存在
    lreturn=SQLConfigDataSource(lnWindowHandle, ;
       2, lcODBCDriver, ;
       'DSN=' + lcODBCName + CHR(0) ;
       + 'Description=' + lcODBCDesc + CHR(0) ;
       + 'Server=' + lcODBCServer + CHR(0) ;
       + 'Database=' + lcODBCDatabase + CHR(0))
    IF lreturn=1 &&ODBC存在,删除它
          lreturn=SQLConfigDataSource(lnWindowHandle, ;
          3, lcODBCDriver, ;
          'DSN=' + lcODBCName + CHR(0) ;
          + 'Description=' + lcODBCDesc + CHR(0) ;
          + 'Server=' + lcODBCServer + CHR(0) ;
          + 'Database=' + lcODBCDatabase + CHR(0))
          IF lreturn=0
             MessageBox('删除ODBC源失败,16,'BUFFER')
          ENDIF
    ENDIF** 清除DLL
    CLEAR DLLS
    从VFP连接到SQL SERVER
    lnHandle=SQLConnect("SharedData","用户名”,“密码”)
    If lnHandle>0 &&连接成功
       **从库里获得数据(比如从EMP表里得到部门号为‘01’的职工)
       lnReturn=SQLExec(lnHandle,"Select * from Emp Where cDept='01'","CursorEmp")
       If lnReturn>0 &&运行成功
          Browse
       Else &&失败
          &&出错处理
       EndIf
    Else &&连接失败
       MessageBox("连接 SQL SERVER 失败”,16,“BUFFER”)
    EndIf**用完连接后,最好马上关闭,连接是很宝贵的资源,微软是按连接数收费的,而且每个连接会增加SQL SERVER的管理负担
    =SQLDisconnect(lnHandle)
      

  8.   

    Visual FoxPro 的客户/服务器开发 节选自《Visual FoxPro 3 编码手册》,Y.Alan Griver 著 1995 年 8 月 1 日 介绍 随着 Visual FoxPro 的发布,Microsoft 已经把 FoxPro 定位在客户/服务器结构的前端(客户端)。Visual FoxPro 包含了大量访问后端信息的途径,加上相当快的本地数据库引擎和数据字典,它提供了真正的客户/服务器开发所需的最好选择。本文将要研究 Visual FoxPro 中内置的各种远程数据访问功能,同时介绍在什么情况下使用这些功能。 客户/服务器基础 在讨论 Visual FoxPro 客户端功能之前,让我们研究一下为什么要使用远程服务器。 广域网 (WAN)  如果您使用WAN,平均来说,客户/服务器应用程序能够降低网络 I/O,提高吞吐量。 在大数据库中每次只需查询很少的结果    使用客户/服务器结构的一个根本动机是希望通过电缆的信息量最小;因此您通常要预先限定查询,使得服务器只将必须的信息发送到客户端。例如,若要了解一个客户的信息,可以在查询中只请求那个客户的数据,而不是浏览所有客户的信息。 服务器强制安全性检查和健壮的事务处理 服务器数据库产品能为您的数据提供安全性和健壮的事务处理机制。而非服务器数据库(比如 Visual FoxPro)只能提供一些简单的事务支持和数据完整性检查,这些特性同内置在各种服务器引擎之中的功能是无法相比的。 上面列出了使用客户/服务器结构的各种原因,现在我们看一下 FoxPro 所提供访问服务器数据的两种方法:SQL pass-through (SPT) 和视图。SQL pass-through 提供与 FoxPro2.6 Connectivity Kit 相同的基本能力,但它已内置在基本产品中,并具有更快的速度。视图支持允许您象处理本地 FoxPro 数据一样处理后端数据,但是必须注意结果集合的大小。这两种方法都要用到连接,即具有给定别名、预先定义的联系后端数据的途径。 您可以为连接设置多个属性:       Asynchronous 连接是同步的(在完成后端的查询之前您的应用程序不能继续)还是异步的       BatchMode(在我们重新得到控制权之前是否完成后端的多个 SQL 语句?)       Comment       ConnectString       ConnectTimeout       DataSource       DispLogin(何时需要显示一个注册对话框?)       DispWarnings(是否显示不可俘获错误)       IdleTimeout       PassWord       QueryTimeout       Transactions(自动或人工)       UserID       WaitTime 所有这些都是可读/写属性。 SQL pass-through 函数 SQL pass-through (SPT) 类似于低级文件函数:它使您可以直接访问开放数据库连接 (ODBC) 提供的功能和您的后端数据。SPT 需要您编写代码来打开连接、传递命令、检查错误等等。这些操作通过一组以“SQL”三个字母开头的函数来处理。 要建立连接,使用 SQLCONNETC() 或 SQLSTRINGCONNETC() 函数,它们均返回一个连接句柄,这个句柄是 Visual FoxPro 指定给该连接的编号。在后继 SPT 函数调用中都要使用这个句柄。这些函数只有可选参数,没有必须的参数。如果不带参数使用它们,函数自动调用“选择连接”或“数据源”对话框;如果传递参数,可以包括已定义的数据源名称、用户标识以及密码;或者是一个已存在的命名连接的名字。 SQLSETPROP() 和 SQLGETPROP() 允许您设置或查看特定 SPT 句柄的属性。它们的工作方式与连接属性一样,不同的是您不能设置 Comment,ConnatSrring,Data Source,Idle Timeat 和 UserID 属性。而且您还能查看(但不能设置)ODBChdbc 和 ODBChsmt,它们分别是 ODBC 内部的连接和语句句柄,外部库文件 (FLL) 需要使用它们直接调用 ODBC。 大量的 SPT 工作是用 SQLEXE() 函数完成的,它允许向后端传递一个可执行的 SQL 命令,它还具有一个可选的参数,指定一个可读写的临时表来存储结果集合。SQLMORERESULTS() 允许您在异步模式下检索更多的信息。 SQLTABLES() 函数检索远程数据源中表的名称并存入本地临时表中。SQLCOLS() 函数检索指定远程数据库表中列的名称与列的信息,然后把那些信息存储进本地临时表中。 如果一个 SPT 函数返回错误代号,它的值指示发生的错误是连接错误还是环境错误。SQLERROR() 用来返回有关错误的详细信息。SQLERROR() 将提供任何组件层次的信息。 正如您所看到的,SQL pass-through 函数提供了一种低级的访问后端数据的方法。当您需要精确地控制事情(比如,事务处理过程的批处理命令或者人工调用一个存储过程)时它们极为有用,但通常不需要它们。 视图 Visual FoxPro 同时支持本地及远程视图,并用这种方法提供无缝升迁的能力。在软件开发的最初阶段,您用本地数据模拟远程数据,当需要升迁时,只需要运行“升迁向导”(包含在 Visual FoxPro 专业版中),就可把您的本地视图复制到远程视图中并自动更改本地视图的名称。这时,您的应用程序原样运行,但访问的已经是远程数据了!让我们迅速浏览一下远程视图。 远程视图是用“视图设计器”创建的。本质上,它是由一个 SQL SELECT 语句构成的,并且通常是“参数化”的。也就是说由您在查询条件中使用一个内存变量作为参数,在查询真正运行时才根据这个内存变量的当前值确定查询结果的数据集。您可以指定在视图中访问哪些字段以及哪些字段可以修改。在缓冲的编辑模式下,一旦视图从后端取得数据,它就被当作一个 Visual FoxPro 表来对待,您可以象对本地表那样对它使用 Visual FoxPro 命令。当您告知 Visual FoxPro 用修改后的数据更新表时,它实际上是用 SQL UPDATE 命令或者一系列匹配的 SQL DELETE 和 SQL INSERT 命令来完成更改 — 使用哪种方式取决于您。 举一个简单的例子,您可以创建两个视图:一个对客户(SELECT * FROM Customer WHERE Customer.CustID = ?mCusID),一个对定单(SELECT * FROM Order WHERE Orders.CustID = ?mCustID)。把这两个视图加入到表单的数据环境中,然后建立一个文本框,要求用户键入客户标识。一旦输入客户标识之后您的程序就可以执行下列命令: =REQUERY("CustView") =REQUERY("OrderView") thisform.Refresh 当把视图绑定到表单上时,您可以设置一个属性使得 Visual FoxPro 在打开这些视图时使用 NODATA 子句。这样可以建立连接但不会有数据通过管道传输下来,只有当运行 REQAUEY 命令时,数据才从服务器下载到客户端,从而获得大的吞吐量。注意这些命令对本地或远程视图都起作用。 FoxPro 还能用易用但完备的方式处理事务。您可以把事务过程设置为自动(默认值)或是人工。在自动模式中,Visual FoxPro 与 Microsoft Access 的工作方式类似:它把每一个后端更新包装在一个事务中。在人工模式中,您可以开始一个事务,然后发送多个更新,直到您的程序结束该事务或执行回滚为止。使用哪种方式取决于您,而且象 Visual FoxPro 的其他功能一样处理事务在本地或远程数据上没有区别。 视图和 SQL pass-through 结合使用 很多情况下您可能希望把 Visual FoxPro 的远程视图和 SQL pass-through 结合起来。例如,您可能希望开始一个远程事务,发 TABLEUPDATE() 命令向远程服务器传递信息,然后结束事务或回滚它。Visual FoxPro 通过三个函数处理的:SQLSETPROP()、SQLCOMM1T() 以及 SQLROULLBACK() 处理人工事务。       SQLSETPROP() 允许您设置后端连接的各种属性。Transactions 属性默认值为 1(自动事务)但也可设置为 2(人工事务)。如果 Transactions 属性设置为人工,那么后端任何数据更改时都要启动一个事务。       SQLCOMMIT() 执行任何等待的事务。       SQLROLLBACK() 回滚任何等待的事务。 除了这些函数,CURSORGETPROP() 可以用来得到远程视图正在使用的连接句柄。下面的示例代码段显示了所有这些函数的用法: #INCLUDE FOXPRO.H   USE Remote_View =CURSORSETPROP("BUFFERING",DB_BUFOPTTABLE)   && Set buffering *-- Do edits to the remote view   lnConnHandle = CURSORGETPROP("ConnectHandle") =SQLSETPROP(lnConnHandle,"Transactions",2)   && Manual transaction IF TABLEUPDATE(.T.)    =SQLUPDATE(lnConnHandle) ELSE    =SQLROLLBACK(lnConnHandle) ENDIF 这个示例使用一个远程视图,得到连接句柄然后根据用户对信息的编辑是否违反后端的安全性来确定是结束事务还是回滚。 一个示例表单 我们看一下如何创建两个远程视图以及一个显示视图信息的表单,其中一个视图允许更新。在这个示例中,我们连接到 Microsoft SQL Server 4.2 提供的PUBS 示例数据上,然后在名为 Pub-info 的数据库中创建一个称为 PUBS_SQL_Server 的 Visual FoxPro 连接。把该数据库放在名为 VFP_CS 的项目中并创建两个参数化视图。 Author_info SELECT Authors.Au_id, Authors.Au_lname,  ;    Authors.Au_fname, Authors.Au_phone ; FROM Authors ; WHERE Authors.Au_ID = ?cAuthors_ID Author_titles SELECT  titles.title, titles.price, ;    titles.ytd_sales, titleauthor.royaltyper, ;    titles.notes ; FROM Titleauthor, Titles ; WHERE Titleauthor.title_id = Titles.title_id AND Titleauthor.au_id = ?cAuthors_ID 注意两个视图在此刻都不能更新 — 我们稍后将讨论如何使其中一个视图可更新。 创建表单 进入项目,然后人工创建一个新表单,而不要使用“表单向导”。 单击“文本框”按钮然后把一个文本框拖到表单上。把它的 Name 属性设置为 txtInput。现在,把 au-fname、au-lname 与 au-phone 字段从“项目管理器”拖放到表单中。把它们的 Name 属性分别设置为 txtAu-fname、txtAu-Lname 和 txtAu-phone。最后,把 author-titles 视图拖到表单上,Visual FoxPro 将把它表示为
      

  9.   

    呵呵,捧场!
    今天一天都没有上网,现在才看到短消息。
    VFP我没有接触过,应该狼兄和流星尔是专家!